See the capabilities of the server from http://tps.geosur.info/arcgis/rest/services/maps/GeoSUR_SPHydropower/MapServer/WMTS/1.0.0/WMTSCapabilities.xml
If WMTS server supports GetFeatureInfo request it would be included in the OperationsMetadata section. This server simply does not support GetFeatureInfo and you can't request info about from the features.
Many people understand that MapServer means the open source one http://mapserver.org/ while this server seems to be ESRI ArcGIS server. However, WMTS is the same for both.
WMTS servers which support GetFeatureInfo has something like this in the OperationsMetadata:
<ows:Operation name="GetFeatureInfo">
<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>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
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>
...
Best Answer
When this happens to me, it's usually one of the following:
EDIT:
Took a further look at the service and tried to get plain tiles but that didn't work:
By KVP params:
By tile index:
It just gives empty tiles. Maybe it's about the service provider in this case.
EDIT:
Somehow, the tileindex seems to be messed up. I had a look at the tiles, your esri web application uses. You could check it by using developer tools in your browser (F12). One sample tile is
You also get it from the service with the KVP-syntax:
But if you compare this with the tile indices, given in the capabilities document, those tiles are way out of the given tile matrix bounds, which is Columns: 5140 Rows: 4717 for matrix level 17