ArcGIS Maritime Server 开发教程(一)了解 ArcGIS Maritime Server

ArcGIS Maritime Server 是ArcGIS平台面向海洋、海事以及航道等行业发布的海图发布平台。Maritime Server 与之前 Nautical Solution 有着较大的差别,在地图渲染、地图发布、使用模式上均重新进行了设计,在管理和易用性方面都有了非常大的改进。由于 Maritime Server 没有中文的版本,国内使用的也不多,相对于ArcGIS Server 庞大的使用群体,Maritime Server 相对来说算是小众软件了,相当缺乏资源。为此,笔者专门编写一个简易教程,目的是为了让从事海洋相关专业以及相关行业开发人员,能够快速的了解 Maritime Server ,并且能使用 ArcGIS API 对齐进行二次开发,满足行业使用。 特别说明,Maritime Server 在ArcGIS 10.3 版本推出,本次教程使用的ArcGIS 版本为10.5.1 。 By 李远祥

ArcGIS Maritime Server 架构

ArcGIS Maritime Server 是 ArcGIS Server 的海图扩展模块,其功能需要依赖 ArcGIS Server ,需要 ArcGIS Server 作为其基本支持。可以看看官方资料关于 Maritime Server 的一个定位。

从上述的架构可以看出,其主要作用是直接使用海图数据 S-53,S-63 等数据,通过ArcGIS Server 的 SOE 技术进行封装了Maritime Chart Service 引擎,所有的请求与返回均通过ArcGIS Server 标准协议进行。其次是海图服务的可配置性,可以通过配置文件来支持数据的投影转变、图层配置以及 S-52 样式显示以及符号定制。

这与ArcGIS 10.3 之前的 Nautical Solution 不太一样,不需要通过将数据转换为GDB进行配图,在通过 ArcGIS Server 发布标准地图服务。笔者认为目前的这种模式,更好的将海图生产和发布分割开来,不需要改变用户原来海图的生产模式,直接将海图成果进行发布。

ArcGIS Maritime Server 部署

部署的方式很简单,先部署好 ArcGIS Server,然后安装 ArcGIS Maritime Server 扩展,这个安装过程很简单,按照向导提示即可完成。最后指向 Maritime Server 的授权文件即可按成安装。
安装完成后需要进行简单的设置。需要进入 ArcGIS Server Manager ,选择[站点],在【扩展】标签中,选择【添加扩展】按钮,到 Maritime Server 的安装目录中,选择 MaritimeServer.seo 文件。

MaritimeServer.seo 文件一般放在诸如 C:\Program Files\ArcGIS\MaritimeServer\Server10.5\Bin 中。由此可见,Maritime Server 确实是 ArcGIS Server 的一个SOE扩展程序。

ArcGIS Maritime Server 发布海图服务

ArcGIS Maritime 发布海图服务,不像传统方式需要对数据进行转换、配图、链接ArcGIS Server ,通过 ArcMap 软件发布,它的发布和管理方式更加简便。
任何的一个 Maritime Chart Service ,都是依赖一个已有的地图服务,通过扩展其能力进行发布的。在已有的地图服务中,点击【编辑】,在【功能】标签中,可以开启 Maritime Chart Service 服务,如下图所示


在其页面下半部分,属性中可以配置 Maritime Chart Service 服务所在的各种路径。

这个【属性】的配置是一组文件夹,在 Maritime Server 安装的时候,会将这个目录结构复制到安装目录中,其目录在 \Program Files\ArcGIS\MaritimeServer\Server10.5\maritimechartservice

这四个目录分别用来存放Maritime 的配置文件、S57 S63数据、日志文件、海图服务场景文件 。

海图服务默认的配置路径是在 ArcGIS Server 的配置目录 arcgisserver\directories 中。最便捷的方法是在这个目录下创建一个名为 maritimeserver 目录,将 \Program Files\ArcGIS\MaritimeServer\Server10.5\maritimechartservice 整个目录拷贝到其中。

