ArcGIS Pro – Dealing with Spatial Reference/Projection for Tiled Service Layers

arcgis-procoordinate system

I host a number of TMS/XYZ layers, all in EPSG:2193.

These are well supported in QGIS, and used to be supported in ArcGIS through the ArcBruTile plugin which allowed custom TMS layers of any projection to be imported using an XML config file.

I have a number of users of ArcGIS Pro wanting to access these layers. None of us can get these to work either using the built-in TMS support (Map->Add data from path) or the ArcBruTile-pro plugin – both of which seem to assume the data is in EPSG:3857.

How do they set the correct spatial reference / projection (and correct Y-axis direction) on a TMS layer in ArcGIS Pro? The extent and resolutions seem correct.

For reference the metadata defining the layer in GDAL and older ArcBruTile is below.

<TileMap version="1.0.0" tilemapservice="http://au.mapspast.org.nz/nzms-1979">
<Title>NZMS 1 1979</Title>
<Abstract/>
<SRS>EPSG:2193</SRS>
<Origin y="-20037508.342789" x="-20037508.342789"/>
<TileFormat extension="png" mime-type="image/png" height="256" width="256"/>
<BoundingBox maxy="20037508.342789" maxx="20037508.342789" miny="-20037508.342789" minx="-20037508.342789"/>
<TileSets>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/5" order="5" units-per-pixel="4891.969809375"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/6" order="6" units-per-pixel="2445.984904688"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/7" order="7" units-per-pixel="1222.992452344"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/8" order="8" units-per-pixel="611.496226172"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/9" order="9" units-per-pixel="305.748113086"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/10" order="10" units-per-pixel="152.874056543"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/11" order="11" units-per-pixel="76.437028271"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/12" order="12" units-per-pixel="38.218514136"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/13" order="13" units-per-pixel="19.109257068"/>
<TileSet href="http://au.mapspast.org.nz/nzms-1979/14" order="14" units-per-pixel="9.554628534"/>
</TileSets>
</TileMap>
<GDAL_WMS>
<Service name="TMS">
<ServerUrl>http://au.mapspast.org.nz/nzms-1979/${z}/${x}/${y}.png</ServerUrl>
</Service>
<DataWindow>
<UpperLeftX>-20037508.34</UpperLeftX>
<UpperLeftY>20037508.34</UpperLeftY>
<LowerRightX>20037508.34</LowerRightX>
<LowerRightY>-20037508.34</LowerRightY>
<TileLevel>14</TileLevel>
<TileCountX>1</TileCountX>
<TileCountY>1</TileCountY>
<YOrigin>bottom</YOrigin>
</DataWindow>
<Projection>EPSG:2193</Projection>
<BlockSizeX>256</BlockSizeX>
<BlockSizeY>256</BlockSizeY>
<Cache/>
<ZeroBlockHttpCodes>204,404</ZeroBlockHttpCodes>
</GDAL_WMS>

Best Answer

To answer my own question following customer queries to ESRI:

  • ArcGISpro only supports XYZ layers (Not TMS which has a bottom-up Y index)
  • ArcGISpro only supports EPSG:3857 for XYZ layers.

Recent versions of ArcBRUtile support only those formats natively supported by ESRI/ArcGIS (i.e. XYZ, EPSG:3857).

So those of us hosting TMS layers or layers in other projections and wanting to support ArcGIS will have to reproject and move from TMS to XYZ.

gdal2tiles generates such tilesets so long as the source raster is in EPSG:3857 and the -xyz parameter is supplied.