在 uDig 中使用 Neo4j Spatial
Neo4j Spatial 支持 Geotools,因此也支持基于 Geotools 的平台,如 GeoServer 和 uDig。有关在 GeoServer 中设置和运行 Neo4j Spatial 的信息,请参阅[geoserver]一节。
uDig SDK
在此,我们将讨论如何设置一个开发环境,以便为使用 Neo4j Spatial 的 uDig 开发代码。例如,如果您想构建一个使用 Neo4j 作为数据模型的 uDig 插件,或者如果您对 Neo4j Spatial 有自定义扩展,并希望在 uDig 中可视化数据。
设置 uDig SDK
请遵循 uDig wiki 上的 uDig SDK 快速入门说明:http://udig.refractions.net/confluence/display/DEV/1+SDK+Quickstart。最好详细遵循这些说明,因为所有步骤都有解释并给出了替代方案。然而,对于那些不耐烦和冒失的人,我们在此提供简化说明:
-
从 http://www.eclipse.org/downloads 下载并安装适用于 RCP 和 EMF 的 Eclipse(应适用于 Eclipse 3.5.x 和 3.6.x)
-
从 http://udig.refractions.net/files/downloads/extras/ 安装额外的插件或 'dropins'
-
从 http://udig.refractions.net/files/downloads/jre/ 安装扩展的 JRE
-
从 http://download.eclipse.org/eclipse/downloads/ 安装 RCP delta pack
-
从 http://udig.refractions.net/files/downloads/branches/udig-1.2-SNAPSHOT-sdk.zip 安装 uDig SDK
-
确保您的 Eclipse 使用下载的 JRE,在其 dropins 文件夹中有 dropins,并且将 delta-pack 和 uDig SDK 解压到单独的位置。
-
在 Eclipse 中,设置 RCP 目标平台以包含 SDK 和 delta-pack 目录
-
切换到 RCP 视图,使用插件视图找到 net.refractions.udig 插件并将其作为源代码项目导入。
-
双击 'udig.product' 文件在编辑器视图中打开它,然后点击 'Launch and Eclipse Application'。您现在应该有一个从 IDE 启动的正在运行的 uDig。我们现在可以继续将 Neo4j Spatial 及其依赖项添加到项目中。关闭 uDig 并进入下一节。
添加 Neo4j Spatial
版本与依赖项
-
请注意,Neo4j Spatial 的 trunk 版本需要 uDig 1.2.1,该版本在撰写本文时尚未发布。然而,在 http://udig.refractions.net/files/downloads/branches 上有一个 SNAPSHOT 构建版本,日期为 9 月 10 日。如果您在该日期或更晚的日期找不到 SNAPSHOT SDK,则请在常规位置查找,或考虑根据说明 athttp://udig.refractions.net/confluence/display/ADMIN/02+Development+Environment 自行构建 SDK。
-
如果您希望使用 uDig 1.2.0 官方版本,则需要使用较旧版本的 Neo4j Spatial。特别是任何早于 10 月 1 日发生的 GeoTools 2.7 升级的版本。将 Neo4j Spatial 添加到 uDig
-
为 Eclipse 安装 Maven2 支持
-
转到 'Help→Install New Software',并使用 URL http://m2eclipse.sonatype.org/sites/m2e 添加 M2Eclipse 的新更新站点
-
选择并安装适用于 Eclipse 的 Maven 集成
-
使用以下命令获取 Neo4j Spatial 的源代码:git clone git://github.com/neo4j/neo4j-spatial.git
-
如果您需要使用 GeoTools 2.6 版本的 Neo4j Spatial
-
使用以下命令切换到 9 月底的版本:git checkout 04a0ae
-
如果您计划从这一点开始开发 Neo4j Spatial 代码,请考虑首先创建一个分支,方法是进入新创建的目录,键入 'git branch yourbranchname',然后键入 'git checkout yourbranchname'
-
使用以下命令编译和测试代码:mvn test
-
这应该会下载所有依赖项并运行一些测试用例以确保一切正常
-
使用以下命令获取 eu.udig.catalog.neo4j 的源代码:git clone git://gitorious.org/udig-community/neo4j.git eu.udig.catalog.neo4j
-
您也可以分支此项目
-
启动 Eclipse 并将这两个项目导入到工作区
-
使用 'File→Import→General→Existing Projects into Workspace'
-
浏览到您的 git 项目所在的位置,并选择并导入 neo4j-spatial 和 eu.udig.catalog.neo4j 项目
-
创建一个 libs 项目,用于封装一些依赖的 JAR 文件
-
使用 'New Project→Plug-in Development→Plug-in from existing JAR archives'
-
您需要添加的文件已在上面执行 neo4j-spatial 的 'mvn test' 期间由 maven 安装(在 Windows 上可能位于您的 User\Username\.m2\repository 文件夹中),但也可以单独下载
-
选择要添加到 libs 项目的 JAR 文件
-
neo4j-kernel-1.2-1.2.jar
-
neo4j-index-1.2-1.2.jar
-
neo4j-graph-algo-0.7-1.2.jar
-
geronimo-jta_1.1_spec-1.1.1.jar
-
org.apache.servicemix.bundles.lucene-3.0.1_2.jar
-
json-simple-1.1.jar
-
选择一个名称,例如 'org.neo4j.spatial.libs',并创建项目
-
打开新的 libs 项目的 MANIFEST.MF 文件,并修改导出设置以包含 JAR 文件中的所有包
在 uDig 中测试示例图层
如上所述,首次安装 Neo4j Spatial 时,您使用了 'mvn test' 运行了一些测试用例。这会创建一个包含一个或多个图层的 neo4j 数据库,您可以在 uDig 中显示这些图层。然而,我们将通过专门重新运行其中一个测试用例来对此进行更多控制,以便我们确切知道哪些图层将可见。
-
导航到 TestDynamicLayers 的测试代码,右键单击并选择 'Run as → JUnit Test'
-
此测试用例将加载瑞典马尔默市的 OSM 数据集。然后,它将分配一些“动态图层”,这些图层是数据集的预配置过滤器,设计看起来像 GIS 中的独立图层,但实际上是数据库中相同连接图的视图。
-
该测试还将这些图层导出为 Shapefile 和 PNG 图像,用于在 neo4j-spatial\target\export 中进行测试。我们在 uDig 中不需要它们,因为我们将直接将数据流式传输到 uDig 的视图中。但是,您稍后可以在 uDig 中比较这些文件以查看差异。
-
打开运行配置对话框,查看您第一次运行 uDig 时创建的 uDig 运行配置。
-
检查插件选项卡,确保工作区中的两个新插件已被选中
-
org.neo4j.spatial
-
org.neo4j.spatial.libs
-
eu.udig.catalog.neo4j
-
点击 'Validate plugins',并可选地点击 'Add required plugins' 以确保满足所有依赖项(如果需要,编辑 eu.udig.catalog.neo4j 和 neo4j-spatial 的 manifest.mf 文件,将管理依赖项标记为可选:org.neo4j.kernel.impl.management;resolution:=optional, and org.neo4j.kernel.management;resolution:=optional)
-
项目中可能存在由于无效字符导致的错误,例如 'crossing_bygg_förstadsgatan'。只需将其替换为另一个名称即可。
-
可选地在主选项卡上勾选 'clear workspace'
-
点击 'Run' 按钮以运行启用 Neo4j 支持的 uDig
-
启动后,eu.udig.catalog.neo4j 插件将扫描您的主目录查找 neo4j 数据库。在目录视图中,您应该看到由单元测试代码创建的数据库。如果找不到,可以导入一个
-
在目录视图中右键单击并选择 'Import→Data→Files'
-
在数据库目录中选择 neostore-id 文件,将此数据库添加到目录
-
在目录中选择一个或多个图层并将其添加到当前地图。
-
如果选择 map2.osm 图层,您将获得一个包含数据库中识别为 Geometries 的所有几何类型的单个图层

-
如果选择其他图层之一,您将获得仅显示该数据的过滤视图
-
向地图添加多个图层允许您重新排序图层并分别修改它们的样式。
-
可选地更改投影,以在北方纬度地区看起来更好
-
点击地图下方的投影按钮,该按钮最初显示 'WGS84'
-
在过滤器中键入 'RT90',然后选择 'RT90 2.5 gon V (3021)'。这是一种常见的瑞典投影,因此对马尔默非常适用。

-
尝试使用 Neo4j Spatial 源代码中的示例样式文件设置 map2.osm 图层的样式:neo.sld.xml
-
在图层视图中关闭除 map2.osm 之外的所有图层,以保持视图简洁
-
在图层视图中右键单击 map2.osm 图层并选择 'Style'
-
转到 'XML' 选项,选择所有 XML 并将其删除
-
在文本编辑器中打开 neo.sld.xml,选择所有文本并将其复制粘贴到 Style 编辑器中
-
点击应用,查看地图以更复杂的样式重新绘制
