如何使用OSM和Neo4jSpatial运行Neo4j?

时间:2015-07-20 17:50:52

标签: openstreetmap neo4j-spatial

您好我是neo4j的新手,我想使用OSM + Neo4j Spatial。 我有一个maven项目,我的Neo4j版本是2.3.0-M01

我有一个简单的代码,仅用于导入OSM文件,但它在导入文件中显示一些错误:GraphDatabaseService,EmbeddedGraphDatabase和BatchInserter。

package testOSM;

import java.nio.charset.Charset;
import org.neo4j.gis.spatial.osm.OSMImporter;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.kernel.EmbeddedGraphDatabase;
import org.neo4j.kernel.impl.batchinsert.BatchInserter;

public class TestOsm {

    private static final String DB_PATH = "/community/data/graph.db";

    public static void main(final String[] args){

        OSMImporter importer = new OSMImporter("clz_map.osm");
        importer.setCharset(Charset.forName("UTF-8"));
        BatchInserter batchInserter = BatchInserter.inserter(DB_PATH);

        try{
            importer.importFile(batchInserter, "clz_map.osm", false);
            GraphDatabaseService db = new EmbeddedGraphDatabase(DB_PATH);
            importer.reIndex(db);
            db.shutdown();
            }

        catch(Exception e){
            System.out.println(e.getMessage());
            }

        batchInserter.shutdown();    
    }  
}

可能是我的问题在于版本,因为我使用的是Neo4j 2.3-M01,但我并不确切知道如何设置版本,例如这里

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-graph-collections</artifactId>
    <version>0.7.1-neo4j-2.0.2-SNAPSHOT</version>
    <type>jar</type>
</dependency>

我的pom.xml基于https://github.com/neo4j-contrib/spatial/blob/master/pom.xml

加:

 <repository>
    <id>neo4j</id>
    <url>http://m2.neo4j.org/content/repositories/releases/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
  </repository>
<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j</artifactId>
    <version>2.3.0-M01</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-kernel</artifactId>
    <version>2.3.0-M01</version>
 </dependency>

您可以查看我的git存储库 https://github.com/amhg/OSM

提前谢谢!

3 个答案:

答案 0 :(得分:1)

自上次发布的版本以来有API更改。看看https://github.com/neo4j-contrib/spatial/blob/master/pom.xml#L4,如果您自己构建该项目,似乎可以使用Neo4j 2.2.3

mvn install

然后将空间插件的0.15-neo4j-2.2.3版本包含在本地mvn repo的pom.xml中。

答案 1 :(得分:1)

我看了一下你的pom.xml,看起来你从Neo4j Spatial复制了pom.xml。这不是你想要的。

由于您正在尝试编写一个使用Neo4j Spatial的应用程序,您应该有一个新的pom并将neo4j-spatial称为依赖项,而不是以任何方式使用的pom类似于neo4j-spatial pom。 README中有一节描述了如何将neo4j-spatial作为依赖项添加到您自己的pom中。

所以我建议你做以下事情:

答案 2 :(得分:1)

对于遇到此问题的其他人,请按以下步骤操作:https://github.com/maxdemarzi/OSM

请注意2.2.x和2.3之间的微小差异(目前在M2上为7/30)。 只需要正确的依赖关系。