简介
Neo4j Spatial 是 Neo4j 的一个实用程序库,用于促进对数据执行空间操作。特别是,您可以为已定位的数据添加空间索引,并对数据执行空间操作,例如搜索指定区域内或距兴趣点指定距离内的数据。此外,还提供了类将数据公开给 GeoTools,从而公开给支持 GeoTools 的应用程序(如 GeoServer 和 uDig)。

主要功能包括
-
用于从 ESRI Shapefile 以及 OpenStreetMap 文件导入的实用程序
-
支持所有常见几何类型:点、线字符串、多边形等。
-
用于对几何图形进行快速搜索的 RTree 索引
-
支持搜索期间的拓扑操作(包含、位于、相交、覆盖、不相交等)。
-
能够对任何数据图启用空间操作,无论空间数据存储方式如何,只要提供适配器将图映射到几何图形即可。
-
能够将单个图层或数据集拆分为多个子图层或视图,并使用预配置的过滤器。
入门
使用 neo4j-spatial 入门最简单的方法是从 最新版本 中获取 server-plugin-*.jar
,将其复制到您的 $NEO4J_HOME/plugins
并重新启动 Neo4j 服务器。
从那里,您可以在 Cypher 查询中使用所有 空间过程 将节点添加到空间索引并执行许多空间点、距离和交集查询。
简单示例
CALL spatial.addPointLayer('geom');
CALL spatial.layers();
CREATE (n:Node {latitude:60.1,longitude:15.2})
WITH n
CALL spatial.addNode('geom',n) YIELD node
RETURN node;
CALL spatial.bbox('geom',{lon:15.0,lat:60.0}, {lon:15.3, lat:61.0});
有关如何使用其中一个 neo4j 驱动程序使用它们的良好示例博文是 William Lyon 的立法图中的空间过程 (第 1 部分)。
Max de Marzi 在其 关于餐厅推荐的两部分博文 中解释了空间服务器插件。
Neo4j Spatial 的一般介绍以及有关如何使用 Spatial Java API 的简单示例可以在 这篇博文 中找到,该博文由 Craig Taverner 撰写。