AVCS 在线网页地图服务文档

438 阅读11分钟

1.介绍

此文档详细阐述了你如何向AVCS在线服务发起WMS(网页地图服务)请求。

它应被用于将AVCS在线服务集成到你的网页应用中。

2.WMS请求

网页地图服务(WMS)请求用于生成地图输出。

通过指定WMS请求多样的参数可以控制地图的显示细节。

更多细节关于WMS请求和参数在这篇文档中被提供,并附有实例请求的URL。

2.1 用GetCapabilities获取Map Token

你的第一个向AVCS在线服务发起的请求一定是GetCapabilities请求,它携带你的UKHO(英国海道测量局) B2B 认证的JWT。

这个GetCapabilities请求返回一个标准OGC(Open Geospatial Consortium) WMS响应,描述了服务支持的操作和参数。

它包含你的Map Token使得你的网页应用能够使用AVCS在线服务。

AVCS在线服务测试环境是预生产环境

参数 示例值 描述
Token <<token>> UKHO REST B2B服务生成的认证令牌
SERVICE WMS 指明被请求的服务是WMS
REQUEST GetCapabilities 获取元信息的方法,包括支持的操作与参数,和一个可用层的列表。
VERSION 1.3.0 WMS的版本
licenseId 73706 舰队管理者许可ID
userRef ABC123456 分销商特定的唯一用户引用

示例:

https://admiralty.azure-api.net/avcso-dev/AVCS/WMS/?service=wms&version=1.3.0&request=GetCapabilities&token=<<Token>>&licenseId=73706&userRef=123412

注意:所有请求必须也包含如下的请求头

Ocp-Apim-Subscription-Key=<<subscription key>>

GetCapabilities请求可以允许用户在30分钟内访问系统。超时后首次请求提供的令牌将失效。需要续期Map Token的话,请看关于续期的章节。

2.2 用GenerateToken续期Map Token

一单你的系统被GetCapabilities请求完成认证,所有子请求可以直接向地图服务发送。生成的Map Token在30分钟内有效。

Map Token续期不需要退出你的应用重新登录,应用可向admiralty.azure-api.net/avcso-dev/t…端点发送请求。

此请求必须包含以下参数

参数 示例值 描述
Token <<token>> UKHO REST B2B服务生成的认证令牌
licenseId 73706 舰队管理者许可ID
userRef ABC123456 分销商特定的唯一用户引用

此请求会返回一个Map Token ,所有向地图服务发送的子请求都应携带,细节见下面的章节。

请注意,不要将它和UKHO REST B2B 生成的令牌混淆。 注意:所有请求必须也包含如下的请求头

Ocp-Apim-Subscription-Key=<<subscription key>>

示例请求:

https://admiralty.azure-api.net/avcso-dev/tokens/generateToken?LicenseID=73706&UserRef=123456&Token=<<Token>>

示例成功响应:

{
    "token": "cui_FGKST19-IJ1W_M-lq7UBZSP_hQjt21THZ4FsQDJOc.",
    "expiration": "2019-02-06T14:32:07.088Z"
}

示例错误响应:

{
    "correlationId": "05937d60-3e14-4980-bd26-29c70e79ac73",
    "errors": [
        {
            "source": "generateToken",
            "description": "Forbidden"
        }
    ]
}

2.3 生成地图输出

WMS请求用于根据请求中指定的参数生成地图输出。下面的章节将概括标准的WMS参数和在AVCS线上解决方案中应用的附加显示参数。

2.3.1使用标准WMS GetMap参数

下面是标准的OGC GetMap请求参数,可被用于所有GetMap请求。使用这些参数将显示一张基于默认IHO S-52标准的地图。

标准参数如下:

参数 示例值 描述
Token <<token>> UKHO REST B2B服务生成的认证令牌
licenseId 73706 舰队管理者许可ID
userRef ABC123456 分销商特定的唯一用户引用
SERVICE WMS 指明使用的是WMS服务
REQUEST GetMap 指明是一个GetMap请求
FORMAT image/png 输出图片的格式
TRANSPARENT TRUE 将背景色设为透明
VERSION 1.3.0 WMS版本
LAYERS 21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 选择显示的图层列表,如不指定则显示所有图层,详见下面关于图层的描述
WIDTH 1000 输出图片宽度
HEIGHT 1000 输出图片高度
CRS EPSG:3857 空间标准
BBOX -4199759.866962299,4999896.148476938, 3025679.5427769204,9055339.121174172 图框坐标

