Web Vektor hosting

Lokale Bereitstellung basemap.de Web Vektor

Wenn Sie über eine lokale Kopie der Vector Tiles von basemap.de Web Vektor mit den zugehörigen Style-Dateien verfügen, können sie diese mit folgenden Anpassungen über einen eigenen Webserver bereitstellen. Beachten Sie hierbei bitte die Nutzungsbedingungen.

Die Anleitung setzt voraus, dass die Daten in folgender Ordnerstruktur über einen Webserver bereitgestellt werden:
|- fonts
  |- Liberation Sans Bold
  |- ...
|- sprites
  |- bm_web_col_sprite.json
  |- bm_web_col_sprite.png
  |- ...
|- styles
  |- bm_web_col.json
  |- ...
|- tiles
  |- v1
      |- bm_web_de_3857
          |- bm_web_de_3857.json
          |- 0
          |- 1
          |- ...
      |- ...

URLs an lokale Umgebung anpassen

Die in den Dateien enthaltenen Verlinkungen müssen an die lokale Umgebung angepasst werden. Dies kann z. B. durch „Suchen und Ersetzen“ über alle Dateien erfolgen. Ersetzen Sie dafür den URL-Pfad https://sgx.geodatenzentrum.de/gdz_basemapde_vektor durch die Domain und den Pfad ihres eigenen Servers. Die URL muss auf die Domain geändert werden, über welche die Browser und Anwendungen auf die Daten zugreifen sollen.

Alternativ können die URLs einzeln in den folgenden Dateien angepasst werden.

Styles
In allen JSON-Dateien im Ordner "styles" müssen die URLs unter "glyphs", "sprites" und "sources" geändert werden.

Beispiel styles/bm_web_col.json:
{
  "id": "bm_web_col",
  "version": 8,
  "name": "bm_web_col",
  "metadata": {
    "basemapde:style-version": x.x,
    "mapbox:autocomposite": false,
    "mapbox:type": "template",
    "maputnik:renderer": "mbgljs"
  },
  "center": [10,51],
  "zoom": 6,
  "glyphs": "https://sgx.geodatenzentrum.de/gdz_basemapde_vektor/fonts/{fontstack}/{range}.pbf",
  "sprite": "https://sgx.geodatenzentrum.de/gdz_basemapde_vektor/sprites/bm_web_col_sprite",
  "transition": {
    "duration": 300,
    "delay": 0
  },
  "sources": {
    "smarttiles_de": {
      "type": "vector",
      "attribution": "© 2024 basemap.de / BKG | Datenquellen: © GeoBasis-DE",
      "url": "https://sgx.geodatenzentrum.de/gdz_basemapde_vektor/tiles/v1/bm_web_de_3857/bm_web_de_3857.json"
    }
  },
  "layers": [
    ...
  ]
}
Tiles
In allen Unterordnern des Ordners "tiles/v1" muss jeweils die JSON-Datei angepasst werden, die dem Ordnernamen entspricht. In diesen Dateien muss die URL unter "tiles" geändert werden.

Beispiel tiles/v1/bm_web_de_3857/bm_web_de_3857.json:
{
    "attribution": "GeoBasis-DE",
    "basename": "bm_web_de_3857",
    "bounds": [
        5.8,
        47.2,
        15.1,
        55.1
    ],
    "center": [
        10.45,
        51.150000000000006,
        2
    ],
    "format": "pbf",
    "id": "bm_web_de_3857",
    "maxzoom": 15,
    "minzoom": 0,
    "name": "bm_web_de_3857",
    "scheme": "xyz",
    "tilejson": "2.2.0",
    "tiles": [
        "https://sgx.geodatenzentrum.de/gdz_basemapde_vektor/tiles/v1/bm_web_de_3857/{z}/{x}/{y}.pbf"
    ],
    "vector_layers": [
...
]
}

Konfiguration des Webservers

Um Vector Tiles über einen Webserver bereitzustellen, müssen bestimmte Konfigurationen im Webserver vorgenommen werden, damit die Vector Tiles von Browsern korrekt gelesen werden können. Als Beispiele werden Konfigurationen für den Apache HTTP Server angegeben. 

Die PBF-Dateien innerhalb des tiles-Ordners müssen mit dem korrekten MIME-Type und Content-Encoding ausgeliefert werden:
<Directory {lokaler-pfad}/tiles>
<FilesMatch".pbf$">
ForceType application/x-protobuf
Header always set Content-Encoding "gzip"
</FilesMatch>
</Directory>

Wenn für die Zugriffe auf die Vector Tiles und Styles auch Cross-Origin-Zugriffe erlaubt werden sollen, müssen hierfür entsprechende Access-Control-Header gesetzt werden: 
<Directory {lokaler-pfad}/tiles>
<FilesMatch".pbf$">
ForceType application/x-protobuf
Header always set Content-Encoding "gzip"
</FilesMatch>

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET"
</Directory>
<Directory {lokaler-pfad}/fonts>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET"
</Directory>

<Directory {lokaler-pfad}/sprites>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET"
</Directory>

<Directory {lokaler-pfad}/styles>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET"
</Directory>

Um fehlerhafte Darstellungen von Umlauten in den Beschriftungen der Karte zu verhindern, sollte das Encoding des Webservers auf UTF-8 eingestellt werden:
AddDefaultCharset UTF-8