Tiles

specstableimplmature

Veröffentlichen von Geodaten als Kacheln.

Umfang

Dieses Modul unterstützt Kacheln, die aus Features abgeleitet sind, oder Kacheln, die von einer externen Quelle bereitgestellt werden.

Die unterstützten Kachelformate sind:

  • MVT (Mapbox Vector Tile)
  • PNG
  • WebP
  • JPEG
  • TIFF

Für Kacheln, die aus Features abgeleitet werden, wird nur Mapbox Vector Tiles als Kachelformat unterstützt.

Alle Kacheln einer API kommen vom selben Tile-Provider.

Konformitätsklassen

Das Modul implementiert die Konformitätsklassen "Core", "TileSet", "TileSets List", * "Dataset TileSets", "GeoData TileSets", "Collections Selection", "DateTime", "OpenAPI * Specification 3.0 API definition", "Mapbox Vector Tiles", "PNG", "JPEG" und "TIFF" des Standards OGC API - Tiles - Part 1: Core 1.0open in new window und die Konformitätsklassen "TileSetMetadata", "TileMatrixSetLimits" und "JSONTileMatrixSetLimits" des Standards OGC Two * Dimensional Tile Matrix Set and Tile Set Metadata 2.0open in new window.

Operationen

RessourcePfadMethodenFormateBeschreibung
Dataset Tilesets
tiles
GET
HTML, JSON
Zugriff auf die Kachelsätze zum Datensatz
Dataset Tileset
tiles/{tileMatrixSetId}
GET
JSON, TileJSON
Zugriff auf einen Kachelsatz zum Datensatz
Dataset Tiles
tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
GET
JPEG, MVT, PNG, TIFF, WEBP
Zugriff auf Kacheln eines Datensatzes.
Collection Tilesets
collections/{collectionId}/tiles
GET
HTML, JSON
Zugriff auf Kachelsätze einer Feature Collection
Collection Tileset
collections/{collectionId}/tiles/{tileMatrixSetId}
GET
JSON, TileJSON
Zugriff auf einen Kachelsatz einer Feature Collection
Collection tiles
collections/{collectionId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
GET
JPEG, MVT, PNG, TIFF, WEBP
Zugriff auf Kacheln einer Feature Collection.

Pfad-Parameter

NameRessourcenBeschreibung
collectionId
Collection Tilesets, Collection Tileset, Collection Tile
Der Identifikator der Feature Collection.
tileMatrixSetId
Dataset Tilesets, Dataset Tileset, Dataset Tile, Collection Tilesets, Collection Tileset, Collection Tile
Der Identifikator des Kachelschemas.
tileMatrix
Dataset Tile, Collection Tile
Die Zoomstufe der Kachel im Kachelschema.
tileRow
Dataset Tile, Collection Tile
Die Zeile der Kachel auf der Zoomstufe im Kachelschema.
tileCol
Dataset Tile, Collection Tile
Die Spalte der Kachel auf der Zoomstufe im Kachelschema.

Query Parameter

NameRessourcenBeschreibung
collections
Dataset Tile
Die Feature Collections des Datensatzes, die in die Kachel aufgenommen werden sollen. Der Parameterwert ist eine durch Kommata getrennte Liste von Identifikatoren der Feature Collections.
datetime
Dataset Tile, Collection Tile
Es werden nur Features in die Kachel aufgenommen, deren primäre zeitliche Eigenschaft den angegebenen Wert (Zeitstempel, Datum oder Intervall) schneidet.
f
Dataset Tile
Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet.
f
Collection Tile
Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet.
f
Dataset Tileset, Collection Tileset
Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet.
f
Dataset Tilesets, Collection Tilesets
Wählt das Ausgabeformat der Antwort. Wenn kein Wert angegeben wird, gelten die Standard-HTTP Regeln, d.h. der "Accept"-Header wird zur Bestimmung des Formats verwendet.
limit
Dataset Tile, Collection Tile
Der Parameter begrenzt die Anzahl der Features, die in die Kachel aufgenommen werden.

Konfiguration

Voraussetzungen

Das Modul Tile Matrix Sets muss aktiviert sein. Wenn dieses Modul nicht konfiguriert ist, wird es automatisch aktiviert, wenn Tiles aktiviert ist.

Storage

Der Tile-Cache liegt im Datenverzeichnis unter dem relativen Pfad cache/tiles/{apiId} (alt) oder im Store (neu) als Ressource mit dem Pfad tiles/{apiId}.

Wenn die Daten zu einer API oder Kachelkonfiguration geändert wurden, dann sollte das Cache-Verzeichnis für die API gelöscht werden, damit der Cache mit den aktualisierten Daten oder Regeln neu aufgebaut wird.

Optionen

NameDefaultBeschreibungTypSeit
buildingBlock
Immer TILES.
string
v3.1
extensionType
Deprecated Siehe buildingBlock.
string
v3.1
enabled
false
Soll das Modul aktiviert werden?
boolean
v3.1
transformations
{}
Property-Transformationen erfolgen bei der Aufbereitung der Daten für die Rückgabe über die API. Die Datenhaltung selbst bleibt unverändert. Alle Filterausdrücke (siehe queryables in Features) wirken unabhängig von etwaigen Transformationen bei der Ausgabe und müssen auf der Basis der Werte in der Datenhaltung formuliert sein - die Transformationen sind i.A. nicht umkehrbar und eine Berücksichtigung der inversen Transformationen bei Filterausdrücken wäre kompliziert und nur unvollständig möglich. Insofern sollten Eigenschaften, die queryable sein sollen, möglichst bereits in der Datenquelle transformiert sein. Eine Ausnahme sind typischerweise Transformationen in der HTML-Ausgabe, wo direkte Lesbarkeit i.d.R. wichtiger ist als die Filtermöglichkeit.
object
v3.1
maxMultiplicity
3
Wenn das Feature-Schema Array-Eigenschaften enthält, werden für jede Array-Eigenschaft maxMultiplicity Eigenschaften erstellt. Wenn eine Instanz mehrere Werte in einem Array hat, werden nur die ersten Werte in die Daten aufgenommen.
number
v3.2
caching
{}
Setzt feste Werte für HTTP-Caching-Header für die Ressourcen.
object
v3.1
tileProvider
{ "type": "FEATURES", ... }
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden) Spezifiziert die Datenquelle für die Kacheln, siehe Tile-Provider-Objekte.
object
v3.1
tileProviderId
null
Deprecated (wird in v4.0 zu tileProvider umbenannt) Spezifiziert die Datenquelle für die Kacheln, siehe Tile-Provider.
string
v3.3
tileProviderTileset
__all__ | {collectionId}
Spezifiziert das Tileset vom Tile-Provider das verwendet werden soll. Der Default ist __all__ für Dataset Tiles und {collectionId} für Collection Tiles.
string
v3.3
tileLayer
__all__ | {collectionId}
Deprecated Siehe tileProviderTileset.
string
v3.3
tileSetEncodings
[ "JSON", "TileJSON" ]
Steuert, welche Formate für die Tileset-Ressourcen unterstützt werden sollen. Zur Verfügung stehen OGC TileSetMetadataopen in new window ("JSON") und TileJSONopen in new window ("TileJSON").
array
v3.1
cache
FILES
*Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden) FILES speichert jede Kachel als Datei im Dateisystem. MBTILES speichert die Kacheln in einer MBTiles-Datei (eine MBTiles-Datei pro Tileset).
string
v3.1
mapClientType
MAP_LIBRE
Auswahl des zu verwendenden Map-Clients in der HTML-Ausgabe. Der Standard ist MapLibre GL JS, unterstützt wird nur das Kachelschema "WebMercatorQuad". Alternativ wird als auch OPEN_LAYERS unterstützt (OpenLayers). Die Unterstützung von Open Layers ist nur sinnvoll, wenn in der HTML Ausgabe auch andere der vordefinierten Kachelschemas unterstützt werden sollen. Bei OPEN_LAYERS werden keine Styles unterstützt.
string
v3.1
style
DEFAULT
Ein Style im Style-Repository, der standardmäßig in Karten mit den Tiles verwendet werden soll. Bei DEFAULT wird der defaultStyle aus Modul HTML verwendet. Handelt es sich bei dem Kartenclient um MapLibre, muss der Style im Mapbox-Format verfügbar sein. Wenn der Style auf NONE gesetzt ist, wird ein einfacher Wireframe Style mit OpenStreetMap als Basiskarte verwendet. Handelt es sich bei dem Kartenclient um Open Layers, wird die Angabe ignoriert.
string
v3.1
removeZoomLevelConstraints
false
Bei true werden aus dem in style angegebenen Style die minzoom- und maxzoom-Angaben bei den Layer-Objekten entfernt, damit die Features in allen Zoomstufen angezeigt werden. Diese Option sollte nicht gewählt werden, wenn der Style unterschiedliche Präsentationen je nach Zoomstufe vorsieht, da ansonsten alle Layer auf allen Zoomstufen gleichzeitig angezeigt werden.
boolean
v3.1
tileEncodings
[ "MVT" ]
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden) Liste der zu unterstützenden Kachelformate, generell erlaubt sind MVT (Mapbox Vector Tiles), PNG, WebP und JPEG. Die konkret unterstützten Formate sind vom Tile-Provider abhängig.
array
v3.1
center
[ 0, 0 ]
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
array
v3.1
zoomLevels
{ "WebMercatorQuad" : { "min": 0, "max": 23 } }
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden) Steuert die Zoomstufen, die für jedes aktive Kachelschema verfügbar sind sowie welche Zoomstufe als Default bei verwendet werden soll.
object
v3.1
collectionTiles
true
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden) Steuert, ob Vector Tiles für jede Feature Collection aktiviert werden sollen. Jede Kachel hat einen Layer mit den Features aus der Collection. Wenn ein Tile-Provider spezifiziert ist, dann werden - unabhängig von dieser Option - Kacheln für eine Collection genau dann aktiviert, wenn das Tileset im Tile Provider spezifiziert ist.
boolean
v3.3
singleCollectionEnabled
true
Deprecated Siehe collectionTiles.
boolean
v3.3
datasetTiles
true
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden) Steuert, ob Vector Tiles auf Ebene des Datensatzes aktiviert werden sollen. Jede Kachel hat einen Layer pro Collection mit den Features aus der Collection. Wenn ein Tile-Provider spezifiziert ist, dann werden - unabhängig von dieser Option - Kacheln für Datensatz genau dann aktiviert, wenn das entsprechende Tileset im Tile Provider spezifiziert ist.
boolean
v3.3
multiCollectionEnabled
true
Deprecated Siehe datasetTiles.
boolean
v3.3
zoomLevelsCache
{}
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
object
v3.1
seeding
{}
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
object
v3.1
seedingOptions
{}
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
object
v3.1
limit
100000
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
number
v3.1
ignoreInvalidGeometries
false
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
boolean
v3.1
filters
{}
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
object
v3.1
rules
{}
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
object
v3.1
minimumSizeInPixel
0.5
Deprecated (ab v4.0 müssen Tile-Provider Entities verwendet werden)
number
v3.1

