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>>