我可以计算具有经度和纬度的节点之间的距离吗?

Can I calculate the distance between nodes that have longitude and latitude?

提问人:NoLANman 提问时间:11/8/2023 最后编辑:NoLANman 更新时间:11/9/2023 访问量:35

问:

我将扩展我拥有的首府城市数据集,其中包含每个城市的经度和纬度。之后,我想计算城市之间的距离(以公里为单位),或计算总距离。您可以在米其林大街或谷歌地图中执行类似操作。

我是否需要添加每个城市之间的距离关系(就像我在 https://playground.memgraph.com/sandbox/europe-roads 中发现的那样),或者我可以使用坐标来计算一个城市与另一个城市之间的距离?

我正在寻找相当于

MATCH p = (:City {name: "Zagreb"})
 -[:Road * wShortest (e, v | e.length) total_weight]->
 (:City {name: "Paris"})
RETURN nodes(p) AS cities, total_weight;

但是当我没有权重,但我有坐标时。

图数据库 memgraphdb opencypher memgraph

评论

0赞 Abhijit Sarkar 11/8/2023
"我可以计算具有经度和纬度的节点之间的距离吗?是的, 你可以的。不过,这不是欧几里得距离,并且有现有的库可以做到这一点。
0赞 NoLANman 11/8/2023
我想如果不是欧几里得距离就更好了.欧克里德距离是一条直线,我认为如果算法考虑曲率,它可能会更好,在实际传播距离方面更精确。还是我的前提错了?

答:

1赞 cybersam 11/9/2023 #1

Memgraph 有一个distance_calculator算法,可以计算“两个地理位置之间的距离”。该算法具有计算 or 距离的过程。singlemultiple

然而,Memgraph 似乎没有提供一种在最短路径计算中直接使用该算法的方法。

但解决方法是使用该算法来计算和存储每个关系的端点之间的几何距离(作为关系属性),然后使用 Memgraph 的加权最短路径算法来计算任意 2 个城市之间的最短路径distance_calculatorRoad