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.

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
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
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, 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}. 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 (von v4.0 an 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
tileLayer
{collectionId}
Spezifiziert den Tile-Provider Layer.
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 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" ]
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 Siehe Tile-Provider Features.
array
v3.1
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
v3.1
collectionTiles
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
v3.3
singleCollectionEnabled
true
Deprecated Siehe collectionTiles.
boolean
v3.3
datasetTiles
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
v3.3
multiCollectionEnabled
true
Deprecated Siehe datasetTiles.
boolean
v3.3
zoomLevelsCache
{}
Deprecated Siehe Tile-Provider Features.
object
v3.1
seeding
{}
Deprecated Siehe Tile-Provider Features.
object
v3.1
seedingOptions
{}
Deprecated (wird in v4.0 zu seeding umbenannt) Steuert wie und wann Kacheln vorberechnet werden, siehe Optionen für das * Seeding.
object
v3.1
limit
100000
Deprecated Siehe Tile-Provider Features.
number
v3.1
ignoreInvalidGeometries
false
Deprecated Siehe Tile-Provider Features.
boolean
v3.1
filters
{}
Deprecated Siehe Tile-Provider Features.
object
v3.1
rules
{}
Deprecated Siehe Tile-Provider Features.
object
v3.1
minimumSizeInPixel
0.5
Deprecated Siehe Tile-Provider Features.
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:


- buildingBlock: TILES
  enabled: true
  zoomLevels:
    WebMercatorQuad:
      min: 5
      max: 16
      default: 8
  seedingOptions:
    maxThreads: 1

Für die Weinlagen-Objekte (Aggregation von aneinander angrenzenden Objekten bis Zoomstufe 9):


    - buildingBlock: TILES
      rules:
        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

Der Tile Provider, mit der Konfiguration für Caches und das Seeding von Kacheln:


id: vineyards-tiles
providerType: TILE
providerSubType: FEATURES
caches:
- type: IMMUTABLE
  storage: MBTILES
  levels:
    WebMercatorQuad:
      min: 5
      max: 11
- type: DYNAMIC
  storage: MBTILES
  seeded: false
  levels:
    WebMercatorQuad:
      min: 12
      max: 16
layerDefaults:
  levels:
    WebMercatorQuad:
      min: 5
      max: 16
layers:
  __all__:
    id: __all__
    combine: ['*']
  vineyards:
    id: vineyards

Seeding-Beispiel (kein Seeding beim Start, Neuaufbau des Cache zu jeder Stunde)


- buildingBlock: TILES
  seedingOptions:
    runOnStartup: false
    runPeriodic: '0 * * * *'
    purge: true

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


- buildingBlock: TILES
  seedingOptions:
    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 seedingOptions.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