Skip To Content

Defining a custom projection for a WMS service

A well-known EPSG ID, for example EPSG:4326, is always necessary in WMS services to advertise supported spatial reference systems in WMS capabilities files, or to request maps in particular projections. However, many custom spatial reference systems are not actually associated with any official EPSG ID.

ArcGIS Server WMS services allow you to define a custom projection or well-known text (WKT) representation of a projection in a WMS service. This is particularly useful if your custom spatial reference systems are not associated with an official EPSG ID. For example, publishers and consumers of WMS services can:

  • Assign IDs to custom projections and advertise them through the WMS capabilities file.
  • Overwrite an existing projection with a WKT string.
  • Request a map in a particular projection by directly specifying the well-known text.

Using the listCustomCRS property

To define and advertise custom spatial reference systems, you'll need to add the listCustomCRS property to your WMS service. You can only do this in the ArcGIS Server Administrator Directory. For full instructions on how to access the Administrator Directory and add this property, see Available WMS service properties.

Defining a default custom projection

To define a default custom projection for your WMS service, you can assign any EPSG ID to be the well-known ID of your custom projection by appending "EPSG:<ID>=DEFAULT" to the listCustomCRS property. For example:

"properties": {
    "listCustomCRS": "EPSG:200001=DEFAULT",
    ...

In this example, EPSG:200001 has been assigned to be the well-known EPSG ID for the custom projection.

Defining a custom projection using WKT

To define a custom projection for your WMS service, you can assign any EPSG ID to a well-known text (WKT) string of your custom projection by appending "EPSG:<ID>=<custom projection WKT>" to the listCustomCRS property. The EPSG:<ID> will be advertised through the capabilities file of the WMS service. You can also use this approach to overwrite the definition of an existing projection.

In the following example, EPSG:200002 has been assigned to a custom projection represented by a WKT string and also overwrites the definition of EPSG:3857 using another WKT string:

"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]]"
    ...

Requesting a specific projection using WKT

The following example demonstrates how to request a map from a WMS service in a specific projection by defining the WKT representation of the projection in a GetMap request.

Sample GetMap request

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