ArcMap Open Carto 2 WMTS not displaying in QGIS

Interesting. I was able to reproduce the problem, which gave the following output in the wms tab of the logger:

2020-12-09T15:15:33     WARNING    Tile request error (Status: 200; Content-Type: text/html;charset=utf-8; Length: 1580; URL: http://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer/WMTS/tile/1.0.0/OS_Open_Carto_2/default/default028mm/8/28/38.png)
2020-12-09T15:15:33     WARNING    Tile request error (Status: 200; Content-Type: text/html;charset=utf-8; Length: 1580; URL: http://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer/WMTS/tile/1.0.0/OS_Open_Carto_2/default/default028mm/8/29/38.png)
2020-12-09T15:15:33     WARNING    Tile request error (Status: 200; Content-Type: text/html;charset=utf-8; Length: 1580; URL: http://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer/WMTS/tile/1.0.0/OS_Open_Carto_2/default/default028mm/8/30/38.png)
2020-12-09T15:15:33     WARNING    Tile request error (Status: 200; Content-Type: text/html;charset=utf-8; Length: 1580; URL: http://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer/WMTS/tile/1.0.0/OS_Open_Carto_2/default/default028mm/8/30/42.png)
2020-12-09T15:15:33     WARNING    Tile request error (Status: 200; Content-Type: text/html;charset=utf-8; Length: 1580; URL: http://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer/WMTS/tile/1.0.0/OS_Open_Carto_2/default/default028mm/8/29/40.png)

However, any of the urls link to a valid png image on the web.

Luckily, there are multiple ways of displaying ArcGIS rest maps in QGIS:

1. as a WMTS

this is what we tried.

2. As an ArcGIS MapService (thread)

this worked.

  1. Layer -> Add Layer -> Add ArcGIS Map Service Layer...
  2. click new
  3. Give a descriptive name and paste the URL. It should end on /MapServer so: https://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer
  4. OK -> Add
  5. done

3. As described in this wiki.

Using this method, you Should be able to get vector layers from Rest API as well. I could not get it working with the Open Carto Map (and have not tried it with others).


It seems it is not possible to use that specific service as a native WMTS one, but a workaround is to use it as a XYZ tile service:

you will need to set this URL in the XYZ dialog:

https://tiles.arcgis.com/tiles/qHLhLQrcvEnxjtPr/arcgis/rest/services/OS_Open_Carto_2/MapServer/WMTS/tile/1.0.0/OS_Open_Carto_2/default/default028mm/{z}/{y}/{x}.png

please note that the CRS needs to be fixed (as EPSG:27700)

As a reference, this URL from the same server works as a native WMTS layer:

https://tiles.arcgis.com/tiles/ULBqC49IEeIR01GF/arcgis/rest/services/Middle_East_Oil_and_Gas_Field_Map_by_CIA/MapServer/WMTS/1.0.0/WMTSCapabilities.xml?cacheKey=aec62228d3e2389d

enter image description here