Tile Provider

Deprecated (von v4.0 an müssen Tile-Provider Entities verwendet werden )

Es werden aktuell drei Arten von Tile-Providern unterstützt:

  • FEATURES: Die Kacheln werden aus einem Feature-Provider abgeleitet.
  • MBTILES: Die Kacheln eines Tileset im Kachelschema "WebMercatorQuad" liegen in einem MBTiles-Archiv vor.
  • TILESERVER: Die Kacheln werden von einer TileServer-GL-Instanz abgerufen.

Features

Bei diesem Tile-Provider werden die Kacheln im Format Mapbox Vector Tiles aus den von der API bereitgestellten Features im Gebiet der Kachel abgeleitet.

NameDefaultBeschreibungTypSeit
type
FEATURES
Fester Wert, identifiziert die Tile-Provider-Art.
string
v2.0
tileEncodings
[ "MVT" ]
Steuert, welche Formate für die Kacheln unterstützt werden sollen. Zur Verfügung steht derzeit nur Mapbox Vector Tiles ("MVT").
array
v2.0
zoomLevels
{ "WebMercatorQuad" : { "min": 0, "max": 23 } }
Steuert die Zoomstufen, die für jedes aktive Kachelschema verfügbar sind sowie welche Zoomstufe als Default bei verwendet werden soll.
object
v2.0
zoomLevelsCache
{}
Steuert die Zoomstufen, in denen erzeugte Kacheln gecacht werden.
object
v2.0
seedingOptions
Steuert wie und wann Kacheln vorberechnet werden, siehe Optionen für das Seeding.
object
v2.0
seeding
{}
Steuert die Zoomstufen, die für jedes aktive Kachelschema beim Start vorberechnet werden.
object
v2.0
filters
{}
Über Filter kann gesteuert werden, welche Features auf welchen Zoomstufen selektiert werden sollen. Dazu dient ein CQL-Filterausdruck, der in filter angegeben wird. Siehe das Beispiel unten.
object
v2.0
rules
{}
Über Regeln können die selektierten Features in Abhängigkeit der Zoomstufe nachbearbeitet werden. Unterstützt wird eine Reduzierung der Attribute (properties), das geometrische Verschmelzen von Features, die sich geometrisch schneiden (merge), ggf. eingeschränkt auf Features mit bestimmten identischen Attributen (groupBy). Siehe das Beispiel unten. Beim Verschmelzen werden alle Attribute in das neue Objekt übernommen, die in den verschmolzenen Features identisch sind.
object
v2.0
center
[ 0, 0 ]
Legt Länge und Breite fest, auf die standardmäßig eine Karte mit den Kacheln zentriert werden sollte.
array
v2.0
limit
100000
Steuert die maximale Anzahl der Features, die pro Query für eine Kachel berücksichtigt werden.
number
v2.0
singleCollectionEnabled
true
Steuert, ob Vector Tiles für jede Feature Collection aktiviert werden sollen. Jede Kachel hat einen Layer mit den Features aus der Collection.
boolean
v2.0
multiCollectionEnabled
true
Steuert, ob Vector Tiles für den Datensatz aktiviert werden sollen. Jede Kachel hat einen Layer pro Collection mit den Features aus der Collection.
boolean
v2.0
ignoreInvalidGeometries
false
Steuert, ob Objekte mit ungültigen Objektgeometrien ignoriert werden. Bevor Objekte ignoriert werden, wird zuerst versucht, die Geometrie in eine gültige Geometrie zu transformieren. Nur wenn dies nicht gelingt, wird die Geometrie ignoriert. Die Topologie von Geometrien können entweder schon im Provider ungültig sein oder die Geometrie kann in seltenen Fällen als Folge der Quantisierung der Koordinaten zu Integern für die Speicherung in der Kachel ungültig werden.
boolean
v2.0
minimumSizeInPixel
0.5
Objekte mit Liniengeometrien, die kürzer als der Wert sind, werden nicht in die Kachel aufgenommen. Objekte mit Flächengeometrien, die kleiner als das Quadrat des Werts sind, werden nicht in die Kachel aufgenommen. Der Wert 0.5 entspricht einem halben "Pixel" im Kachelkoordinatensystem.
number
v2.0

