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 增量包
-
从 http://udig.refractions.net/files/downloads/branches/udig-1.2-SNAPSHOT-sdk.zip 安装 uDig SDK
-
确保您的 eclipse 使用下载的 JRE,在其 dropins 文件夹中包含 dropins,并将增量包和 uDig SDK 解压缩到单独的位置。
-
在 eclipse 中,设置 RCP 目标平台以包含 SDK 和增量包目录
-
切换到 RCP 透视图,使用插件视图查找 net.refractions.udig 插件并将其导入为源项目。
-
双击“udig.product”文件以在编辑器视图中打开它,然后单击“启动 Eclipse 应用程序”。您现在应该有一个正在运行的 uDig,从 IDE 启动。我们现在可以继续并将 Neo4j Spatial 及其依赖项添加到项目中。关闭 uDig 并转到下一部分。
添加 Neo4j Spatial
版本和依赖项
-
请注意,Neo4j Spatial 的主干版本需要 uDig 1.2.1,该版本在撰写本文时尚未发布。但是,在 http://udig.refractions.net/files/downloads/branches 上提供了 9 月 10 日的 SNAPSHOT 版本。如果您在该日期或更近的日期找不到 SNAPSHOT SDK,请查看正常位置,或考虑根据 http://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 支持
-
转到“帮助→安装新软件”,并使用 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 并将这两个项目导入工作区
-
使用“文件→导入→常规→将现有项目导入工作区”
-
浏览到您的 git 项目的位置,并选择并导入 neo4j-spatial 和 eu.udig.catalog.neo4j 项目
-
创建一个包装一些依赖 jar 的 libs 项目
-
使用“新建项目→插件开发→从现有 JAR 存档创建插件”
-
您需要添加的文件应该已在上述 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 的测试代码,右键单击并选择“以 JUnit 测试运行”
-
此测试用例将加载瑞典马尔默市的一个 OSM 数据集。然后,它将分配许多“动态图层”,它们是数据集的预配置过滤器,旨在在 GIS 中看起来像单独的图层,但实际上是数据库中同一连接图的视图。
-
该测试还将这些图层导出为 Shapefile 和 PNG 图像,以便在 neo4j-spatial\target\export 中进行测试。我们不需要它们用于 uDig,因为我们将数据直接流式传输到 uDig 中的视图中。但是,您以后可以在 uDig 中比较它们以查看差异。
-
打开运行配置对话框,查看之前首次运行 uDig 时创建的 uDig 运行配置。
-
检查插件选项卡,并确保选中工作区中的两个新插件
-
org.neo4j.spatial
-
org.neo4j.spatial.libs
-
eu.udig.catalog.neo4j
-
单击“验证插件”,并可选地单击“添加必需插件”,以确保满足所有依赖项(如果需要,编辑 eu.udig.catalog.neo4j 和 neo4j-spatial 的 manifest.mf 文件,以将管理依赖项标记为可选:org.neo4j.kernel.impl.management;resolution:=optional 和 org.neo4j.kernel.management;resolution:=optional)
-
项目中的一些错误可能是由于无效字符造成的,例如在“crossing_bygg_förstadsgatan”中。只需将其替换为其他名称。
-
可选地,在主选项卡上选中“清除工作区”
-
点击“运行”按钮以运行启用了 Neo4j 支持的 uDig。
-
启动后,eu.udig.catalog.neo4j 插件将扫描您的主目录以查找 neo4j 数据库。在目录视图中,您应该会看到单元测试代码创建的那个。如果您找不到,您可以导入一个。
-
右键单击目录视图,然后选择“导入→数据→文件”。
-
选择数据库目录中的 neostore-id 文件以将此数据库添加到目录。
-
在目录中选择一个或多个图层,并将其添加到当前地图。
-
如果您选择 map2.osm 图层,您将获得一个包含所有识别为数据库中几何体的几何类型图层。

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

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