ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

时间:2024-04-05 14:40:26

ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

本章导读:ArcGIS 是一个成熟的 GIS 软件体系,无论是在海图的服务端管理、桌面软件使用还是海图功能定制方面,都有非常多的可选组合。本章节主要详细介绍 ArcGIS 软件体系中涉及海图的各个软件、各种组合以及不同的海图使用场景。 By 李远祥

ArcGIS 支持海图的软件产品

ArcGIS 软件体系对海图的支持在过去几个版本逐步完善,同时 Esri 也加入了国际海道测量组织(International Hydrographic Organization,缩写IHO) ,并且参与编制IHO新一代标准 S-100 系列工作。从巨头与IHO的合作可以看出,目前 IHO 的标准规范也逐步向 GIS 靠拢,而 GIS 也是逐步往海图方向渗透。
虽然可以看到明天的曙光,但就目前来说,S-100 系列标准还没真正的推广,现行的很多数据都是之前传统的 S-57 系列的,GIS 在使用这些数据从事信息化建设还是有种种的问题。为了尽可能减少一些技术壁垒,Esri 也做了非常大的努力,从 Martime Server 产品的方法可以看到全新的海图渲染引擎,并且更改了以往传统 GIS 方式发布海图服务的模式,避免了大量的海图配图工作。

笔者认为目前的 ArcGIS Martime Server 方案实属是一个无奈之举,由于新标准没有大力推行,所以更多的是支持老标准的数据,让人感觉无从发力。但 ArcGIS 软件改变了海图渲染引擎,确实是花了大量的力气。从当前新标准的使用来看,估计要过渡到 S-100 系列,还需要更长的时间。

ArcGIS 传统的两大件 ArcGIS Desktop 和 ArcGIS Server 属于通用 GIS 软件,原则上是不支持海图数据的,但 ArcGIS 开发了一系列的插件以及扩展模块来支持海图应用。以下先来看看各种组合对海图数据的支持情况:

桌面软件的组合

  • ArcMap + maritime Charting 桌面扩展
  • ArcMap + S-57 Viewer
  • ArcMap + 数据互操作模块
  • ArcMap + bathymetry 扩展

ArcMap + maritime Charting 扩展 这个组合非常强大,通过在ArcMap 中扩展海图数据的支持,并支持将 S-57 数据导入到 ArcGIS GDB中进行管理,是海图数据生产和海图产品制作的主要组合。
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

ArcGIS Maritime 扩展原来叫 ArcGIS Nautical Solution ,所以目前看到很多的工具的名称都没有改变过来。ArcGIS Maritime 桌面扩展是需要收费的扩展模块。

ArcMap + S-57 Viewer 这个组合中,S-57 Viewer 是一个免费的插件,需要单独安装,可以在 ArcGIS 的官方网站中下载。S-57 Viewer官方下载地址点击,目前最新版本为 2.2.0.9 。这个插件的介绍可以登录官方网站查阅。
初级玩家,笔者先推荐这个组合,因为 S-57 Viewer 是个免费的插件,没有特定的 ArcGIS 版本对照,非常人性。在没有安装该插件之前,通过 ArcMap 的目录窗口浏览到 .000 所在的目录,是不能看到对应的数据的。安装之后,可以看到 ArcMap 能够解析 .000 文件,并且通过插件的加载按钮,加载S-57 数据可以以标准的 S-52 图式显示,不需要配图显示。如下图所示
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

对于没接触过海图数据的开发者来说,笔者强烈推荐这个组合,这有助于非海图专业的人员快速进入角色,能在 GIS 中找到海图的对照。 S-57 Viewer 解析的海图数据,是按照 S-57 的命名标准来命名图层名称的,只是在图层后面加入下滑杠,标明点线面类型,例如 _A 为面要素,_P为点要素。

ArcMap + 数据互操作模块 这个组合属于通用组合,原则上跟海图没有关系,但数据互操作扩展模块是FME(著名的数据转换工具)在 ArcMap 上的扩展,能够支持各种平台的数据在 ArcGIS 软件中使用,当然也包括海图数据。

ArcMap + bathymetry 扩展模块 ,bathymetry 扩展模块是 ArcGIS 针对水深测量的扩展模块,可以做水深管理和海底三维地形的管理。bathymetry 扩展模块目前只有桌面版本,属于收费的扩展,是目前 ArcGIS 唯一一个支持 S-100 系列标准的扩展,其只是 S-102 的bag数据格式。具体的使用方式参考笔者之前的博文《使用 ArcGIS Bathymetry 管理水深数据》,有非常详细的记录。

服务器软件的组合

  • ArcGIS Server + Maritime Charting for Server
  • ArcGIS Server + Image Server扩展 + 桌面 Bathymetry 扩展

