WMS 服务始终需要熟知 EPSG Id,如 EPSG:4326。此 ID 用于公布 WMS 功能文件中支持的空间参考系统,并用于请求采用特定投影的地图。但是,许多自定义空间参考系统并不与任何官方 EPSG ID 相关联。
ArcGIS Server WMS 服务可用于在 WMS 服务中定义自定义投影或投影的熟知文本 (WKT) 表示。如果您的自定义空间参考系统不与官方 EPSG ID 相关联,则此项功能尤其有用。例如,WMS 服务的发布者和使用者可以进行以下操作:
- 将 ID 分配给自定义投影并通过 WMS 功能文件公布。
- 使用 WKT 字符串覆盖现有投影。
- 通过直接指定熟知文本请求采用特定投影的地图。
使用 listCustomCRS 属性定义自定义投影
要定义和提供自定义空间参考系统,需要将 listCustomCRS 属性添加到 WMS 服务。在 10.7 版本中,可以使用 Manager 配置此属性。
在 10.7 之前,只能使用 ArcGIS Server 管理员目录配置此属性。要配置此属性,请执行下列步骤:
- 在浏览器中打开管理员目录并登录。该目录的典型 URL 是 https://gisserver.domain.com:6443/arcgis/admin/。
- 单击服务。
- 在文件夹 - /页面中,单击要编辑的已启用 WMS 的地图服务的名称。如果列表中未显示该服务,则它可能位于根文件夹下的某一个子文件夹内。
- 在服务 - <服务名称> (MapServer) 页面上,滚动至底部并单击编辑。
- 在服务属性对话框中,找到 "typeName": "WMSServer" 部分。
- 在 "properties": { 部分内,添加 listCustomCRS 属性,并定义自定义投影或投影的 WKT 表示。
现在,您可以为自定义投影定义默认 EPSG ID,或将特定 EPSG ID 分配给 WKT 字符串。
定义默认自定义投影
要定义 WMS 服务的默认自定义投影,可以通过将 "EPSG:<ID>=DEFAULT" 追加到 listCustomCRS 属性来将任意 EPSG ID 分配为自定义投影的熟知 ID,例如:
"properties": {
"listCustomCRS": "EPSG:200001=DEFAULT",
...
在本例中,已将 EPSG:200001 分配为自定义投影的熟知 EPSG ID。
使用 WKT 定义自定义投影
要定义 WMS 服务的自定义投影,可以通过将 "EPSG:<ID>=<custom projection WKT>" 追加到 listCustomCRS 属性将任意 EPSG ID 分配给自定义投影的 WKT 字符串。将会通过 WMS 服务的功能文件提供 EPSG:<ID>。此外,您还可以使用此方法覆盖现有投影的定义。
在以下示例中,已将 EPSG:200002 分配给 WKT 字符串所表示的自定义投影,并且还使用另一个 WKT 字符串覆盖了 EPSG:3857 的定义:
"properties": {
"listCustomCRS":"EPSG:3857=PROJCS[\"International_1924_UTM_Zone_30N\",GEOGCS [\"GCS_International_1924\",DATUM[\"D_International_1924\",SPHEROID [\"International_1924\",6378388.0,297.0]],PRIMEM[\"Greenwich\",0.0],UNIT [\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER [\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER [\"Central_Meridian\",-3.0],PARAMETER[\"Scale_Factor\",0.9996],PARAMETER [\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]];EPSG:200002=GEOGCS [\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM [\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433],METADATA [\"World\",-180.0,-90.0,180.0,90.0,0.0,0.0174532925199433,0.0,1262]]"
...
使用 WKT 请求特定投影
下面的示例演示了如何在 GetMap 请求中定义投影的 WKT 表示从 WMS 服务中请求采用特定投影的地图。
GetMap 请求示例
http://gisserver.domain.com:6080/arcgis/services/service/MapServer/WmsServer?VERSION=1.3.0&REQUEST=GetMap&CRS=PROJCS["International_1924_UTM_Zone_30N",GEOGCS["GCS_International_1924",DATUM["D_International_1924",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]&BBOX=-116627.343234,3913652.137231,1206619.240498,4885411.347159&WIDTH=1024&HEIGHT=752&LAYERS=Color,Trama,Contactos&STYLES=,,&EXCEPTIONS=xml&FORMAT=image/png&BGCOLOR=0xFEFFFF&TRANSPARENT=TRUE