当然,这个目录是可以根据海图服务进行配置的。每一个服务如果采用不同的配置,可以将没修改过的 maritimechartservice 目录拷贝到其他存储位置进行配置,确保多个海图服务的配置不会打架。

Maritime Chart Service 发布很简单,直接将 S-57 数据拷贝到服务对应的配置目录 datasets 中,如下图所示

ArcGIS Maritime Server 支持增量发布 S-57 数据,如.001、.002 等,直接将增量数据放在.000的同一级目录即可。

拷贝完数据之后,需要通过 ArcGIS Server Manager 页面重启 Maritime Service 对应的地图服务。如果配置没有问题,重启服务后在 maritimechartservice\sencs 目录下看到被解析后的海图场景文件.senc文件,如下图所示

ArcGIS Maritime Service 服务访问

发布成功之后,ArcGIS Maritime Service 具有其特定的访问地址。其地址有两部分组成,前部分海图服务依赖的基础服务地址,后部分是 Maritime Service 扩展的地址。下面是一个完整的海图服务地址
http://nsdemo.esri.com/arcgis/rest/services/SampleWorldCities/MapServer/exts/MaritimeChartService/MapServer
这个服务地址是依赖于 ArcGIS Server 发布的 SampleWorldCities 服务,在此基础上开启了海图功能。exts 后面的部分是对应海图服务的几种服务形式,目前支持 ArcGIS 的 MapServer、 WMSServer 以及 AISServer 三种形式。

尽管有目前有三种服务的形式可以访问,但笔者还是建议使用 ArcGIS MapServer 方式,这样跟ArcGIS 的 JavaScript API 契合得比较好。使用传统的 ArcGIS JS API 可以快速的上手。后面的教程将会针对 ArcGIS JS API 的开发进行编写。

点击进 MapServer 的服务,跟传统的 ArcGIS 服务的界面没什么太大的区别,但页面部分就不能像 ArcGIS Server 的服务那样点击 JavaScript 按钮进行预览。

如果需要预览,必须通过编写一个简单的页面进行加载。页面的编写可以使用 ArcGIS JS API 进行调用。下面是一个简单的海图服务调用和预览的例子。


<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" /><title>加载海图服务</title><link rel="stylesheet" href="https://js.arcgis.com/3.23/esri/css/esri.css"><style>html,body,#map {height: 100%;margin: 0;padding: 0;}</style><script src="https://js.arcgis.com/3.23/"></script><script>var map;require(["esri/map", "esri/layers/ArcGISDynamicMapServiceLayer", "dojo/domReady!"], function (Map, DynamicLayer) {map = new Map("map");//加载基础底图var basemap = new DynamicLayer("http://nsdemo.esri.com/arcgis/rest/services/SampleWorldCities/MapServer");map.addLayer(basemap);//加载海图服务var enc84 = new DynamicLayer("http://nsdemo.esri.com/arcgis/rest/services/SampleWorldCities/MapServer/exts/MaritimeChartService/MapServer");map.addLayer(enc84);});</script>
</head><body><div id="map"></div>
</body></html>

其预览结果如下

总结

所谓"工欲善其事,必先利其器"。在进入开发之前,先了解清楚 ArcGIS Maritime Server 的体系结构,是非常有必要的。这可以让我们在后续的开发过程中更加清晰明白其运行机制,这对功能开发很有帮助。

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