2.3.1.1 最优化瓦片尺寸

在可视区域内变化时一些API不能够动态计算最优的瓦片大小当地图尺寸。

在这些情况下,推荐使用1100的瓦片尺寸。

这最好的平衡了客户端反应时间与向WMS服务发送的请求数量。

在基础参数基础上,以下参数是必须的,请注意使用瓦片尺寸参数下,WIDTH,HEIGHT,BBOX参数不是必须的。

参数 示例值 描述
tileSize 1100 网格中瓦片的宽度和高度

示例请求:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&tileSize=1100&CRS=EPSG:3857&UserId=<<UserId>>&userRef=ABC123456

2.3.1.2 LAYERS参数

LAYERS参数是标准的WMS请求参数,一组用逗号分隔的列表,可以使客户端控制在最终计算图形中图层是否显示和显示顺序。

对于AVCS在线来说,WMS层和ViewOverGroups是同一概念,使用WMS LAYERS参数可以使客户端控制基于S-52标准的视图组开关。

如果不指定LAYERS参数,默认行为将被执行,即依据默认的顺序显示所有图层。

需要被注意的是,指定图层的顺序和图层被渲染在图片上的顺序是相反的(请看下面示例)。

LAYERS参数的值如下:

层名称 层名称ID 描述 进一步描述
Display Base 0 仅显示 Display Base 组
Drying line 1 仅显示 Drying line 海岸线,安全区
Buoys, beacons, structures, aids to navigation 2 仅显示浮标灯塔供导航用
Lights 3 仅显示 光线
Boundaries and limits 4 仅显示 边界和限制 清扫区、航道、锚地、货物转运区
Prohibited and restricted areas 5 仅显示 禁止区、限制区 禁入区、警戒区、军事训练区、近岸经济区、海上飞机着陆区、潜艇运输区
Chart scale boundaries 6 仅显示 图标比例尺
Cautionary notes 7 仅显示 警告标记
Ships' routeing systems and ferry routes 8 仅显示 航线
Archipelagic sea lanes 9 仅显示 群岛海道
Standard Miscellaneous 10 仅显示 标准杂项
Spot soundings 11 仅显示 现场探测
Submarine cables and pipelines 12 仅显示 潜艇线缆管道
All isolated dangers 13 仅显示 孤立危险
Magnetic variation 14 仅显示 磁力变化
Depth contours 15 仅显示 深度轮廓
Seabed 16 仅显示 海床
Tidal 17 仅显示 潮汐
Low accuracy symbol 18 仅显示 不精确的标注
Shallow Water Pattern 19 仅显示 浅水模式
Other Miscellaneous 20 其他杂项
Admiralty Information Overlay 21 仅显示 Admiralty信息遮罩

示例-显示所有图层/视图组:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&LAYERS=21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=-178955.85052648446,6562022.126722074,-169401.22199085026,6571576.755257708&UserId=<<UserId>>&userRef=ABC123456

示例-仅显示海床图层/视图组:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&LAYERS=16&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=-178955.85052648446,6562022.126722074,-169401.22199085026,6571576.755257708&UserId=<<UserId>>&userRef=ABC123456

示例-显示Base, Spot soundings and Depth contours图层/视图组

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&LAYERS=15,11,0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=-178955.85052648446,6562022.126722074,-169401.22199085026,6571576.755257708&UserId=<<UserId>>&userRef=ABC123456

2.3.2 使用标准WMS GetFeatureInfo 参数

下面是可以用于所有标准WMS GetFeatureInfo请求的参数。WMS GetFeatureInfo 请求可被用于在某一指定点的获得属性信息。

WMS GetFeatureInfo 请求标准参数如下:

参数 示例值 描述
Token <<token>> UKHO REST B2B服务生成的认证令牌
licenseId 73706 舰队管理者许可ID
userRef ABC123456 分销商特定的唯一用户引用
SERVICE WMS 指明使用的是WMS服务
REQUEST GetFeatureInfo 指明是一个GetFeatureInfo请求
FORMAT image/png 输出图片的格式
TRANSPARENT TRUE 将背景色设为透明
VERSION 1.3.0 WMS版本
LAYERS 21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 选择显示的图层列表,如不指定则显示所有图层,详见下面关于图层的描述
WIDTH 1000 输出图片宽度
HEIGHT 1000 输出图片高度
CRS EPSG:3857 空间标准
BBOX -4199759.866962299,4999896.148476938, 3025679.5427769204,9055339.121174172 图框坐标
info_format text/html 返回格式为text/html, text/xml 或 application/json
query_layers 21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 需要获取信息的图层。
i 513 从最左为0的x坐标
j 236 从最上为0的y坐标

