在 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。最好详细遵循这些说明,因为所有步骤都有解释并给出了替代方案。然而,对于那些不耐烦和冒失的人,我们在此提供简化说明:

添加 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 的所有几何类型的单个图层

Udig map2
  • 如果选择其他图层之一,您将获得仅显示该数据的过滤视图

  • 向地图添加多个图层允许您重新排序图层并分别修改它们的样式。

  • 可选地更改投影,以在北方纬度地区看起来更好

  • 点击地图下方的投影按钮,该按钮最初显示 'WGS84'

  • 在过滤器中键入 'RT90',然后选择 'RT90 2.5 gon V (3021)'。这是一种常见的瑞典投影,因此对马尔默非常适用。

Udig map2 rt90
  • 尝试使用 Neo4j Spatial 源代码中的示例样式文件设置 map2.osm 图层的样式:neo.sld.xml

  • 在图层视图中关闭除 map2.osm 之外的所有图层,以保持视图简洁

  • 在图层视图中右键单击 map2.osm 图层并选择 'Style'

  • 转到 'XML' 选项,选择所有 XML 并将其删除

  • 在文本编辑器中打开 neo.sld.xml,选择所有文本并将其复制粘贴到 Style 编辑器中

  • 点击应用,查看地图以更复杂的样式重新绘制

Udig map2 styled

更新:新的 OSM 自动样式

截至 10 月 20 日(提交 506ee4),OSM 图层现在向 GIS 发布默认样式。初始样式非常简单,但这确实提供了更好的开箱即用体验。目前,代码只能在具有特定目录结构的开发环境中工作,但我们很快会使其更加通用。

Udig multi styled layers
© . All rights reserved.