ArcGIS Maritime Server 开发教程ArcGIS Bathymetry 扩展模块
Posted 李远祥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS Maritime Server 开发教程ArcGIS Bathymetry 扩展模块相关的知识,希望对你有一定的参考价值。
ArcGIS Maritime Server 开发教程(八)ArcGIS Bathymetry 扩展模块
本章导读:ArcGIS Bathymetry 扩展是 ArcGIS Maritime 解决方案中用于管理水深的重要模块。与传统的离散点来呈现水深方式不一样,ArcGIS Bathymetry 是使用连续像元栅格方式来管理水深数据,能够表达出区域内每一个地方水深,直接对标 S-102 海图标准。本章着重从水深数据管理模式来详细介绍 ArcGIS Bathymetry 模块的使用。By 李远祥
ArcGIS Bathymetry 结构体系
ArcGIS Bathymetry 在 ArcGIS 软件体系中只有 Desktop 的扩展模块,没有对应的 Server 扩展。其使用模式是使用 ArcGIS Bathymetry 桌面扩展工具,在 Geodatabase 中建立水深管理库(BIS库)。水深管理库的核心是使用镶嵌数据集来管理水深 Bag 数据,Bag 数据的相关信息则通过 ArcGIS Bathymetry 桌面扩展写入到镶嵌数据集的元数据中。如果不考虑 Web 应用,ArcMap + Bathymetry 扩展 + ArcSDE(或者fileGDB)即可完成 C/S 模式的管理。如果还需要构建水深管理的 Web 应用,则需要使用 ArcGIS Server + ArcGIS Image Server 对 BIS 库中的水深产品进行发布,并使用 ArcGIS javascript API 进行定制开发。
应用场景
-
C/S 纯数据管理:
基础支撑:ArcGIS Desktop + Bathymetry 扩展 + ArcSDE
开发SDK:ArcGIS Engine -
B/S 应用模式:
基础支撑:ArcGIS Desktop + Bathymetry 扩展 + ArcGIS Server + Image Server
开发SDK: ArcGIS JavaScript API
由于 BIS 库中使用镶嵌数据集的方式来管理水深数据,这个固定的技术路线使然,因此必须结合 ArcGIS Image Server 才能实现 Web 方式访问水深数据。
关于 ArcGIS Bathymetry 的一些功能,笔者在《ArcGIS Bathymetry 管理水深数据的方法》文章中已经作详细的介绍。
创建和管理 BIS 水深数据库
利用 ArcGIS Bathymetry 扩展可以创建基于 Geodatabase 的水深数据库。由于 Geodatabase 的多态性,既可以使用 ArcSDE 又可以使用 File GDB 来创建,其具体的操作完全一致。
ArcGIS Bathymetry 扩展在 ArcMap 中看起来是一个非常工具条,工具条上只有简单的几个按钮,主要实现以下具体功能:
- BIS 库的创建
- Bag 数据入库
- Bag 分幅元数据定义和管理
- 水深数据的查询检索
- 水深产品的定义和生成
- 其他辅助功能,如水深渲染等
实际上可以将 ArcGIS Bathymetry 扩展看作是一个特殊的影像管理模块,只不过这个影像管理模块比较特殊,它是专门针对 S-102 标准的 Bag 数据,而非通用的影像管理。
BIS 数据库的创建非常简单,直接使用 Bathymetry 工具条的第一个工具,Create BIS Database ,按照界面提示即可完成。
从创建的界面可以看到,需要指定指定一些必要的参数
- 指定BIS 的名称
- 指定一个 Geodatabase 用作构建 BIS 的数据库结构
- 指定 BIS 库的坐标系
- 指定一些相关的文件目录(如镶嵌数据集的 OverView 以及元数据 Metadata 的目录)
笔者强烈建议将 OverView 和 Metadata 单独创建目录,如果使用的是 File GDB ,则与 File GDB 同一级目录。这样是为了方便后面做一系列的 BIS 的管理。
BIS 库创建完成之后,可以看到其生成了 BIS 的数据结构(实际上是 Geodatabase 上的几张表格)以及关联的辅助文件。
其中在 Metadata 目录下,创建了定义元数据的 XML 配置文件,这几个配置文件在 bag 数据入库的时候将由 Bathymetry 模块读取并对元数据进行必要的限制。
第二个功能按钮为管理多个 BIS 库的连接,其作用是在多个 BIS 库中切换。这个工具用于多库管理,如下图所示:
通过 Connect to Existing BIS 按钮,连接到已经存在的 BIS 库,在使用 Bathymetry 的其他管理工具之前,必须在 Active 的列表框中先勾选上一个 BIS 库作为活动的 BIS 库。
每一个 Geodatabase 只能创建一个 BIS 库结构,在使用 Bathymetry 管理工具时,同一时刻只能选择一个 BIS 库作为当前操作的数据库。也就是说,当前 Bathymetry 工具并不支持跨库创建水深产品。因此,如果着重于水深产品的生成和分发,笔者建议一库式管理。如果是以检索为主的,则可以多库部署,分开管理。
第三个工具为 BIS 数据库设置。在 BIS 创建之后,可以在后期设置 BIS 库的一些相关信息。如下图,分别有 System 、Paths、Display、Metadata、Advanced 几项。
System : 设置 BIS 库的一些描述信息,如别名、描述等。
Paths : 显示BIS库创建的时候指定的辅助目录路径,该项不能修改
Display : 指定水深数据默认显示的样式
Metadata : 设置 bag 数据入库时需要填写的元数据信息,例如必要项和可选项。
Advanced : 新的 bag 入库后触发的处理动作,如创建索引、概要视图等
其中最重要的是 Metadata 项,在这里可以自定义数据入库时填写的元数据信息,可以增加元数据项以及指定必填的元数据信息。这些元数据信息会在水深数据检索和过滤中使用。
在配置元数据的面板中,包含了两个方面的元数据信息结构可以定义。从英文字面上可以看出,分别是扩展元数据和采集元数据信息。
ArcGIS Bathymetry 会根据 Bag 数据的特点自动获取和录入自身的一些元数据信息。用户如果需要对 Bag 数据追加一些必要的描述,可以在 Metadata 处进行定义和追加。
点击右侧按钮,可以进入对应的元数据结构自定义界面。在该界面中可以设定元数据的是否必填和是否可检索。用作在 Bag 数据入库和后期检索。
如果需要追加元数据项目,点击 Add new field 按钮,进入添加元数据字段界面。
元数据结构的配置文件保存在构建 BIS 库时设置的目录下,以XML文件进行保存。
如果使用多个 BIS 库来管理水深数据,并定义好其元数据结构。可以将定义好的元数据结构 XML 文件覆盖其他库的结构,这样就不需要对每一个 BIS 库重新定义元数据结构了。
第四个按钮的作用是诊断 BIS 数据库。如果 BIS 数据库出现问题,则在诊断的过程中会作出提示。
BIS 数据入库、检索和数据产品生成
ArcGIS Bathymetry 模块功能主要分为建库和管理两部分。在工具条中非常明显的将两部分功能使用分隔符号划分开来。
Manage Collections 工具实际上是一个数据入库时对采集信息进行录入的模板。如果不做任何的定义,在 Bag 数据入库时则需要每一个选项(最起码绿色点的必填项)输入。
在 Collection Name 上输入名称,然后设置好每一个字段的值,这样就成为一个初始模板(有点像 ArcMap 的编辑模板一样),在录入不同批次的数据时就可以快速的切换,提升数据入库效率。模板编辑好之后,大概如下图所示
Add Bathymetry 功能,用于添加 Bag 数据到 BIS 库中,是数据入库的功能。点击 【Add Dataset】按钮,可以选择一个或者多个 Bag 数据进行入库。
点击 Add 按钮之后,所选的 Bag 数据则全部罗列出来,其自带的元数据信息会识别出来。如下图所示:
其中预览图的显示样式是在上一节提及到的 Display 选项中设置的。Collection、Extended Metadata 则是上一节中自定义元数据输入的内容。下图【测量日期】字段,是在 Metadata 中自定义创建的。
在 Collection 项中,可以直接选择 Collection 的模块,实现元数据快速录入。如下图所示
设置好元数据信息之后,Bathymetry 工具自动将所有的 Bag 数据进行入库。
水深数据的入库可以分多次录入,不会对后期的检索造成影响。入库后,可以通过 Explore Bathymetry 工具对数据进行检索。
Explore Bathymetry 针对的是入库时所有的元数据信息,包括内置的和自定义部分的元数据。下图是使用自定义的元数据【测量日期】作为检索的条件,过滤出测量日期在 2018年4月1日至2018年5月16日 之间的数据,右侧则显示过滤的结果。如下图所示:
检索可以是多个条件进行过滤,并且可以将检索的过滤条件保存下来,便于下次进行直接加载。过滤后可以点击【预览】图标,快速的将过滤的结果加载到 ArcMap 中进行预览。
选中过滤的结果,点击右键,还可以有更多便捷的操作。如构编辑元数据和构建表面等,如下图所示
这里最重要的一点是将符合要求的水深数据过滤出来,然后制作成为表面,也就是常说的水深数据产品。使用 Add Selected to Compose Surface 选项快速将选中的加载到 Compose Surface 界面中。
Compose Surface 主要的作用是基于过滤出来的水深数据,进行表面构建。这里有一个重要的概念,名为 Surface Rules 。Surface Rules 从字面上的意思是表面的规则,但从技术角度上来看,它属于 Bag 数据的叠加顺序规则,通过元数据的选项,设定被选中的多个 Bag 数据的上下叠加顺序。它的设置分为 Attribute 和 Rule 两部分。Attribute 为定义的元数据属性,Rule 则是排序的顺序。下图是设定 Bag 数据的排序规则,对所选数据进行像元大小排序(即按照 Bag 数据的精度排序),网格像元小(精度高)的排在最上面。
由于采用的是 ArcGIS 的镶嵌数据集方式进行数据组织,因此,这个规则相当于对镶嵌栅格数据进行叠加排序。排序的规则可以是多个进行组合。例如可以数据测量的日期进行排序,将更细日期最新的放在最上面,这样可以确保更新区域在最地图最上面,遮挡对应区域较旧的数据,从而形成最新的水深数据产品。
跟过滤条件一样,在 ArcGIS Bathymetry 中,Surface Rule 同样是可以单独保存下来,便于下次加载使用。
设定好规则之后,便可以通过 Save Surface model 或者 Save Surface model as 将数据组织为水深产品。
Surface Model 本身是不单独导出原来原来的 Bag 数据,它只是通过关联方式将 Bag 重新组织到新的镶嵌数据集中。因此,笔者强烈建议在 BIS 库同一目录下创建一个名为 Product 的 GDB ,用于记录生成的水深产品,这样便于将原始库与产品库分开。
保存后的水深产品依然是镶嵌数据集,利用 ArcMap 加载如下
ArcGIS Bathymetry 管理和制作水深产品,整个过程非常流畅,而且提供了非常便捷的工具,无论是元数据的处理还是录入,以及产品的生成,每个过程都不重复生成数据,而是进行了有效的组织和组合。
水深产品的共享发布
利用 ArcGIS Bathymetry 制作的水深产品,可以通过 ArcMap 发布到 ArcGIS Server 中。使用的服务方式不是传统的 MapService ,因为 MapService 只能查看地图,而不能通过交互的方式查找对应位置的水深值。因此,必须要结合 Image Server 将水深产品发布为 ImageService 。
发布的方式是直接在 ArcMap 的目录窗口,选中水深产品的镶嵌数据集,右键进行发布。如下图所示:
总结
本章详细论述了 ArcGIS Bathymetry 模块从建库、元数据设计、Bag 数据入库、水深数据检索、水深产品生成以及共享发布整个过程。 ArcGIS Bathymetry 利用 ArcGIS 镶嵌数据集技术,贯穿了 ArcGIS 整个产品体系,利用 ArcGIS 通用的技术实现水深数据的有效管理和使用。
更多的GIS主流和非主流技术,可以持续关注CSDN的GIS制图乐园,以及微信公众号【GIS制图乐园】。BY 李远祥
以上是关于ArcGIS Maritime Server 开发教程ArcGIS Bathymetry 扩展模块的主要内容,如果未能解决你的问题,请参考以下文章
ArcGIS Maritime Server 开发教程Maritime Server 正确的开发模式
ArcGIS Maritime Server 开发教程Maritime Server 正确的开发模式
ArcGIS Maritime Server 开发教程Maritime Server 正确的开发模式
ArcGIS Maritime Server 开发教程Maritime Service 开发技巧