我是neo4j和neo4j空间的新手。我想导入一个从https://www.openstreetmap.org/export导出的OSM文件。为此,我使用以下代码。我找到的所有例子都不适用于我或不完整。所以我试着得到一个编译的版本:
try {
OSMImporter importer = new OSMImporter("osmGauKlein");
Map<String, String> config = new HashMap<String, String>();
config.put("neostore.nodestore.db.mapped_memory", "90M" );
config.put("dump_configuration", "true");
config.put("use_memory_mapped_buffers", "true");
BatchInserter batchInserter = BatchInserters.inserter(dbf, config);
importer.importFile(batchInserter, "osm/map.osm", false);
batchInserter.shutdown();
GraphDatabaseService dbs = dbFactory.newEmbeddedDatabase(dbf);
importer.reIndex(dbs, 10000);
dbs.shutdown();
} catch (IOException | XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
执行此操作后,我可以在neo4j浏览器中看到节点。但导入后,一些空间程序不再起作用。例如:
call spatial.layers
它只返回此错误:
Failed to invoke procedure `spatial.layers`: Caused by: java.lang.NoClassDefFoundError: org/geotools/filter/text/cql2/CQLException
其他一些程序仍在使用
call spatial.layerTypes
这是什么问题? 当尝试使用cyper i直接导入OSM时:
call spatial.importOSM("C:/Users/Steffen/workspaceEclipse/NDBS Neo4J/osm/map.osm")
但这会导致其他错误
Failed to invoke procedure `spatial.importOSM`: Caused by: java.util.NoSuchElementException: More than one element in org.neo4j.kernel.impl.coreapi.LegacyIndexProxy$1@7ce40edf. First element is 'Node[50]' and the second element is 'Node[1206]'
一些信息: Windows 10 64位, neo4j 3.2.1, Neo4j的空间-0.24的Neo4j-3.1.1-服务器插件