Tilesspecstableimplmature
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.0 und die Konformitätsklassen "TileSetMetadata", "TileMatrixSetLimits" und "JSONTileMatrixSetLimits" des Standards OGC Two * Dimensional Tile Matrix Set and Tile Set Metadata 2.0.
Operationen
Ressource | Pfad | Methoden | Formate | Beschreibung |
---|---|---|---|---|
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
Name | Ressourcen | Beschreibung |
---|---|---|
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
Name | Ressourcen | Beschreibung |
---|---|---|
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
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
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 TileSetMetadata ("JSON") und TileJSON ("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.
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
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-Datei 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".
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
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-Instanz 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.
Name | Default | Beschreibung | Typ | Seit |
---|---|---|---|---|
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-Pfalz.
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 Night):
- buildingBlock: TILES
enabled: true
tileProvider:
type: MBTILES
filename: dnb_land_ocean_ice.2012.54000x27000_geo.mbtiles
Beispielkonfiguration für die API Earth at Night,
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