neo4j 两个点创建关系_Neo4j:找到两个纬度/经度之间的中间点
生活随笔
收集整理的這篇文章主要介紹了
neo4j 两个点创建关系_Neo4j:找到两个纬度/经度之间的中间点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
neo4j 兩個點創建關系
昨天我寫了一篇博客文章,展示了如何使用Cypher查找兩個緯度/經度之間的中點,這是第一次嘗試填補缺失位置時的效果,但是我意識到我可以做得更好。
正如我在上一篇文章中提到的,當我找到一個缺少經緯度坐標的停靠點時,通常可以在附近找到兩個停靠點,以便對該停靠點的位置進行三角剖分。
我也有火車路線,該路線指示從一個停靠點到另一個停靠點所花費的秒數,這使我可以指示出無位置停靠點是否比另一個停靠點更靠近一個停靠點。
例如,考慮在b沒有位置的位置停靠a,b和c。 如果我們在站點之間有以下距離:
(a)-[:NEXT {time: 60}]->(b)-[:NEXT {time: 240}]->(c)它告訴我們,點“ b”實際上是從“ a”到“ c”的距離的0.2,而不是中點。
有一個公式可以用來說明這一點:
a = sin((1?f)?δ) / sin δ b = sin(f?δ) / sin δ x = a ? cos φ1 ? cos λ1 + b ? cos φ2 ? cos λ2 y = a ? cos φ1 ? sin λ1 + b ? cos φ2 ? sin λ2 z = a ? sin φ1 + b ? sin φ2 φi = atan2(z, √x2 + y2) λi = atan2(y, x)δ is the angular distance d/R between the two points. φ = latitude λ = longitude翻譯成Cypher(帶有強制性的希臘符號)后,它看起來像這樣,以找到從一個點到另一個點的方式的點0.2
with {latitude: 51.4931963543, longitude: -0.0475185810} AS p1, {latitude: 51.47908, longitude: -0.05393950 } AS p2WITH p1, p2, distance(point(p1), point(p2)) / 6371000 AS δ, 0.2 AS f WITH p1, p2, δ, sin((1-f) * δ) / sin(δ) AS a,sin(f * δ) / sin(δ) AS b WITH radians(p1.latitude) AS φ1, radians(p1.longitude) AS λ1,radians(p2.latitude) AS φ2, radians(p2.longitude) AS λ2,a, b WITH a * cos(φ1) * cos(λ1) + b * cos(φ2) * cos(λ2) AS x,a * cos(φ1) * sin(λ1) + b * cos(φ2) * sin(λ2) AS y,a * sin(φ1) + b * sin(φ2) AS z RETURN degrees(atan2(z, sqrt(x^2 + y^2))) AS φi,degrees(atan2(y,x)) AS λi╒═════════════════╤════════════════════╕ │φi │λi │ ╞═════════════════╪════════════════════╡ │51.49037311149128│-0.04880308288561931│ └─────────────────┴────────────────────┘一個快速的健全性檢查,插入0.5而不是0.2可以找到我能夠根據昨天的帖子進行健全性檢查的中點:
╒═════════════════╤═════════════════════╕ │φi │λi │ ╞═════════════════╪═════════════════════╡ │51.48613822097523│-0.050729537454086385│ └─────────────────┴─────────────────────┘目前為止就這樣了!
翻譯自: https://www.javacodegeeks.com/2016/11/neo4j-find-intermediate-point-two-latlongs.html
neo4j 兩個點創建關系
總結
以上是生活随笔為你收集整理的neo4j 两个点创建关系_Neo4j:找到两个纬度/经度之间的中间点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑共享网络打印机怎么连接起来使用如何把
- 下一篇: apache.camel_Apache