我的csv文件包含纬度/经度字段,我想要的是将此纬度/经度转换为 geohash ,然后在不同位置之间建立关系基于geohash值的节点 怎么做?
答案 0 :(得分:1)
Neo4j有spatial plugin,可为您的地理数据创建一个R-Tree。因此,您可以直接使用此插件,而不是创建geohash。
此外,Neo4j的最新版本为属性引入了一些新类型,其中之一是point
。请查看文档:{{3}}
只需创建一个geohash layer
:
CALL spatial.addPointLayerGeohash('my_geohash_layer_name')
然后将您的节点添加到图层:
CREATE (n:Node {latitude:60.1,longitude:15.2}) WITH n
CALL spatial.addNode('my_geohash_layer_name',n) YIELD node
RETURN node
您的节点必须有latitude
& longitude
属性。
答案 1 :(得分:1)
如果您只使用Point数据(纬度和经度),则根本不需要使用空间插件,并且可以使用Neo4j 3.4的内置空间功能。内置索引是一个希尔伯特空间填充曲线,它与geohash类似,因此我认为它将满足您的需求。有关如何使用新功能的信息,您可以查看文档或最近的一些博客:
如果您特别想要使用Neo4j Spatial库并且只需要geohash而不是相关的更好的hilbert曲线,那么您可以使用CALL spatial.addPointLayerGeohash('geom')
之类的过程,然后使用{{1}之类的命令添加数据}}