Skip to content
Mark Prins edited this page Jul 26, 2018 · 5 revisions

Functional design

In the viewer-admin, it will be possible to register a service with the WMTS protocol, just like a WMS, TMS or ArcGIS REST service. On the page "Services en kaartlagen", you select the protocol "Tiled", and the tiling protocol "WMTS". The field "URL van de service" should contain a GetCapabilities URL. The rest of the fields are self explanatory, or used in other service types. Flamingo will read the capabilities document, and interpret it. Flamingo will figure out which layers there are, which matrices there are, and how these are connected. The user will only see the layers. These can be used in the same way as any other layers from other types of services.

The viewer will be be expanded to use WMTS services, just like any other service.

Implementation of support for WMTS services is done by following the WMTS specification 1.0.0.

Technical design

We've chosen to parse the capabilities file, instead of letting the user fill in the values for a service manually (like with the TMS protocol).

The capabilities are being read, and the relevant information is being filtered out via xpath expressions. This allows for great flexibility when interpreting the XML document, and filtering out the unnecessary parts, while not closing the door for future expansion.

The parts of the capabilities document which are being used are the service information, the GetTile operation, the matrixsets, and the layers.

Service information

Flamingo uses the service information part for identifying the service: the service title is being stored.

GetTile Operation

The URL to retrieve the tiles (the "GetTile" url), can be defined on two levels according to the specification: this is seen in the WMTS service as serviced by PDOK, and the aerial maps of GBO. Both instances are supported.

Matrixsets

The WMTS specification states the use of matrices, to define zoomlevels, and the validity of it's bounding box on each zoomlevel. These matrixsets are being saved in the database. At the moment, flamingo only supports the dutch projection system. Even though it saves all the other matrixsets, it only uses the matrixset of the dutch system. The filtering of this, is done by the viewer, when creating the tiling layer.

Layers

The information from the Layer node, are the name (Identifier), title, image extension (Format), styles and the corresponding TileMatrix (via the TileMatrixSetLink nodes). Please note, that the TileMatrixSetLink is only used to look up the corresponding TileMatrix. Any redefinition of the TileMatrix (ie. a different bounding box per zoomlevel) is not supported.

Clone this wiki locally