ArcGIS Maritime Server 开发教程(一)了解 ArcGIS Maritime Server相关推荐

  1. ArcGIS Maritime Server 开发教程(七)Maritime Server 正确的开发模式

    ArcGIS Maritime Server 开发教程(七)Maritime Server 正确的开发模式 本章导读:前面几个章节已经非常细节的分析和测试了 Maritime Server 的相关功能 ...

  2. ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧

    ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧 本章导读:GIS 开发人员基于 Maritime Service 开发海图应用时总会遇到与海图数 ...

  3. ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践

    ArcGIS Maritime Server 开发教程(四)Maritime Service 开发实践 本章导读:Maritime Service 属于 MapService 的一个扩展,大部分功能继 ...

  4. ArcGIS Maritime Server 开发教程(三)Maritime Service 功能解读

    ArcGIS Maritime Server 开发教程(三)Maritime Service 功能解读 本章导读:ArcGIS Maritime Server 能够以极简的方式发布海图服务,其服务的标 ...

  5. ArcGIS Maritime Server 开发教程(九)二三维水深服务

    ArcGIS Maritime Server 开发教程(九)二三维水深服务 本章导读:ArcGIS 软件体系是使用 ArcGIS Bathymetry 桌面扩展构建和管理水深数据库,并且利用 Imag ...

  6. ArcGIS Maritime Server 开发教程(八)ArcGIS Bathymetry 扩展模块

    ArcGIS Maritime Server 开发教程(八)ArcGIS Bathymetry 扩展模块 本章导读:ArcGIS Bathymetry 扩展是 ArcGIS Maritime 解决方案 ...

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

    ArcGIS Maritime Server 开发教程(二)ArcGIS 海图软件系列 本章导读:ArcGIS 是一个成熟的 GIS 软件体系,无论是在海图的服务端管理.桌面软件使用还是海图功能定制方 ...

  8. ArcGIS Engine基础开发教程(转)

    ArcGIS Engine基础开发教程(0)--目录 <ArcEngine9.3 基础开发教程>是面向初中级开发者的一份简单易用,功能全面的学习资料及参考文档.教程首先从如何来创建一个Ar ...

  9. ArcGIS Server开发教程系列(3)切片

    切片工作,我们可以一级一级的切,也可以,所有的一块切,Recreate All Tiles这项是说,在没有进行任何的切片工作时,可以选用这项:Recreate Empty Tiles这项是说,如果之前 ...

最新文章

  1. WWW 2021 | 融合先验知识的BERT注意力模型
  2. Linux学习之六-Yum命令的使用
  3. 《最后生还者:第二部》文学批评
  4. 【招聘(重庆)】新空间(重庆)科技有限公司招聘.NET Core
  5. Pixysoft.Framework.Noebe.Comets开发实录
  6. 【python】时间处理函数以及文件操作
  7. Python+tkinter模拟京东登录时拖动图片式验证码
  8. web安全工具 御剑后台扫描layer子域名挖掘机
  9. Learning Transferable Features with Deep Adaptation Networks
  10. 面向对象与面向过程编程的区别
  11. Java实现 LeetCode 37 解数独
  12. Marvell 88E1111 百兆工程 (FPGA)
  13. cie1931 python绘制_科学网-gnuplot与CIE1931 XYZ三刺激值曲线-范学良的博文
  14. 他一个人干掉了5个装甲军
  15. 入门学习-Python-小甲鱼学习资料-Day031-永久存储:腌制一缸美味的泡菜
  16. 解决项目Unable to find GatewayFilterFactory with name CacheRequestFilter错误
  17. 配置Log4j(很详细)
  18. 【英语:语法基础】B1.核心语法-名词与代词
  19. 2019年中国政企机构网络安全形势分析研究
  20. 单片机C语言视频教程转让

热门文章

  1. 机器视觉检测技术在汽车行业中的应用
  2. 精灵盛典显示跨服服务器繁忙,精灵盛典应用商店下架了什么情况 精灵盛典下架原因是什么...
  3. Pytorch DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ
  4. mysql慢查询日志默认在哪里_MySQL 慢查询日志
  5. 架构对比(CPU、GPU、FPGA、ASIC、DSA……)
  6. 程序员笔记逆波兰表达式计算
  7. 使用opencv查找两张图片不同的部分
  8. 海康设备NVR、IPC取rtsp流格式
  9. 实用的twitter客户端:Twitterrific for Mac
  10. Linux 查看内核 系统 等软件版本命令