1

Multiple basemaps of Austria can be achieved via a WMTS Service provided by basemap.at. The GetCapabilities interface is https://www.basemap.at/wmts/1.0.0/WMTSCapabilities.xml

Working in a small area of interest and having all data loaded takes a while when zooming in and out frequently. Thus, I would like to get the basemap only for a specific region.

I know that it should be possible to set a bounding box or retrieve only specific tiles, but no matter what specifications I try, it does not work. I do not get an error message, but it always loads the basemap of whole Austria. I work within ArcMap and connect to the service via the GIS Servers - Add WMTS server.

I found this question (Getting a WMS-like bounding box from WMTS services) and tried to make the request similar.

For the layer I'm interested in, I have the following information: Tile matrix sets is google3857, Identifier is bmaporthofoto30cm, Bounding Box (WGS84) is 8,782379, 46,358770, 17,500000, 49,037872. But I am unsure which value to set for the parameter TileMatrix.

That is my modified request: https://www.basemap.at/wmts/1.0.0/WMTSCapabilities.xml?service=WMTS&request=GetTile&version=1.0.0&layer=bmaporthofoto30cm&style=default&format=image/png&TileMatrixSet=google3857&TileMatrix=0&TileRow=1&TileCol=1

Any idea why it does not work and what I can try?

1
  • use TileMatrix as the equivalent to the zoom/z level parameter
    – geozelot
    Commented Apr 17, 2018 at 7:35

1 Answer 1

2

That is my modified request: https://www.basemap.at/wmts/1.0.0/WMTSCapabilities.xml?service=WMTS&request=GetTile&version=1.0.0&layer=bmaporthofoto30cm&style=default&format=image/png&TileMatrixSet=google3857&TileMatrix=0&TileRow=1&TileCol=1

Any idea why it does not work

You are trying to mix two operations GetCapabilities and GetTile, in this instance the server understands the request for the GetCapabilities response, and ignores the other parameters.

The GetCapabilities response document tells you where you should be sending your GetTile requests to (for layer=bmaporthofoto30cm):

<Layer>
    <ows:Title>Geoland Basemap Orthofoto</ows:Title>
    <ows:Abstract>Basemap als farbiges Orthofoto</ows:Abstract>
    <ows:WGS84BoundingBox crs="urn:ogc:def:crs:OGC:2:84">
        <ows:LowerCorner>8.782379 46.358770</ows:LowerCorner>
        <ows:UpperCorner>17.5 49.037872</ows:UpperCorner>
    </ows:WGS84BoundingBox>
    <ows:Identifier>bmaporthofoto30cm</ows:Identifier>
    <Style isDefault="true">
        <ows:Identifier>normal</ows:Identifier>
    </Style>
    <Format>image/jpeg</Format>
    <TileMatrixSetLink>
        <TileMatrixSet>google3857</TileMatrixSet>
    </TileMatrixSetLink>
    <ResourceURL format="image/jpeg" template="https://maps1.wien.gv.at/basemap/bmaporthofoto30cm/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
    <ResourceURL format="image/jpeg" template="https://maps2.wien.gv.at/basemap/bmaporthofoto30cm/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
    <ResourceURL format="image/jpeg" template="https://maps3.wien.gv.at/basemap/bmaporthofoto30cm/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
    <ResourceURL format="image/jpeg" template="https://maps4.wien.gv.at/basemap/bmaporthofoto30cm/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
    <ResourceURL format="image/jpeg" template="https://maps.wien.gv.at/basemap/bmaporthofoto30cm/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg" resourceType="tile"/>
</Layer>

In the example you cite:

This is an example call for tiles: http://www.maps.bob/maps.cgi?service=WMTS&request=GetTile&version=1.0.0&layer=etopo2&style=default&format=image/png&TileMatrixSet=WholeWorld_CRS_84&TileMatrix=10m&TileRow=1&TileCol=3

The URL http://www.maps.bob/maps.cgi? is not the URL for the GetCapabilities document it is the URL to which to append parameters (such as those to satisfy a GetCapabilities or GetTile request).

But how do I send the GetTile request?

You can send a GetTile request by using the syntax specified in the GetCapabilities response:

https://maps.wien.gv.at/basemap/bmaporthofoto30cm/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpeg

Specifying your values for the URL template values, so you request would become:

https://maps.wien.gv.at/basemap/bmaporthofoto30cm/default/google3857/0/1/1.jpeg

AFAICT this service only supports the OGC WMTS Simple Profile interface, the parametrized version that you want to use is part of the fuller OpenGIS Web Map Tile Service Implementation Standard, and is not supported by this service.

If this service supported the fuller interface, the GetCapabilities response would include the follow statement:

<ows:OperationsMetadata>
    <ows:Operation name="GetCapabilities">
        <ows:DCP>
            <ows:HTTP>
                <ows:Get xlink:href="http://www.maps.bob/maps.cgi?">
                    <ows:Constraint name="GetEncoding">
                        <ows:AllowedValues>
                            <ows:Value>KVP</ows:Value>
                        </ows:AllowedValues>
                    </ows:Constraint>
                </ows:Get>
                ...
3
  • But how do I send the GetTile request? Could you provide an example for that? And it seems that the mapsx.wien.gv.at is only applicable for the city Vienna and not any region in Austria.
    – the_chimp
    Commented Apr 17, 2018 at 5:55
  • 1
    @the_chimp the answer is right there; the template URLs in the <ResourceURL> node is what you are looking for. as per the GetCapabilities document, the endpoint is configured for RESTful protocol style, KVP is not enabled (meaning that a call as seen in the example above will likely get no answer)
    – geozelot
    Commented Apr 17, 2018 at 7:56
  • thank you very much for your answer! As the URL with the parameters I would like to set does not work "Status 404 - Not Found", does it mean there is no possibility to set more parameters than in the default GetCapabilities request?
    – the_chimp
    Commented Apr 19, 2018 at 8:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.