MbTiles

Bei diesem Tile-Provider werden die Kacheln über eine MBTiles-Dateiopen in new window bereitgestellt. Das Kachelformat und alle anderen Eigenschaften der Tileset-Ressource ergeben sich aus dem Inhalt der MBTiles-Datei. Unterstützt wird nur das Kachelschema "WebMercatorQuad".

NameDefaultBeschreibungTypSeit
type
MBTILES
Fester Wert, identifiziert die Tile-Provider-Art.
string
v2.0
filename
null
Dateiname der MBTiles-Datei im Verzeichnis api-resources/tiles/{apiId}.
string
v2.0
tileMatrixSetId
WebMercatorQuad
Kachelschema, das in der MBTiles-Datei verwendet wird.
string
v2.0

TileServer

Bei diesem Tile-Provider werden die Kacheln über eine TileServer-GL-Instanzopen in new window bezogen. Unterstützt wird nur das Kachelschema "WebMercatorQuad".

In der aktuellen Version wird dieser Provider nur im Modul Map Tiles unterstützt. Unterstützt werden nur die Bitmap-Kachelformate. Seeding oder Caching werden nicht unterstützt.

Dieser Tile-Provider ist experimentell und seine Konfigurationsoptionen können sich in zukünftigen Versionen ändern.