ArcGIS Server + Maritime Charting for Server 这个组合非常优秀,如果有大量的 S-57 数据需要发布,首选该组合,Maritime Charting for Server (以下简称 Maritime Server)属于 ArcGIS Server 的服务端扩展,使用它可以不需要将 S-57 数据转为 GDB 格式,而是直接将 S-57 数据放到对应目录即可完成发布, Maritime Server 内置了 S-52 显示引擎,可以直接在服务端自动按照 S-52 方式进行海图渲染。

笔者认为这个组合非常适合海图数据生产和发布分离的场景。因为有很多海图生产单位都是使用非常专业的海图数据生产系统进行数据生产和更新,如果切换到 ArcGIS 平台下进行生产,那是非常高成本,其中涉及到生产模式的改变,这是很多数据生产用户非常不乐意的。这个组合可以规避这个问题。生产单位可以继续沿用之前的生产模式,只要将数据导出为 S-57 格式,即可通过 Maritime Server 进行发布。

Maritime Server 支持增量数据的发布,直接将 .001、.002 等数据拷贝到同一级目录即可完成更新。 目前 Martime server 支持 S-57, AML, IENC, S-63 等数据。

ArcGIS Server + Image Server扩展 + 桌面 Bathymetry 扩展 这个组合是水深管理和水下地形展示的解决方案,看起来比较奇怪,尤其是将桌面的 Bathymetry 扩展引入进来。原因是 ArcGIS Server 目前还没有 Bathymetry 的服务器扩展,其对 Bag 数据格式的支持,是通过 桌面 Bathymetry 扩展写入到 GDB 的镶嵌数据集中,利用镶嵌数据集发布出来。而发布镶嵌数据集的数据格式,就需要使用到 Image Server 扩展。

笔者会在后续的开发教程中会介绍如何使用该组合来发布水下三维服务。

开发 SDK 和 API

  • ArcGIS JavaScript API
  • ArcGIS Runtime
  • ArcGIS Portal
  • 内置的 WebApplications 查看器

ArcGIS JavaScript API 是非常通用的 ArcGIS Web 端开发 SDK 。ArcGIS JavaScript API 可以在 ArcGIS 开发者网站上免费下载,其包含 API 和 SDK 帮助说明,全英,没有中文版。熟悉 ArcGIS JS 开发的都人员,基本上不需要太多的学习就可以切换到海图的开发中,因为 Maritime Server 支持发布成标准的 ArcGIS Server 的 MapService 服务。目前 ArcGIS JS API 存在两套版本,分别是 3.x 和 4.x ,默认是4.x ,开发者也可以通过链接跳转到 3.x 的下载。

ArcGIS JavaScript API 是免费下载的,但需要的海图服务就必须使用 ArcGIS Server 和 Maritime Server 发布的服务(费用就在服务器端软件)。现行两套版本如何选择?如果只是开发二维海图应用,并且是熟悉 ArcGIS JS 开发的,笔者建议使用 3.x 版本;如果需要开发Web 3D 海图应用的,那就用 4.x 版本,因为 4.x 版本是面向二三维一体化的。

ArcGIS Runtime SDK 是 ArcGIS 支持夸平台开发的 SDK 产品,它不是一个产品的名称,而是一系列开发产品的总称。使用 ArcGIS Runtime 可以开发移动端和PC端的 GIS 应用。
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列
Runtime 产品支持所有的操作平台,支持多种开发语言,开发者总能在Runtime 产品中找到一个产品适合自身技术和需求的开发版本。ArcGIS Runtime 是支持在线的海图服务以及离线的海图数据的。其开发接口与JS API 命名基本相符,其实各个版本下 Esri 基本上都会保证其开发接口的一致性,这样在使用不同语言和不同的操作环境下,开发人员都有一个非常好的体验。
在最新的 ArcGIS Runtime 100.2中加入了 hydrography 模块,能够直接支持 ENC 数据的加载,并且特别注明了 .000 格式,如下图
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

这样可以确保在所有的终端中,哪怕是海上没有信号的情况下,都可以通过智能操作系统使用 .000 数据。

Runtime 全线产品都加入了 hydrography 模块,确保在所有使用场景下都支持 ENC 。从这里可以看到 Esri 对海图的重视程度。

ArcGIS Portal 原则上 ArcGIS Portal 不是一个开发产品,它是 ArcGIS 的门户网站,但它提供了非常好的地图显示和轻应用制作。通过 Portal 的 MapViewer 界面可以直接加载海图服务,并制作成 WebMap ,WebMap 可以在 WebAppBuilder 中制作轻应用;并且 ArcGIS 提供的所有的免费和收费的客户端,都支持 WebMap 格式,这使得海图在 ArcGIS 全线产品都可以调用。
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

