zoukankan      html  css  js  c++  java
  • 图数据库实践系列 (三)Neo4j Spatial的REST集成

    图数据库实践系列 (三)--Neo4j Spatial的REST集成 - 林场 - 博客园

    图数据库实践系列 (三)--Neo4j Spatial的REST集成

    上讲回顾:主要讲述Neo4j Spatial项目以及空间数据(矢量)的存储。本文主要介绍Neo4j Spatial与Neo4j Server的集成,以及与GeoServer 的集成。

    Noted:与Geoserver的集成方法可行,但是geoserver无法显示发布数据库内的图层。(系统环境:Ubuntu 12.04,Spatial 0.9,Neo4j 1.8M6,Geoserver 2.1.1)

    1.Neo4j Server安装与配置

    1.1Neo4j Server 安装

    Neo4j可以安装成数据库服务器,能够已应用或者系统服务两种形式运行在操作系统中。它内置了jetty 和REST接口,来实现使用浏览器对数据库操作[17,18]。

    1. 在neo4j官网http://neo4j.org/download下载你喜欢的版本(需要选择你的操作系统)
    2. 解压到特定位置,解压路径表述为$NEO4J_HOME(如/home/dev/neo4j/)
    3. 启动脚本在$NEO4J_HOME/bin 文件夹下,在Linux/MacOS下,运行 $NEO4J_HOME/bin/neo4j start 在Window 只要双击%NEO4J_HOME%\bin\Neo4j.bat文件即可

    我们也可以按照第一讲所述,进入源码安装的Neo4j的的bin文件夹($NEO4J_HOME/bin)命令启动,

    cd $NEO4J_HOME/bin/
    $NEO4J_HOME/bin/neo4j start

    我们只需要访问 http://localhost:7474/webadmin/  会出现Neo4j 的web 管理界面,如图1所示:

    图1 Neo4j Server管理界面

    在Web 管理界面,我们可以查看数据库的节点,属性,关系信息。还可以通过Http ,Shell 和Germlin三种方式来对图数据库做CRUD。如果需要将Neo4j Server 以系统服务的方式运行,可以查阅参考文献[17]

    1.2Neo4j Server 配置参数

    如果我们需要对服务器的后端数据库性能调优等,可以通过Server的配置文件来了解图数据库的具体参数。这些重要的参数都存储在$NEO4J_HOME/conf/neo4j-server.properties文件内,包括服务器数据库在磁盘上的路径:

    org.neo4j.server.database.location=data/graph.db

    http 服务器接口:

    org.neo4j.server.database.location=data/graph.db

    设置REST数据接口所能够操纵的数据库的相对路径

    org.neo4j.server.webadmin.data.uri=/db/data/

    等。至于Neo4j的性能参数和日志参数分别参看$NEO4J_HOME/conf/neo4j.properties,$NEO4J_HOME/conf/logging.properties两个文件

    2.Neo4j Server与Spatial集成

    2.1 Neo4j  Server的Spatail插件安装

      上讲我们通过利用源码安装了neo4j spatial ,在/target目录下会有一个neo4j-spatial-0.9-SNAPSHOT-server-plugin.zip文件。如果没有,可以运行以下命令来获得该文件:

    git clone https://github.com/neo4j/spatial.git
    cd ./spatial
    mvn clean package -DskipTests

    将该文件解压到,复制所有的jar包到neo4j 的lib文件夹内,然后重启neo4j server即可。

    2.2 Neo4j  Server的空间操作

      利用curl[20]工具能够在命令行中对Neo4j实现空间数据读写,包括查询,图层创建,点创建等。这些都是以JSON格式以http协议对图数据库的操作。

    curl http://localhost:7474/db/data/

    会返回数据库的整体信息,如图2所示:

     

    图2 查询图数据库

    我们可以看到返回的JSON数据中有"SpatialPlugin"对象,它的属性包括addEditableLayer,getLayer,addNodeToLayer等。我们通过curl命令来创建名字为'test'等简单点图层。

    curl -d "layer=test" http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer

    如图3所示:

     图3 添加点图层

    可以从图中看到数据队形的属性,包括图层的类,图层名称,几何编码类型,创建时间。然后添加三个Well-Konw text 格式的点

    # Creating three points from Well-known text format
    curl -v http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addGeometryWKTToLayer -H "Content-Type: application/json" -d '{"geometry":"POINT(10 10)", "layer":"test"}'
    curl -v http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addGeometryWKTToLayer -H "Content-Type: application/json" -d '{"geometry":"POINT(10 11)", "layer":"test"}'
    curl -v http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addGeometryWKTToLayer -H "Content-Type: application/json" -d '{"geometry":"POINT(9 10)", "layer":"test"}'

    然后执行一个范围查询

    curl -v http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/findGeometriesInBBox -H "Content-Type: application/json" -d '{"minx":9.0,"maxx":11.0,"miny":9.0,"maxy":12.0,"layer":"test"}'

    返回在边界内的点为两个,如图4所示:

     图4 范围查询

      3.与GeoServer集成

           GeoServer是一款基于java的开源的地图服务器,支持包括shapefile,postgis等多种数据源。neo4j spatial能够以插件的形式与GeoServer集成。集成方法如下:

    1.  解压neo4j-spatial-0.9-SNAPSHOT-server-plugin.zip,将里面除了gt-*_8.0的jar包 拷进geoserver/WEB-INF/lib 文件夹
    2. 复制neo4j/lib 里面所有jar 进入geoserver/WEB-INF/lib 文件夹
    3. 重启geoserver

          通过访问GeoServer地址http://localhost:8080/geoserver/web/,我们可以看到如图-5所示,neo4j可以作为geoserver的后端,提供地图服务。

    图5 neo4j与geoserver集成

    但是geoserver无法显示,发布数据库内的图层。(系统环境:Ubuntu 12.04,Spatial 0.9,Neo4j 1.8M6,Geoserver 2.1.1)

    据说是geoserver的一个bug,会在不久后修复。https://github.com/neo4j/spatial/issues/57

    下一讲会主要讲述一个基于HBase的图数据库Titan。

    参考文献

    [17]Server Installation http://docs.neo4j.org/chunked/stable/server-installation.html

    [18]Jetty http://jetty.codehaus.org/jetty/

    [19]Server Configuration http://docs.neo4j.org/chunked/stable/server-configuration.html

    [20]cURL http://curl.haxx.se/

    [21]Well-known text  http://en.wikipedia.org/wiki/Well-known_text

  • 相关阅读:
    素数路径Prime Path POJ3126 素数,BFS
    Fliptile POJ3279 DFS
    Find the Multiple POJ1426
    洗牌Shuffle'm Up POJ3087 模拟
    棋盘问题 POJ1321 DFS
    抓住那只牛!Catch That Cow POJ3278 BFS
    Dungeon Master POJ2251 三维BFS
    Splitting into digits CodeForce#1104A
    Ubuntu下手动安装Nvidia显卡驱动
    最大连续子序列和
  • 原文地址:https://www.cnblogs.com/lexus/p/2922433.html
Copyright © 2011-2022 走看看