NameDefaultBeschreibungTypSeit
type
TILESERVER
Fester Wert, identifiziert die Tile-Provider-Art.
string
v2.0
urlTemplate
null
URL-Template für den Zugriff auf Kacheln. Zu verwenden sind die Parameter {tileMatrix}, {tileRow}, {tileCol} und {fileExtension}.
string
v2.0
urlTemplateSingleCollection
null
URL-Template für den Zugriff auf Kacheln für eine Collection.
string
v2.0
tileEncodings
[]
Liste der zu unterstützenden Kachelformate, erlaubt sind PNG, WebP und JPEG.
array
v2.0

Beispiele

Beispiel für die Angaben in der Konfigurationsdatei aus der API für Weinlagen in Rheinland-Pfalzopen in new window.

Auf API-Ebene (da es nur eine einzige Objektart gibt, ist das Tileset des Datensatzes dasselbe wie das Tileset der einzigen Collection):


- buildingBlock: TILES
  enabled: true
  tileProviderTileset: vineyards

Der Tile Provider, mit der Konfiguration für Caches (zwei Caches, ein unveränderlicher Cache bis zur Ebene 12 und ein dynamischer Cache ohne Seeding für die anderen Ebenen). Angrenzende Features werden bis zur Zoomstufe 9 zusammengefasst:


---
id: vineyards-tiles
providerType: TILE
providerSubType: FEATURES
caches:
- type: IMMUTABLE
  storage: MBTILES
  levels:
    WebMercatorQuad:
      min: 5
      max: 12
- type: DYNAMIC
  storage: MBTILES
  seeded: false
  levels:
    WebMercatorQuad:
      min: 13
      max: 18
tilesets:
  vineyards:
    id: vineyards
    levels:
      WebMercatorQuad:
        min: 5
        max: 18
    transformations:
      WebMercatorQuad:
      - min: 5
        max: 7
        merge: true
        groupBy:
        - region
      - min: 8
        max: 8
        merge: true
        groupBy:
        - region
        - subregion
      - min: 9
        max: 9
        merge: true
        groupBy:
        - region
        - subregion
        - cluster

Seeding-Beispiel (kein Seeding beim Start, Neuaufbau des Cache zu jeder Stunde) im Features-Tile-Provider:


providerType: TILE
providerSubType: FEATURES
seeding:
  runOnStartup: false
  runPeriodic: '0 * * * *'
  purge: true

Beispiel für die Verwendung von mehreren Threads für das Seeding:


providerType: TILE
providerSubType: FEATURES
seeding:
  maxThreads: 4

Hierfür müssen in der globalen Konfiguration (cfg.yml) mindestens 4 Threads für Hintergrundprozesse konfiguriert sein, zum Beispiel:


backgroundTasks:
  maxThreads: 4

Durch diese Setzungen werden mehrere Hintergrundprozesse überhaupt erst ermöglicht. Selbst ohne Änderungen an den Seeding-Optionen würde dies also die parallele Ausführung des Seeding für 4 APIs ermöglichen.

Wenn maxThreads in den Seeding-Optionen größer als 1 ist, bedeutet das, dass das Seeding in n Teile geteilt wird, wobei n die Anzahl der verfügbaren Threads ist, wenn das Seeding beginnt, begrenzt durch seeding.maxThreads.

Wenn man also zum Beispiel seedingOptions.maxThreads mit der angegebenen cfg.yml auf 2 setzt, wird das Seeding in 2 Teile aufgeteilt, wenn mindestens 2 der 4 Threads verfügbar sind. Wenn 3 Threads von anderen Diensten benutzt werden, wird es nicht aufgeteilt. Und wenn alle 4 Threads belegt sind, wird gewartet, bis mindestens 1 Thread frei wird.

Beispielkonfiguration (from the API Earth at Nightopen in new window):


- buildingBlock: TILES
  enabled: true
  tileProvider:
    type: MBTILES
    filename: dnb_land_ocean_ice.2012.54000x27000_geo.mbtiles

Beispielkonfiguration für die API Earth at Nightopen in new window,
die einen MBTiles-Tile-Provider hat.

In der API muss das TILES-Modul aktiviert werden und das Tileset im Provider referenziert
werden:


- buildingBlock: TILES
  enabled: true
  tileProviderTileset: earthatnight

Der Tile-Provider definiert ein einziges Tileset und referenziert die MBTiles-Datei:


---
id: earthatnight-tiles
providerType: TILE
providerSubType: MBTILES
tilesets:
  earthatnight:
    id: earthatnight
    source: earthatnight/dnb_land_ocean_ice.2012.54000x27000_geo.mbtiles