在Neo4J中批量插入shapefile

时间:2014-07-23 18:56:43

标签: java neo4j neo4j-spatial

目前我正在使用Neo4j + Neo4j Spatial我想问你是否有办法将shapefile批量导入数据库,就像他们使用OSM文件一样,原因是我正在处理一个巨大的数据集(100GB +)和图层+索引在插入数十万个几何图形时肯定会减慢我的速度,同时使用标准ShapeFileImporter

我的问题是:有没有办法批量导入shapefile,插入后,我们以与.osm文件相同的方式执行database.reIndex()

我使用neo4j 2.1.2和neo4j-spatial 0.13

ps。:我还尝试使用以下内容设置GraphDatabaseService:

.setConfig(GraphDatabaseSettings.node_auto_indexing, "false")
.setConfig(GraphDatabaseSettings.relationship_auto_indexing,"false")

但似乎ShapeFileImporter无论如何都会创建和使用它们。

1 个答案:

答案 0 :(得分:0)

如果您使用的是您提到的Neo4j和Neo4j-Spatial版本,则ShapeFileImporter类不会创建任何索引(不在Neo4j意义上)。对于.shp文件中的每个形状,它将提取与其关联的所有属性(不仅仅是几何),创建节点,并将其添加到图层的RTree。所有这些的源代码可在

找到

ShapeFileImporter.java
EditableLayerImpl.java
DefaultLayer.java
RTreeIndex.java

在阅读代码时可能会让人感到困惑,但名为index的成员在Neo4j意义上是而不是索引,它是由Java代码包装的RTree图。

OSM导入器执行相同的工作(以及更多),只是略有不同。据我所知,进口商都没有创建遗留索引。 OSM导入器创建所有节点(数据和几何分别与关系),然后从每个几何节点构建RTree。 SHP导入器更简单。它创建了组合数据和几何的节点,并在创建时将每个节点添加到RTree。我不相信一方面对另一方的整体速度有所改善。