Tiles

specstableimplmature

Veröffentlichen von Geodaten als Kacheln.

Umfang

Dieser Baustein 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 sowie PNG-Kartenkacheln, die aus diesen Vektorkacheln unter Verwendung eines oder mehrerer MapLibre Styles abgeleitet wurden.

Alle Kacheln einer API kommen vom selben Tile-Provider.

Konformitätsklassen

Der Baustein 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 Vector Tilesets
tiles
GET
HTML, JSON
Zugriff auf die Vektor-Kachelsätze zum Datensatz
Dataset Vector Tileset
tiles/{tileMatrixSetId}
GET
JSON, TileJSON
Zugriff auf einen Kachelsatz zum Datensatz im Format Mapbox Vector Tiles
Dataset Vector Tiles
tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
GET
MVT
Zugriff auf Kacheln eines Datensatzes im Format Mapbox Vector Tiles.
Collection Vector Tilesets
collections/{collectionId}/tiles
GET
HTML, JSON
Zugriff auf Vektor-Kachelsätze einer Feature Collection
Collection Vector Tileset
collections/{collectionId}/tiles/{tileMatrixSetId}
GET
JSON, TileJSON
Zugriff auf einen Vector-Kachelsatz einer Feature Collection
Collection Vector Tiles
collections/{collectionId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
GET
MVT
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

Der Baustein Tile Matrix Sets muss aktiviert sein.

Storage

Der Tile-Cache liegt im Store 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
enabled
false
Soll der Baustein 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
defaultProfiles
{}
Erlaubt es, den Standardwert des Profile-Parameters für ein bestimmtes Format zu ändern. Der Schlüssel ist die Art des Profils, z. B. rel oder val. Der Wert ist der Standardprofilwert, z. B. rel-as-uri oder val-as-title. Wenn nur einige oder keine Profilarten festgelegt sind, gelten die Anwendungsstandards.
object
v4.2
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
null
Spezifiziert die Datenquelle für die Kacheln, siehe Tile-Provider.
string
v4.0
tileProviderId
null
Deprecated Siehe tileProvider.
string
v4.0
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
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
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 dem HTML-Baustein 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
wmts
NONE
Ergänzt Unterstützung für OGC WMTS 1.0.0 (HTTP RESTful) für Kachelsätze. Bei NONE wird WMTS nicht unterstützt, bei ALL werden alle Rasterkachelsätze veröffentlicht. DATASET veröffentlicht alle Rasterkachelsätze zum Datensatz (d.h., keine Kachelsätze von einzelnen Feature-Collections) und COLLECTIONS alle Rasterkachelsätze zu Feature-Collections.
string
v3.1

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 der TILES-Baustein 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

Der Tile-Provider definiert zwei Raster-Tilesets (Style: "default", Tile-Matrix-Sets: "WebMercatorQuad" und "AdV_25832"):


id: vineyards-tiles
providerType: TILE
providerSubType: FEATURES
seeding:
  runOnStartup: true
  maxThreads: 8
caches:
- type: IMMUTABLE
  storage: PER_JOB
  levels:
    WebMercatorQuad:
      min: 5
      max: 16
    AdV_25832:
      min: 0
      max: 11
rasterTilesets:
  vineyards:
    styles:
      - vineyards/default.json
tilesets:
  vineyards:
    id: vineyards
    center:
      lon: 7.35
      lat: 49.8
    levels:
      WebMercatorQuad:
        min: 5
        max: 16
        default: 8
      AdV_25832:
        min: 0
        max: 11
        default: 3
    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
      AdV_25832:
      - min: 0
        max: 2
        merge: true
        groupBy:
        - region
      - min: 3
        max: 3
        merge: true
        groupBy:
        - region
        - subregion
      - min: 4
        max: 4
        merge: true
        groupBy:
        - region
        - subregion
        - cluster