目前我正在使用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无论如何都会创建和使用它们。
答案 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。我不相信一方面对另一方的整体速度有所改善。