本教程将向您介绍如何使用演示文件了解 Oracle Spatial Web 服务,如 Web 地理特征服务 (WFS)、Web 目录服务 (CSW) 和开放式位置服务 (OpenLS)。
大约 30 分钟
本教程包括下列主题:
| 概述 | ||
| 前提条件 | ||
| 运行 Web 地理特征服务 (WFS) 演示 | ||
| 运行 Web 目录服务 (CSW) 演示 | ||
| 运行开放式位置服务 (OpenLS) 演示 | ||
| 总结 | ||
将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。
(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
在教程“在 OC4J 中安装和配置 Spatial Web 服务”中,您已经在 Oracle Application Server Containers for J2EE 中安装并配置了 Spatial Web 服务。在本教程中,您将通过使用提供的演示文件来了解包括 WFS、CSW 和 OpenLS 在内的 Spatial Web 服务。
开始本教程之前,您应该:
| |
||
执行以下步骤:
| 填充关系地理特征类型和基于文档的地理特征类型 | ||
| 创建地理特征类型 | ||
| 运行关系 WFS 演示 | ||
| 查看请求和响应 XML 示例 | ||
| 运行基于文档的 WFS 演示 | ||
| 查看请求和响应 XML 示例 | ||
| 删除地理特征类型 | ||
| 1. |
从终端窗口中,输入以下命令: cd $CLIENT_HOME/src/sql sqlplus / as sysdba此处,$CLIENT_HOME 是您提取 wsclient.jar 文件的目录位置。
|
|
| 2. |
要填充关系地理特征类型,请输入以下 SQL 脚本: @wfsrelmd.sql wfsrelmd.sql 脚本将创建用户、表和索引,授予权限并执行一些 PL/SQL 过程。以下的屏幕截图只显示了部分输出。
|
|
| 3. |
要填充基于文档的地理特征类型,请输入以下 SQL 脚本: @wfsdocmd.sql wfsdocmd.sql 脚本也将创建用户、表和索引,授予权限并执行一些 PL/SQL 过程。以下的屏幕截图只显示了部分输出。
退出 SQL Plus。 |
|
| 1. |
要创建地理特征类型 (java oracle.spatial.ws.admin demo.WFSAdminDemo SampleFeature ./data/datafeatures.xsd ./data/fd_sample.xml create),请输入以下命令: cd $CLIENT_DIR/src ./compileAndRunClient.sh runwfsct 此处,CLIENT_DIR 是您提取 src 文件夹的路径。
|
|
| 2. |
在新终端中,启动 OC4J 服务器。输入以下命令: cd <jdevhome directory>/bin ./oc4j -start
|
|
通过 WFS 基于关系的演示,您将了解到如何针对基于关系的地理特征类型处理以下 WFS 请求类型:
| GetCapabilities | ||
| DescribeFeatureType | ||
| GetFeature | ||
|
事务,带有指定事务类型的子元素: |
||
|
插入 |
||
| 更新 | ||
| 删除 | ||
运行 WFS 演示时,WFS 服务器将按顺序处理输入并生成输出。输入文件是 wfsrel_01.xml、wfsrel_02.xml 直至 wfsrel_22.xml。输入 XML 文件(wfsrel_*.xml 文件)包含在 wsclient.jar 文件中,可从 $CLIENT_HOME/src/data 文件夹中进行访问。生成的输出文件是 wfsrel_01.log、wfsrel_02.log 直至 wfsrel_22.log。执行以下步骤运行 WFS 演示。
| 1. |
要运行关系 WFS 演示,请输入以下命令(其中 $CLIENT_DIR 是该演示的 src/ 内容所在的客户端目录): cd $CLIENT_DIR/src/data cp wfsMapFile_rel.txt wfsMapFile.txt
|
|
| 2. | 然后,按如下所示运行 WFS 演示 (java oracle.spatial.ws.svrproxy.TestWFS wfs_rel_user wfs_rel_user):
cd $CLIENT_DIR/src 运行 ./compileAndRunClient.sh runwfsrel 命令将访问 src/data/wfsrel_*.xml 文件。相应的输出文件在 src/data directory as the wfsrel_*.log 文件中生成。 以下屏幕截图显示了部分输出。
|
|
输入/输出文件内容按地理特征类型描述如下:
| 输入 | 输出 | ||
| GetCapabilities | wfsrel_12.xml 是 GetCapabilties 请求的示例。 | wfsrel_12.log 将显示功能响应,以概括 WFS 服务器的功能。 | |
| DescribeFeatureType | wfsrel_11.xml 和 wfsrel_20.xml 是 DescribeFeatureType 请求的示例,用以请求描述地理特征的结构。 | wfsrel_11.log 和 wfsrel_20.xml 将显示地理特征类型的结构。 | |
| GetFeature | wfsrel_01.xml、wfsrel_02.xml 直至 wfsrel_10.xml、wfsrel_13.xml 和 wfsrel_19.xml 是 GetFeature 请求的示例,用以查询满足筛选条件的地理特征实例。 | wfsrel_01.log、wfsrel_02.log 等直至 wfsrel_10.log、wfsrel_13.log 和 wfsrel_19.log 是查询的结果,将显示满足相应筛选条件的地理特征实例。 | |
| 事务:插入 | wfsrel_14.xml、wfsrel_17.xml 和 wfsrel_21.xml 是插入地理特征实例的示例。 | wfsrel_14.log、wfsrel_17.log 和 wfsrel_21.log 将显示与插入请求相对应的 WFS 服务器的输出。 | |
| 事务:删除 | wfsrel_16.xml、wfsrel_18.xml 和 wfsrel_22.xml 是删除地理特征实例的示例。 | wfsrel_16.log、wfsrel_18.log 和 wfsrel_22.log 将显示与删除请求相对应的 WFS 服务器的输出。 | |
| 事务:更新 | wfsrel_15.xml 是更新地理特征实例的示例。 | wfsrel_15.log 将显示与更新请求相对应的 WFS 服务器的输出。 | |
在下表中,检查 wfsrel_01.xml 及其相应的输出 wfsrel_01.log。如前所述,wfsrel_01.xml 是 GetFeature 请求的示例。输入文件附带在 wsclient.jar 中。所有输出文件都将在您运行演示时于 $CLIENT_HOME/src/data 目录中生成。如果希望检查其他输入及其相应的输出,您可以在 $CLIENT_HOME/src/data 目录中对其进行访问。
| 1. |
检查输入 XML(wfsrel_01.xml 文件),如下图所示:
相应的输出 wfsrel_01.log 如下所示:
|
|
通过基于文档的 WFS 演示,您将了解到如何针对基于文档(外部 XSD)的地理特征类型处理以下 WFS 请求类型:
| GetFeature | ||
|
事务,带有指定事务类型的子元素: |
||
|
插入 |
||
| 更新 | ||
| 删除 | ||
运行基于文档的 WFS 演示时,WFS 服务器将按顺序处理输入并生成输出。输入文件是 wfsdoc_01.xml、wfsdoc_02.xml 直至 wfsdoc_20.xml。输入 XML 文件(wfsdoc_*.xml 文件)包含在 wsclient.jar 文件中,可从 $CLIENT_HOME/src/data 文件夹中进行访问。生成的输出文件是 wfsdoc_01.log、wfsdoc_02.log 直至 wfsdoc_20.log。执行以下步骤运行基于文档的 WFS 演示。
| 1. |
要运行基于文档的 WFS 演示,请输入以下命令(其中 $CLIENT_DIR 是该演示的 src/ 内容所在的客户端目录): cd $CLIENT_DIR/src/data cp wfsMapFile_doc.txt wfsMapFile.txt
|
|
| 2. |
然后,按如下所示运行基于文档的 WFS 演示 (java oracle.spatial.ws.svrproxy.TestWFS wfs_doc_user wfs_doc_user) : cd $CLIENT_DIR/src ./compileAndRunClient.sh runwfsdoc以下屏幕截图显示了部分输出。
|
|
输入/输出文件内容按地理特征类型描述如下:
| 输入 | 输出 | ||
| GetFeature | wfsdoc_02.xml、wfsdoc_03.xml、wfsdoc_04.xml、wfsdoc_05.xml、wfsdoc_07.xml、wfsdoc_12.xml、wfsdoc_14.xml、wfsdoc_16.xml、wfsdoc_18.xml 以及 wfsdoc_20.xml 是 GetFeature 请求的示例,用以查询满足筛选条件的地理特征实例。 | wfsdoc_02.log、wfsdoc_03.log、wfsdoc_04.log、wfsdoc_05.log、wfsdoc_07.log、wfsdoc_12.log、wfsdoc_14.log、wfsdoc_16.log、wfsdoc_18.log 以及 wfsdoc_20.log 是查询的结果,将显示满足相应筛选条件的地理特征实例。 | |
| 事务:插入 | wfsdoc_01.xml、wfsdoc_09.xml 是插入地理特征实例的示例 | wfsdoc_01.log 和 wfsdoc_09.log 将显示与插入请求相对应的 WFS 服务器的输出。 | |
| 事务:删除 | wfsdoc_08.xml、wfsdoc_19.xml 是删除地理特征实例的示例 | wfsdoc_08.log 和 wfsdoc_19.log 将显示与删除请求相对应的 WFS 服务器的输出。 | |
| 事务:更新 | wfsdoc_06.xml、wfsdoc_10.xml、wfsdoc_11.xml、wfsdoc_13.xml、wfsdoc_15.xml、wfsdoc_17.xml 是更新地理特征实例的示例 | wfsdoc_06.log、wfsdoc_10.log、wfsdoc_11.log、wfsdoc_13.log、wfsdoc_15.log 以及 wfsdoc_17.log 将显示与更新请求相对应的 WFS 服务器的输出。 | |
在下表中,检查 wfsdoc_06.xml 及其相应的输出 wfsdoc_06.log。
输入文件附带在 wsclient.jar 中。所有输出文件都将在您运行演示时于 $CLIENT_HOME/src/data 目录中生成。如果希望检查其他输入及其相应的输出,您可以在 $CLIENT_HOME/src/data 目录中对其进行访问。
| 1. |
检查 wfsdoc_06.xml 输入文件。如前所述,wfsdoc_06.xml 是事务:更新请求的示例。
|
|
| 2. |
以下屏幕截图显示了响应 wfsdoc_06.log 文件。
|
|
| 1. | 要删除关系地理特征类型,请输入以下 SQL 脚本: cd $CLIENT_DIR/src/sql 运行 SQL*Plus 脚本:drprelmd.sql. @drprelmd.sql
退出 SQL*Plus。 |
|
| 2. | 要删除基于文档的地理特征类型,请输入以下 SQL 脚本: cd $CLIENT_DIR/src
|
|
| 3. |
停止 OC4J 服务器。输入以下命令: cd <Jdev directory>/bin ./oc4j -shutdown -port 23791 -password admin
|
|
执行以下步骤:
| 填充和创建记录类型 | ||
| 运行 CSW 演示 | ||
| 查看请求和响应 XML 示例 | ||
| 删除记录类型 | ||
| 1. |
要为 CSW 演示填充记录类型,可输入以下命令(其中 $CLIENT_HOME 是该演示的 src/ 内容所在的客户端目录): cd $CLIENT_HOMR/src/sql sqlplus / as sysdba @cswmd.sqlcswmd.sql 脚本将创建用户、表和索引,授予权限并执行一些 PL/SQL 过程。以下的屏幕截图只显示了部分输出。 退出 SQL*Plus。 |
|
| 2. |
要创建类型,请使用 Java 类 oracle.spatial.ws.admindemo.CSWAdminDemo createRecordType,如下所示: cd $CLIENT_HOME/src ./compileAndRunClient.sh runcswct |
|
| 3. |
在新终端窗口中,启动 OC4J 服务器。输入以下命令: cd <jdevhome directory>/bin
./oc4j -start
|
|
通过 CSW 演示,您将了解到如何处理以下 CSW 请求类型:
| GetCapabilities | ||
| DescribeRecord | ||
| GetRecords | ||
| GetDomain | ||
| GetRecordById | ||
|
事务,带有指定事务类型的子元素: |
||
|
插入 |
||
| 更新 | ||
| 删除 | ||
运行 CSW 演示时,CSW 服务器将按顺序处理输入并生成输出。输入文件是 csw_01.xml、csw_02.xml 直至 csw_36.xml。输入 XML 文件(csw_*.xml 文件)包含在 wsclient.jar 文件中,可从 $CLIENT_HOME/src/data 文件夹中进行访问。生成的输出文件是 csw_01.log、 csw_02.log 直至 csw_36.log。执行以下步骤运行 CSW 演示。
| 1. |
要运行 CSW 演示 (java oracle.spatial.ws.svrproxy.TestCSW csw_user csw_user),请输入以下命令(其中 $CLIENT_HOME 是该演示的内容所在的客户端目录): cd $CLIENT_HOME/src ./compileAndRunClient.sh runcsw
|
|
输入/输出文件内容按 CSW 请求类型描述如下:
| 输入 | 输出 | ||
| GetCapabilities | csw_10.xml 是 GetCapabilties 请求的示例。 | csw_10.log 将显示功能响应,以概括 CSW 服务器的功能。 | |
| DescribeRecord | csw_09.xml 是 DescribeRecord 请求的示例,用以请求描述记录类型的结构。 | csw_09.log 将显示记录类型的结构。 | |
| GetRecords | csw_02.xml、csw_03.xml 直至 csw_07.xml、csw_19.xml、csw_21.xml、csw_22.xml、csw_24.xml、csw_28.xml、csw_30.xml、csw_32.xml、csw_34.xml 以及 csw_36.xml 是 GetRecords 请求的示例,用以查询满足筛选条件的记录实例。 |
csw_02.log、csw_03.log 直至 csw_07.log、csw_19.log、csw_21.log、csw_22.log、csw_24.log、csw_28.log、csw_30.log、csw_32.log、csw_34.log 以及 csw_36.log 是查询的结果,将显示满足相应筛选条件的记录实例。 |
|
| GetDomain | csw_11.xml 是 GetDomain 请求的示例,用以获取有关请求参数的值范围的运行时信息。 | csw_11.log 是对 GetDomain 请求的响应。 | |
| GetRecordById | csw_08.xml 是 GetRecordById 请求的示例,用以根据记录标识符查询记录实例。 | csw_08.log 是该查询的结果,将显示满足相应查询条件的记录实例。 | |
| 事务:插入 | csw_01.xml、csw_12.xml、csw_18.xml、csw_20.xml、csw_23.xml 和 csw_25.xml 是插入记录实例的示例。 | csw_01.log、csw_12.log、csw_18.log、csw_20.log、csw_23.log 以及 csw_25.log 将显示与插入请求相对应的 CSW 服务器的输出。 | |
| 事务:删除 | csw_13.xml 和 csw_35.xml 是删除记录实例的示例。 | csw_13.log 和 csw_35.log 将显示与删除请求相对应的 CSW 服务器的输出。 | |
| 事务:更新 | csw_14.xml、csw_15.xml、 csw_16.xml、csw_17.xml、csw_26.xml、csw_27.xml、csw_29.xml、csw_31.xml 以及 csw_33.xml 是更新记录实例的示例。 | csw_14.log、csw_15.log、csw_16.log、csw_17.log、csw_26.log、csw_27.log、csw_29.log、csw_31.log 以及 csw_33.log 将显示与更新请求相对应的 CSW 服务器的输出。 | |
在下表中,检查 csw_08.xml 及其相应的输出 csw_08.log。输入文件附带在 wsclient.jar 中。所有输出文件都将在您运行演示时于 $CLIENT_HOME/src/data 目录中生成。如果希望检查其他输入及其相应的输出,您可以在 $CLIENT_HOME/src/data 目录中对其进行访问。
| 1. |
检查 csw_08.xml 输入文件。如前所述,csw_08.xml 是 GetRecordById 请求的示例。
|
|
| 2. |
相应的输出文件(csw_08.log 文件)如下所示:
|
|
| 1. |
要删除 CSW 记录类型 (java oracle.spatial.ws.admindemo.CSWAdminDemo cd $CLIENT_HOME/src ./compileAndRunClient.sh runcswdt
|
|
| 2. |
停止 OC4J 服务器。输入以下命令。 cd <Jdev directory>\bin ./oc4j -shutdown -port 23791 -password admin |
|
执行以下步骤:
| 更新并运行 olscreate.sql 脚本 | ||
| 编译并运行代码 | ||
| 运行 OpenLS SQL 演示 | ||
| 1. |
找到以下文件: - src/sql/olslocut.dmp 编辑 olscreate.sql。输入以下命令: cd $CLIENT_HOME/src/sql gedit olscreate.sql |
|
| 2. |
在 olscreate.sql 文件中,更改数度出现的“connect user/password”以指定所需的用户名和口令。对于本教程,请将系统和 mdsys 口令更改为 oracle。 注:对于表示服务和路由服务,insert(...) 和 assign_acl(...) 语句需要进行更新以指向正确的路由服务器和 MapViewer URL。如果可以访问 Oracle 位置服务,则您可设置并访问这些 URL,然后针对表示服务和路由服务演示运行 OpenLS SQL 演示。Oracle 位置服务将提供处理路由和绘图请求的功能。 有关 Oracle 路由服务器的详细信息,请参阅 Oracle Spatial 开发人员指南中关于路由引擎的章节。有关 Oracle MapViewer 的详细信息,请点击以下链接: http://www.oracle.com/technology/software/products/mapviewer/index.html 如果不能访问 Oracle 位置服务,则您将无法针对表示服务和路由服务运行 OpenLS SQL 演示。因此您无需更改以下所述的 insert into 和 assign_acl 语句。 但您仍可以针对目录服务和地理编码服务运行 OpenLS SQL 演示。 更改以下内容: 要 INSERT INTO(插入)mdsys.OpenLSServices 表的语句中的服务器 URL 定义: 对于位置转换服务 (Location Utility Service) 和目录服务,您可以将 URL 保留为 http:localhost。 对于表示服务和路由服务,URL 应指向正确的路由服务器和 MapViewer URL。因此,仅当您可以访问 Oracle 位置服务时对其进行更改。 在 dbms_network_acl_admin.drop_acl('xxx.xml') 中,您可以针对本教程保留其原样。 将访问控制列表 (ACL) 定义(assign_acl 语句)中的 URL 更改为您在表示服务和路由服务的 INSERT INTO 语句中选定的 URL。仅当您可以访问 Oracle 位置服务时对其进行更改。
|
|
| 3. |
在 SQL*Plus 中,运行 olscreate.sql 脚本: sqlplus / as sysdba @olscreate.sql以下的屏幕截图只显示了部分输出。
退出 SQL*Plus。 |
|
| 1. |
在 $CLIENT_DIR/src/oracle/spatial/ws/svrproxy/Test.java 文件中,执行以下操作: 更改以下语句中的 URL(主机,端口): myPort.setEndpoint("http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"); 注: 对于本教程,您可以将其保留为“localhost:8888”。 编辑以下的用户名和口令: myPort.setUsername(user); 因为已经创建了用户 SpatialWsUser0 ...SpatialWsUser3,因此您可能无需进行任何更改。此外,请注意某些测试将执行循环,以进行性能测量。
|
|
通过基于 OpenLS 的演示,您将了解到如何处理以下 OpenLS 请求类型:
| GeocodeRequest | ||
| PortrayMapRequest | ||
| DetermineRouteRequest | ||
| DirectoryRequest | ||
在编译并运行 OpenLS Java 演示时,它将调用 SOAP 执行目录服务请求,并生成目录服务响应。
执行以下步骤运行 OpenLS 演示。
| 1. |
在新终端窗口中,启动 OC4J 服务器。输入以下命令: cd <jdevhome directory>/bin ./oc4j -start |
|
| 2. |
编译并运行代码 对于示例 YP 请求(Linux 系统): cd $CLIENT_HOME/src
./compileAndRunClient.sh runyp
以下的屏幕截图只显示了部分输出。
|
|
对于 OpenLS,有一个 SQL 接口和一个 SOAP 接口(已在之前的步骤中进行了演示)。
输入文件是 olsloc_01.sql、olsdir_02.sql、olsdir_03.sql 直至 olsdir_11.sql、olsmap_02.sql、olsmap_03.sql 和 olsroute_01.sql。输入文件包含在 wsclient.jar 文件中,可从 $CLIENT_HOME/src/data 文件夹中进行访问。可通过从 $CLIENT_HOME/src/data 执行 SQL*Plus 将输出生成为相应的日志文件(olsloc_01.log、olsdir_02.log、olsdir_03.log 直至 olsdir_11.log、olsmap_02.log、olsmap_03.log 和 olsroute_01.log)。
输入/输出文件内容按 OpenLS 请求类型描述如下:
| 输入 | 输出 | ||
| GeocodeRequest | olsloc_01.sql 是一个从地理代码请求旧金山内两个地址的示例。 |
olsloc_01.log 是包含经地理编码的经度/纬度以及地址的响应。 | |
| PortrayMapRequest |
olsmap_02.sql 和 olsmap_03.sql 是按大小和文件格式请求地图以确定外围框或中心点和比例的示例、 注: 为了执行这些输入 |
olsmap_02.log 和 olsmap_03.log 是对地图请求的响应。 | |
| DetermineRouteRequest |
olsroute_01.sql 是请求两个地址之间路线(包括路形)的请求示例。根据路形,可按序执行目录请求。 注: 为了执行这些输入 |
olsroute_01.log 是对路线请求的响应。 | |
| DirectoryRequest |
olsdir_02.sql、olsdir_03.sql 和 olsdir_04.sql 是查询某个国家/地区、州、城市或邮政编码内感兴趣的企业/点的示例。 olsdir_05.sql、olsdir_06.sql、olsdir_07.sql、olsdir_08.sql、olsdir_09.sql 和 olsdir_11.sql 是对感兴趣的企业/点查询添加分类要求的示例。
|
olsdir_02.log、olsdir_03.log 和 olsdir_04.log 将显示满足查询条件的企业列表。 olsdir_05.log、olsdir_06.log、olsdir_07.log、olsdir_08.log、olsdir_09.log 和 olsdir_11.log将显示满足查询条件的企业列表。 olsdir_10.log 将显示满足查询条件的企业列表。 |
|
要生成 olsloc_01.log 和 olsmap_02.log 文件,执行以下步骤:
| 1. |
输入以下命令: cd $CLIENT_HOME/src/data sqlplus mdsys/oracle spool olsloc_01.log @olsloc_01.sql spool off 如上表所述,olsloc_01.sql 是一个从地理代码请求旧金山内两个地址的示例。您可以从 $CLIENT_HOME/src/data 目录查看生成的输出日志文件 olsloc_01.log。以下的屏幕截图只显示了部分输出。
|
|
| 2. |
同样,您可以运行 olsmap_02.sql,这是一个 PortrayMapRequest 请求类型的示例。仅当您可以访问 Oracle 位置服务并在 olscreate.sql 脚本中提供了其 URL 后可运行该示例。 以下屏幕截图显示了 olsmap_02.log 文件的内容。
同样,您可以运行所有其他输入 SQL 文件,如 olsroute_01.sql(仅当您可以访问 Oracle 位置服务时)或 olsdir_03.sql 文件并生成相应的输出文件。 |
|
| 3. |
停止 OC4J 服务器。输入以下命令: cd <Jdev directory>\bin ./oc4j -shutdown -port 23791 -password admin |
|
在本教程中,您学习了如何:
| 运行 Web 地理特征服务 (WFS) 演示 | ||
| 运行 Web 目录服务 (CSW) 演示 | ||
| 运行开放式位置服务 (OpenLS) 演示 | ||