Neo4j:使用 distance() 函数确定房屋之间的距离
Neo4j: using distance() function to determine distance between houses
我正在处理来自 csv 文件的数据,该文件包含三列数据:house
、houseLong
、houseLat
,其中 house
是房子,houseLong
是房子所在位置的经度,houseLat
是房子所在位置的纬度。
示例数据如下:
第 1 行 1, 22.6932, 100.5347
第 2 行 2, 25.6589, 98.5679
第 3 行 3, 33.1674, 66.3287
一直到最后一行
第 100 行100, 37.6532, 95.3567
我已将所有这些数据导入 Neo4j - 节点标记为 House
。
对于每栋房子,我都试图计算出它与其他房子之间的距离。
所以对于 1 号房子,我正在尝试获取从 1 号房到 2 号房、1 号房到 3 号房的距离,依此类推,直到 100 号房。
对于 2 号房屋,我正在尝试获取从 2 号房屋到 1 号房屋、2 号房屋到 3 号房屋的距离,依此类推,直到 100 号房屋。
我不确定实现此查询的最佳方式。现在我能做的就是:
MATCH (h1: House {house: 1}), (h2: House {house: 2})
WITH point({longitude: h1.houseLong, latitude: h1.houseLat}) AS point1, point({longitude: h2.houseLong, latitude: h2.houseLat}) AS point2
RETURN round(distance(point1, point2)) AS Distance
上面的查询给出了房屋 1 和房屋 2 之间的距离,但我不确定如何为查询中的每个房屋缩放此距离。
这应该为您提供距离,按 house
值排序:
MATCH (h1: House), (h2: House)
WHERE h1 <> h2
RETURN
h1, h2,
round(distance(
point({longitude: h1.houseLong, latitude: h1.houseLat}),
point({longitude: h2.houseLong, latitude: h2.houseLat}))) AS dist
ORDER BY h1.house, h2.house
注意:每对房屋将出现两次(倒序),这显然是您想要的。
我正在处理来自 csv 文件的数据,该文件包含三列数据:house
、houseLong
、houseLat
,其中 house
是房子,houseLong
是房子所在位置的经度,houseLat
是房子所在位置的纬度。
示例数据如下:
第 1 行 1, 22.6932, 100.5347
第 2 行 2, 25.6589, 98.5679
第 3 行 3, 33.1674, 66.3287
一直到最后一行
第 100 行100, 37.6532, 95.3567
我已将所有这些数据导入 Neo4j - 节点标记为 House
。
对于每栋房子,我都试图计算出它与其他房子之间的距离。
所以对于 1 号房子,我正在尝试获取从 1 号房到 2 号房、1 号房到 3 号房的距离,依此类推,直到 100 号房。
对于 2 号房屋,我正在尝试获取从 2 号房屋到 1 号房屋、2 号房屋到 3 号房屋的距离,依此类推,直到 100 号房屋。
我不确定实现此查询的最佳方式。现在我能做的就是:
MATCH (h1: House {house: 1}), (h2: House {house: 2})
WITH point({longitude: h1.houseLong, latitude: h1.houseLat}) AS point1, point({longitude: h2.houseLong, latitude: h2.houseLat}) AS point2
RETURN round(distance(point1, point2)) AS Distance
上面的查询给出了房屋 1 和房屋 2 之间的距离,但我不确定如何为查询中的每个房屋缩放此距离。
这应该为您提供距离,按 house
值排序:
MATCH (h1: House), (h2: House)
WHERE h1 <> h2
RETURN
h1, h2,
round(distance(
point({longitude: h1.houseLong, latitude: h1.houseLat}),
point({longitude: h2.houseLong, latitude: h2.houseLat}))) AS dist
ORDER BY h1.house, h2.house
注意:每对房屋将出现两次(倒序),这显然是您想要的。