neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点
neo4j導(dǎo)入兩個(gè)文件
在過去的兩個(gè)周末中,我一直在處理一些運(yùn)輸數(shù)據(jù),并且我想運(yùn)行A *算法來查找兩個(gè)車站之間的最快路線。
A *算法將EstimateEvaluator作為其參數(shù)之一,并且該評估器查看節(jié)點(diǎn)的經(jīng)度/緯度,以確定一條路徑是否值得遵循。 因此,我需要為每個(gè)測站添加緯度/經(jīng)度,并且發(fā)現(xiàn)很難為數(shù)據(jù)集中的所有點(diǎn)找到該定位日期。
幸運(yùn)的是,我傾向于在站點(diǎn)的任一側(cè)有兩個(gè)點(diǎn)的經(jīng)緯度,因此我可以算出中點(diǎn)作為丟失點(diǎn)的近似值。
我找到了一篇文章,該文章定義了可以用來執(zhí)行此操作的公式 ,并且有一個(gè)StackOverflow帖子 ,其中包含一些實(shí)現(xiàn)該公式的Java代碼。
我想找到薩里碼頭(Surrey Quays)站(51.4931963543,-0.0475185810)和火車線上更南的點(diǎn)(51.47908,-0.05393950)之間的中點(diǎn)。 我編寫了以下Cypher查詢來計(jì)算這一點(diǎn):
WITH 51.4931963543 AS lat1, -0.0475185810 AS lon1, 51.47908 AS lat2 , -0.05393950 AS lon2WITH radians(lat1) AS rlat1, radians(lon1) AS rlon1, radians(lat2) AS rlat2, radians(lon2) AS rlon2, radians(lon2 - lon1) AS dLonWITH rlat1, rlon1, rlat2, rlon2, cos(rlat2) * cos(dLon) AS Bx, cos(rlat2) * sin(dLon) AS ByWITH atan2(sin(rlat1) + sin(rlat2), sqrt( (cos(rlat1) + Bx) * (cos(rlat1) + Bx) + By * By )) AS lat3,rlon1 + atan2(By, cos(rlat1) + Bx) AS lon3RETURN degrees(lat3) AS midLat, degrees(lon3) AS midLon╒═════════════════╤═════════════════════╕ │midLat │midLon │ ╞═════════════════╪═════════════════════╡ │51.48613822097523│-0.050729537454086385│ └─────────────────┴─────────────────────┘右側(cè)的Google Maps屏幕截圖顯示了頂部和底部的初始點(diǎn)以及中間的中間點(diǎn)。 這并不完美; 理想情況下,我希望中點(diǎn)在軌道上,但對于算法而言,我認(rèn)為這已經(jīng)足夠了。
現(xiàn)在,我需要填寫無位置站的經(jīng)緯度!
翻譯自: https://www.javacodegeeks.com/2016/11/neo4j-find-midpoint-two-latlongs.html
neo4j導(dǎo)入兩個(gè)文件
總結(jié)
以上是生活随笔為你收集整理的neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑键盘怎么打出豆号(电脑键盘怎么打出来
- 下一篇: Win7系统0x00000006蓝屏怎么