是什么原因以及如何解决此异常:
org.neo4j.graphdb.NotFoundException: More than one relationship[RTREE_CHILD, INCOMING] found for NodeImpl#105
at org.neo4j.kernel.impl.core.NodeImpl.getSingleRelationship(NodeImpl.java:344)
at org.neo4j.kernel.impl.core.NodeProxy.getSingleRelationship(NodeProxy.java:191)
at org.neo4j.collections.rtree.RTreeIndex.getIndexNodeParent(RTreeIndex.java:768)
at org.neo4j.collections.rtree.RTreeIndex.adjustPathBoundingBox(RTreeIndex.java:672)
at org.neo4j.collections.rtree.RTreeIndex.add(RTreeIndex.java:90)
at org.neo4j.gis.spatial.EditableLayerImpl.add(EditableLayerImpl.java:44)
at org.neo4j.gis.spatial.ShapefileImporter.importFile(ShapefileImporter.java:209)
at org.neo4j.gis.spatial.ShapefileImporter.importFile(ShapefileImporter.java:122)
我正在使用来自已编译 github 项目的 2.0.0 和空间 jar。
当我尝试导入 Shapefile 时抛出异常(这是非托管扩展中的代码):
GraphDatabaseService spatialDb = new GraphDatabaseFactory().newEmbeddedDatabase("/home/db/data/spatial.db");
Transaction tx = spatialDb.beginTx();
try {
ShapefileImporter importer = new ShapefileImporter(spatialDb, new NullListener());
importer.importFile("/home/bla/realshp/users_location.shp", "users_location");
tx.success();
} catch (Exception e) {
e.printStackTrace();
} finally {
tx.close();
return Response.status(200).entity("Done. ").build();
}
形状文件是使用 ogr2ogr 从 CSV 文件生成的 - 它看起来是合法的,并且可以毫无例外地读取。在原始文件中,大约有 30000 个点定义如下(ogr2ogr 将提取经度和纬度):
id,longitude,latitude,gender,updated
3,-122.1171925,37.4343361,1,2013-11-20 05:03:22
304,-122.0919000,37.3094000,1,2013-11-03 00:42:01
311,-122.0919000,37.3094000,1,2013-11-03 00:42:01
如何绕过它?我需要将数百万个点加载到数据库中。附带问题:现在我创建了新的图形空间数据存储 - 是否正确?也许我应该将它加载到现有的图形数据库中?
更新:
我尝试使用 TestSimplePointLayer 中的方法“手动”输入坐标。我在第 450 个坐标附近遇到了同样的异常。其中一些与您在示例中看到的相同,但它们是有效点。如何绕过它?