工作流:使用 ArcGIS Spatial Data Server for Java Platform 提供数据库数据
您可以按照本主题中提供的示例来设置 ArcGIS Spatial Data Server for Java Platform 并发布现有数据库中的数据。
在本示例中,将创建一个应用程序来收集某所大学大学校友的人口统计信息。该大学可以利用收集到的信息面向预备学生做市场宣传,而且,该信息也可以帮助预备学生初步规划自己的学业:哪些学校和专业具有最高的投资回报率(学费对比毕业后的预期薪酬)。
还会将 PostgreSQL 数据库中使用 PostGIS 几何存储的区域要素类作为可编辑的要素服务发布到空间数据服务器。区域要素类通过显示邮政编码区来大致表示校友目前的居住位置。
部署空间数据服务器
您必须安装 ArcGIS Spatial Data Server for Java、JDBC 提供程序、数据库管理系统 (DBMS) 客户端和 Java 应用程序服务器。
然后,配置数据源。
安装 ArcGIS Spatial Data Server for Java
请遵照软件所随附的安装指南中的说明安装 ArcGIS Spatial Data Server for Java。该指南包含了软件的系统要求、授权和安装的相关信息。
注:要通过 ArcGIS.com 上发布的服务进行编辑,您必须将 ArcGIS Spatial Data Server 安装在公共服务器(位于防火墙外部)上。
安装 JDBC 提供程序并设置 Java 应用程序服务器
下载并安装 DBMS 支持的 JDBC 驱动程序以及应用程序服务器或 Web 服务器。
在此工作流中,将安装 PostgreSQL JDBC 文件和 Tomcat。
- 从 http://jdbc.postgresql.org/download.html 下载 PostgreSQL JDBC 驱动程序,然后将其放置在安装有 ArcGIS Spatial Data Server 和 Tomcat 的服务器上。
- 从 Apache Software Foundation 站点下载 Tomcat。
- 在服务器上安装 Tomcat。
- 将 PostgreSQL JDBC 驱动程序复制到 Tomcat lib 目录中。
配置数据源
必须将数据源配置到 Web 服务器或应用程序服务器中。
对于此工作流,请更改 Tomcat 中的 context.xml 文件以配置数据源。
- 打开 Tomcat 安装位置下 conf 目录中的 context.xml 文件。
- 编辑该文件的 <Resource name> 部分,输入 PostgreSQL 数据库集群的信息。
在此示例中,数据源名称为 postgres,数据库集群监听的是默认端口 5432,数据库为 gisdata。建立连接的登录角色为 alumapp。
<Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/gisdata" username="alumapp" password="ruL00king" maxActive="20" maxIdle="10" maxWait="-1"/> - 保存 context.xml 文件。
准备帐户
因为要对发布为要素服务的数据进行编辑,所以必须对连接到数据并发布数据的用户授予编辑权限。因为还要发布到 ArcGIS Online,所以您必须创建一个 ArcGIS Online 帐户。
对连接用户授予权限
在下一组步骤中,您将指定要在注册数据源时连接的用户。该用户必须获得要发布到空间数据服务器的数据集的权限。例如,如果希望用户仅可以对要素服务中的数据进行选择,则为数据源指定的用户只需对要素服务中的数据集拥有选择权限。
在此工作流示例中,要素服务可以提供选择、添加和更新权限;因此,连接到数据源的用户必须获得对 customers 要素类的选择、插入和更新权限。此外,因为该要素类使用了 PostGIS 几何存储,用户还必须获得对 public.geometry_columns 和 public.spatial_ref_sys 表的权限。
如下所示,创建了一个名为 alumapp 的数据库登录角色和名为 alumapp 的方案。该登录角色获得对数据库中 regions 要素类的选择、插入和更新权限,以及对 geometry_columns 表的选择、插入、更新和删除权限以及对 spatial_ref_sys 表的选择权限。请确保在创建方案和授予权限时连接到正确的数据库。
CREATE ROLE alumapp LOGIN
ENCRYPTED PASSWORD 'ruL00king',
NOSUPERUSER CREATEDB INHERIT NOCREATEROLE;
CREATE SCHEMA alumapp AUTHORIZATION alumapp;
GRANT ALL ON SCHEMA alumapp TO alumapp;
GRANT USAGE ON SCHEMA alumapp TO authusers;
GRANT SELECT, INSERT, UPDATE, DELETE
ON TABLE public.geometry_columns
TO alumapp;
GRANT SELECT
ON TABLE public.spatial_ref_sys
TO alumapp;
GRANT SELECT, INSERT, UPDATE
ON market1.regions
TO alumapp;
设置 ArcGIS Online 帐户
在本示例中,服务将发布到 ArcGIS Online,而应用程序将在此进行创建。
使用 Esri 全球帐户登录 ArcGIS Online。您可以将现有 Esri 全球帐户注册到 ArcGIS Online,也可以创建 Esri 全球帐户,然后在相同的位置对其进行注册。转至 http://www.arcgis.com/home/,然后单击登录。
如果已将 Esri 全球帐户注册到 ArcGIS Online,则此时无需登录。这将在工作流中发布服务后执行。
创建空间数据服务器的管理员连接
通过空间数据服务器的特定连接来发布数据。管理员连接可用于管理服务器和发布服务。
由于您可能还需要管理空间数据服务器,因此,应通过 ArcGIS for Desktop 创建与空间数据服务器的管理连接。
- 启动 ArcMap,然后打开目录 窗口。
- 在目录树中展开 GIS 服务器节点。
- 双击添加 ArcGIS Server。
- 选择管理 GIS 服务器,然后单击下一步。
- 在服务器 URL 文本框中,输入空间数据服务器的管理 URL。
此示例中,URL 为 http://pub5:8080/arcgis/admin。
- 在服务器类型下拉列表中选择 Spatial Data Server。
- 如果要使用此连接创建和保存服务定义,可选择服务定义文件在磁盘上的过渡位置。默认情况下,它们将过渡保存在本地计算机上的文件夹中。
- 单击完成创建连接。
新连接已列出在 GIS 服务器节点下。
发布要素服务
您将从 ArcGIS for Desktop 中使用为其配置数据源的用户信息连接到数据库。接下来,您将创建一个包含要在服务中采用的数据的地图,映射数据源,然后发布。
从 ArcGIS for Desktop 连接到数据库
与数据库建立连接,以便访问其中的数据。要与数据库建立连接,您必须在安装 ArcGIS 的计算机上安装数据库客户端。
对于此工作流,需要将 PostgreSQL 客户端文件放在 ArcGIS for Desktop 安装位置的 bin 文件夹中。
- 从 Esri 客户关怀中心门户下载适用于 Windows 的 PostgreSQL 32 位客户端库文件。
- 将这些文件置于 ArcGIS for Desktop 的 bin 文件夹。
将 PostgreSQL 客户端库放在 ArcGIS for Desktop 的 bin 文件夹中后,就可以建立从 ArcMap 到数据库的连接。
从 ArcMap 连接到数据库,然后便可将 regions 表添加到地图中。
- 在目录树中,展开数据库连接节点。
- 双击添加数据库连接。
- 在实例文本框中,输入 PostgreSQL 服务器名称。
- 在数据库文本框中,输入数据库名称 gisdata。
- 从类型下拉列表中选择数据库身份验证。
- 在用户名文本框中,输入 alumapp。
- 在密码文本框中,输入 alumapp 登录帐户的密码。
- 确保选中保存用户名和密码,然后单击确定。
制作地图
通过将 regions 表从数据库连接拖动到地图窗口将其添加到 ArcMap 中。
如果 ArcMap 未检测到空间参考或合适的 ObjectID 列(非空整型列),系统将提示您提供该信息。
注:不能发布没有空间参考的数据。
客户表出现在 ArcMap 内容列表中后,使用要在该服务中显示的简单符号对要素进行符号化。有关如何更改符号系统的信息,请参阅 ArcGIS 帮助。
接下来,在地图文档中更改您希望在该服务中显示的属性所需的任何配置。例如,您可能需要设置可通过该服务显示的字段、可见字段的别名,还可能需要将一些字段设置为只读。在本示例中,您还需要为用户设置 HTML 弹出菜单,以提供处理其请求所需的信息。有关可能的属性列表,请参阅快速浏览:为空间数据服务器创作要素服务。
缩放至服务要使用的初始范围。您需要确定初始范围最多返回您在发布服务时所设置的最大要素数目。默认情况下,该数目为 1000。保存您的地图。
映射数据源并发布可编辑的要素服务
地图准备就绪后,将其发布,以将您的数据作为要素服务共享。
发布时,您将映射数据源。
提示:或者,也可以通过 REST 管理视图映射数据源。有关信息,请参阅通过 REST 管理视图针对 ArcGIS Spatial Data Server for Java 建立数据源映射。
- 在 ArcMap 文档中,从主菜单中选择文件 > 共享为 > 服务。
- In the Share As Service window, there are three options.
- To immediately publish your data, choose Publish a service and click Next.
- To save a service definition file to be published later, choose Save a service definition file and click Next.
- To replace an existing service, choose Overwrite an existing service and click Next. To replace a service, the original service must be stopped first.
- 从连接下拉列表中选择管理空间数据服务器。
- 在服务名称文本框中,输入 alumni_area,然后单击继续。
- 在服务编辑器 中单击要素访问。
- 保持四项操作全部处于选中状态,以使用户能够通过要素服务查询、创建、更新和删除数据。
- 单击共享。
将打开 ArcGIS Online 登录 对话框。
- 输入 Esri 全球帐户用户名和密码,并单击确定登录,然后关闭“登录”对话框。
- 在服务编辑器 对话框的 ArcGIS Online 窗格中,选中合适的框,以使相应用户能够访问您的内容。
- 如果目前只有您可以访问该服务,请选中我的内容。
- 如果您希望对 ArcGIS Online 具有访问权限的每个用户均能查看该服务,请选中任何人(公共)。
- 列出您所加入的所有组。如果您希望将所发布服务的访问权限授予其中任一组,请选中以下组中的成员,然后选中需要的所有组。
可以选中多个选项。例如,您可能希望该服务成为您内容的一部分,并且希望将访问权限授予特定的 ArcGIS Online 组。
- 单击分析。
如果尚未映射数据源,会收到错误消息“图层的数据源无映射”。只有更正此错误及任何其他错误之后才能顺利发布。
- 要更正错误,请右键单击它们。
快捷菜单中包含可更正问题的工具的链接。
- 遵照错误帮助链接中提供的说明更正数据源错误。
- 请更正返回的所有其他错误,然后再继续。
- 如果要查看要素类在该服务中的显示效果,请单击预览。
- 单击发布。
- 完成发布后,单击确定关闭该对话框。
查看服务
您可以通过 ArcGIS 空间数据服务目录查看服务的相关信息。由于服务已发布到 ArcGIS Online,因此您可以在此查看地图上的服务。
通过 ArcGIS 空间数据服务目录访问该服务
ArcGIS 空间数据服务目录将列出发布到特定空间数据服务器的所有服务。在此,您可以将服务定义导出为 JSON 文件、编写 SQL 查询来选择要素或将其插入到要素类中,或者在 ArcGIS.com 打开您的服务。
ArcGIS 空间数据服务目录的 URL 为 http://<服务器名称>/<空间数据服务器名称>/rest/services。因此,在此示例中,URL 为 http://pub5:8080/arcgis/rest/services。您将看到两项服务同时列出。
使用 ArcGIS Online
由于您已将要素类发布到空间数据服务器,因此可通过 ArcGIS Online 查看它们。
- 打开 web 浏览器并转至 ArcGIS Online 网站:http://www.arcgis.com/home/index.html。
- 单击登录。
- 输入 Esri 全球帐户用户名和密码,然后单击登录。
- 单击我的内容。
- 添加 alumni_data 服务。
- 单击添加项目。
- 在项目下拉列表中,选择 ArcGIS Server Web 服务。
- 输入该服务的 URL。
在此示例中,URL 为 http://pub5/arcgis/rest/services/alumni_data.svc。
- 在标题文本框中输入服务的标题。
- 在标签文本框中输入用于识别服务的标签。
- 单击添加项目。
创建 web 应用程序
首先,在 ArcGIS.com 上创建一个包含您的服务以及世界底图的地图。接下来,使用 ArcGIS.com 中的应用程序模板创建 web 应用程序。
在 ArcGIS.com 上创建地图
将 alumni_data 服务添加到 ArcGIS.com 上的底图,然后保存该地图以用于您的应用程序。
- 在 ArcGIS.com 的我的内容部分中,单击创建地图。
- 单击底图并从中选择一个底图。
- 单击添加 > 添加图层。
- 在范围下拉列表中,选择我的内容。
- 选择 alumni_data 服务,然后单击完成添加图层。
- 必要时,可调整地图范围。
- 保存地图。
- 输入地图的标题、标签和摘要。
- 选择用于保存地图的文件夹。
- 单击保存地图。
- 公开共享您的地图或者与特定组共享地图。
- 记下地图的 ID,以便在创建 web 应用程序时使用。
使用模板创建 web 应用程序
由于应用程序需要供用户编辑,因此您将使用“编辑 web 应用程序”模板。
- 下载编辑 web 应用程序模板。
- 将下载的 ZIP 文件放在 IIS 服务器的 inetpub\wwwroot 文件夹中。
- 解压缩文件。
- 按照 readme.html 文件中的说明来设置应用程序。