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 的主干版本需要 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 图层,您将获得一个包含所有识别为数据库中几何体的几何类型图层。

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

  • 将多个图层添加到地图允许您重新排序图层并分别修改其样式。

  • 可以选择更改投影以使北纬地区看起来更好。

  • 单击地图下方的投影按钮,该按钮最初显示“WGS84”。

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

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

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

  • 右键单击图层视图中的 map2.osm 图层,然后选择“样式”。

  • 转到“XML”选项,并标记所有 XML 并将其删除。

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

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

Udig map2 styled

更新:OSM 的新自动样式

截至 10 月 20 日(提交 506ee4),OSM 图层现在将默认样式发布到 GIS。初始样式非常简单,但这确实可以提供更出色的开箱即用体验。目前,代码仅在具有特定目录结构的开发环境中有效,但我们很快就会使其更通用。

Udig multi styled layers