如果返回值为JSON,另一个参数也需要&f=pjson

注意:GetFeatureInfo请求是基于具体地图图片。因此 WIDTH, HEIGHT, BBOX, CRS 和 LAYERS 参数用于计算查找点位置。

示例-查询所有层:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?SERVICE=WMS&REQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=-106653.58774060296,6561850.143408402,-105459.25917374791,6563044.471975257&info_format=text/html&LAYERS=20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0&query_layers=21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0&i=513&j=236&Userid=<<UserId>>&token=<<token>>

注意:此端点需要使用可被访问的图片文件。

2.3.3使用AVCS在线WMS特定的参数

此章节将概括不同的WMS参数。

2.3.3.1 ForceCharts WMS参数

强制地图参数用于向AVCS在线指定显示优先级。

如果该参数不被指定,将默认显示最近发布的海图。

示例值显示如下:

参数 示例值 描述
forceCharts forceCharts=GB5X01NW,GB5X01NE,GB4X0000 海图显示优先级

注意:此参数可被用于GetMap 、 GetFeatureInfo请求。

2.3.3.2 Display_params WMS参数

显示参数用于指定控制输出样式。显示参数使用JSON定义,全部参数列表请查看2.3.4

2.3.3.3 DisplayCategory 显示参数

此参数用于指定显示分类。 显示分类被定义于IHO S-57中查找表中,使得客户端可以打开或关闭其中定义的特征组。

显示分类参数的值如下所示

分类 描述
1 DISPLAYBASE S-52标准中定义的DISPLAYBASE
2 STANDARD S-52标准中定义的STANDARD
4 OTHER S-52标准中定义的OTHER

注意:其值可以合并使用,逗号分隔

示例-DisplayBase:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=110217.37076169756,6505991.396331931,186654.3990467708,6582428.424617005&UserId=<<UserId>>&Display_params={"ECDISParameters":{"version":"10.6.1","DynamicParameters":{"Parameter":[{"name":"DisplayCategory","value":"1"}]}}}&userRef=ABC123456

示例-Standard:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=110217.37076169756,6505991.396331931,186654.3990467708,6582428.424617005&UserId=<<UserId>>&Display_params={"ECDISParameters":{"version":"10.6.1","DynamicParameters":{"Parameter":[{"name":"DisplayCategory","value":"2"}]}}}&userRef=ABC123456

示例-Other:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=110217.37076169756,6505991.396331931,186654.3990467708,6582428.424617005&UserId=<<UserId>>&Display_params={"ECDISParameters":{"version":"10.6.1","DynamicParameters":{"Parameter":[{"name":"DisplayCategory","value":"4"}]}}}&userRef=ABC123456

示例-Combined:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?token=<<token>>&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=110217.37076169756,6505991.396331931,186654.3990467708,6582428.424617005&UserId=<<UserId>>&Display_params={"ECDISParameters":{"version":"10.6.1","DynamicParameters":{"Parameter":[{"name":"DisplayCategory","value":"1,2"}]}}}&userRef=ABC123456

2.3.3.4 SafetyContour显示参数

安全线参数用于设置安全线深度。 安全线参数的值如下所示

描述
0 安全线深度0米
10 安全线深度10米
30 安全线深度30米
40 安全线深度40米

示例-安全线深度=0 米:

https://avcs-preprod.admiralty.co.uk/server/rest/services/AVCS/MapServer/exts/MaritimeChartService/WMSServer?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&VERSION=1.3.0&WIDTH=1000&HEIGHT=1000&CRS=EPSG:3857&BBOX=-173048.7014349383,6567074.136560182,-162930.34981570172,6576924.95858042&Display_params={"ECDISParameters":{"version":"10.6.1","DynamicParameters":{"Parameter":[{"name":"LabelContours","value":2},{"name":"LabelSafetyContours","value":2},{"name":"SafetyContour","value":0}]}}}&UserId=<<UserId>>&userRef=ABC123456&token=<<token>>

2.3.3.5 AIO特征显示参数