通过 ArcGIS Portal 的场景查看器,可以看查看三维的水深。
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

ArcGIS Portal 中集成的 WebAPPBuilder 还支持 Widget 的方式进行扩展,在 GitHub 中已经放出海图的 Widget ,经过配置可以将其注入到 Portal 中直接使用。

这种模式比较适合海图的快速应用和跨平台使用,不需要任何的开发,是懒人的不易之选。

内置的 WebApplications 查看器 在 Maritime Server 的安装目录中默认拷贝了一个内置的 WebApplications 查看器,名为 Pod ,通过修改其应用的配置文件,部署在 Web Server 中即可通过页面方式使用常规的海图功能。
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列
这种方式基本上不依赖其他环境,如 Portal ,属于典型的单独的 Viewer 应用。当然,如果不希望重写所有代码,在其界面上做一些修改,也可以实现海图的浅层次应用。

这是附带的应用程序代码,没有许可限制,而且全部是明码开放。如果想进一步了解海图的开发代码,可以阅读它的代码。

Pod 应用的代码也是写得相当规范的。
ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列

ArcGIS 海图产品的使用场景

从上面的介绍可以看到 ArcGIS 全线产品对海图的支持程度。那么,什么样的应用场景下选择什么样的产品,那就非常重要了。

  • 场景1 非海图专业,需要叠加海图数据进行制图或者调用海图作为底图

这类型的使用场景不涉及海图的生产以及海图的制作,但需要使用到海图数据或海图服务。例如近海生态监测、海底电/光缆、海洋渔业等叠加海图和专题图进行专题地图制作,目的是生成电子地图或纸质地图。

这种场景一般使用 ArcMap + S-57 Viewer 组合就行了。主要是依赖 ArcMap 的强大制图功能,S-57 Viewer 的作用是直接加载海图数据作为底图,作为该专题地图的参考部分。

  • 场景2 涉及海图的移动端或PC端的单机应用

这类型跟场景1有点类似,只不过是将海图作为底图参考,叠加在 GIS 的应用中,属于弱海图应用场景。

这种场景为单机版或移动单机版涉海图应用开发,建议直接使用 ArcGIS Runtime 进行开发即可。

  • 场景3 基于 Web 的海图业务应用

这种类型属于强海图应用,需要对海图数据进行管理和业务应用定制,这就不能单使用桌面工具来进行了。

这种场景推荐使用 ArcGIS Desktop + ArcGIS Server + Maritime Server 组合,进行电子海图服务的发布和管理。使用 ArcGIS JavaScript API 进行定制开发。如果还考虑移动端应用,则再增购 ArcGIS Runtime 产品。

  • 场景4 纯海图数据生产和海图生成

这种类型属于生产型的需求,也是强海图需求。一般情况下,海图的数据成产部门都有自己的习惯使用的生产系统,例如 HPD ,使用方式完全转向 GIS 似乎不太现实,海事测绘一般很少这样转变,航道单位不以生产海图数据为主,可以使用 ArcGIS Desktop + Maritime Charting 桌面扩展。

这种模式很好的做海图数据的集中管理(以GIS的方式),通过 NIS 库的方式进行数据管理和分发,生产各种的电子海图数据产品。

如果数据成果需要以 GIS 方式发布(因为 NIS 库本身就基于 GDB 方式构建),可以增购 ArcGIS Server 。

  • 场景5 水深数据管理,水下三维地形展示

这类型也属于强海图使用场景,适用于对水深比较敏感的单位,如海洋测绘、港口管理、航道管理等。

其组合的产品为 ArcGIS Server + Image Server扩展 + Bathymetry 桌面扩展。它的好处是将水深数据管理起来,创建各种的水深数据版本和水深数据产品,将上亿的水深点以 GIS 的形式管理起来,便于水深的查询和展示。

  • 场景6 海图服务管理和发布

属于海图测绘信息中心关注的内容。没有更多的业务需求,业务的应用都在其他的业务科室或其他的兄弟单位,信息中心只负责提供基础的海图数据和海图服务。

这种场景建议使用 ArcGIS 海图的”全家桶”,包括 ArcGIS Desktop、Martime Charting 桌面扩展、Bathymetry 桌面扩展、ArcGIS Enterprise(包含 ArcGIS Server 和 ArcGIS Portal)、Image Server 扩展、Maritime Server 扩展。

本章总结

本章节对 ArcGIS 全线产品涉及海图部分做了全面的介绍,在不同的使用场景中选择不同的 ArcGIS 软件产品。

更多的GIS主流和非主流技术,可以持续关注CSDN的GIS制图乐园,以及微信公众号【GIS制图乐园】。BY 李远祥