map0

Datenquellen

Cloud Optimized GeoTIFF

Rasterdaten direkt aus einem Cloud Optimized GeoTIFF auf statischem Speicher lesen. HTTP-Range-Requests laden die für den sichtbaren Kartenausschnitt benötigten Teile. Die drei Karten unten zeigen RGB-Bilddaten, Höhendaten und klassifizierte Rasterwerte, jeweils mit ihrer Konfiguration.

Bilddaten über eine URL laden

Ein RGB-Orthofoto über Katalonien. Die Layer-Definition ist nichts als eine URL: Ausdehnung und Zoombereich kommen aus dem Header der Datei selbst.

Ausprobieren: Den Netzwerk-Tab öffnen und die Karte verschieben. Die Anfragen laden kleine Byte-Bereiche aus der 50 MB großen Datei. Bereits zwischengespeicherte Kacheln können wiederverwendet werden.

cog-imagery.map0.json
{
  "$schema": "https://map0.net/schema/v1.json",
  "version": 1,
  "meta": {
    "title": "COG imagery",
    "description": "An RGB orthophoto loaded directly from static storage."
  },
  "map": { "center": [1.83369, 41.5937], "zoom": 14 },
  "basemaps": [
    {
      "id": "gris",
      "title": "ICGC Grey",
      "type": "style",
      "url": "https://geoserveis.icgc.cat/contextmaps/icgc_mapa_base_gris.json",
      "attribution": "© Institut Cartogràfic i Geològic de Catalunya",
      "default": true
    },
    { "id": "none", "title": "None", "type": "empty" }
  ],
  "layers": [
    {
      "id": "ortho-cog",
      "type": "cog",
      "title": "Orthophoto (RGB COG)",
      "url": "https://labs.geomatico.es/maplibre-cog-protocol/data/image.tif",
      "attribution": "Orthophoto © ICGC · demo data © Geomatico",
      "metadata": {
        "url": "https://github.com/geomatico/maplibre-cog-protocol",
        "title": "maplibre-cog-protocol sample data"
      }
    }
  ],
  "controls": { "home": true },
  "i18n": { "locale": "en" }
}

Ein Geländemodell, zwei Darstellungen

Dieselbe 3 MB große Höhendatei (BEV-Geländemodell 25 m, Region Großglockner) speist zwei Layer: hillshade rendert eine Reliefschummerung, color bildet das Höhenband auf eine hypsometrische Farbrampe ab. Die Legende leitet ihre Klassenfelder automatisch aus der Rampe ab.

Ausprobieren: Einen Layer ausblenden, um den anderen allein zu sehen. Die Schummerung zeichnet Schatten und helle Bereiche; ebene Flächen bleiben durchsichtig. Der Deckkraftregler steuert die Intensität.

cog-terrain.map0.json
{
  "$schema": "https://map0.net/schema/v1.json",
  "version": 1,
  "meta": {
    "title": "COG terrain",
    "description": "One DEM file, two renderings: hillshade and a hypsometric color ramp."
  },
  "map": { "bounds": [12.45, 46.95, 13.05, 47.3] },
  "basemaps": [
    {
      "id": "grau",
      "title": "basemap.at Grey",
      "type": "raster",
      "url": "https://mapsneu.wien.gv.at/basemap/bmapgrau/normal/google3857/{z}/{y}/{x}.png",
      "attribution": "© basemap.at",
      "default": true
    },
    { "id": "none", "title": "None", "type": "empty" }
  ],
  "layers": [
    {
      "id": "dgm",
      "type": "cog",
      "title": "Hillshade (BEV DGM 25 m)",
      "url": "/data/bev-dgm25-grossglockner-3857.tif",
      "hillshade": { "exaggeration": 0.6 },
      "attribution": "Geländemodell © BEV, data.bev.gv.at (CC BY 4.0)",
      "metadata": {
        "url": "https://data.bev.gv.at/geonetwork/srv/ger/catalog.search#/metadata/6a853c17-8960-44a4-81fb-18e0549a1c80",
        "title": "Digitales Geländehöhenmodell – Höhenraster 25m, Stichtag 31.12.2022 (BEV)"
      }
    },
    {
      "id": "dgm-elevation",
      "type": "cog",
      "title": "Elevation (CartoEarth ramp)",
      "url": "/data/bev-dgm25-grossglockner-3857.tif",
      "color": { "scheme": "CartoEarth", "min": 800, "max": 3800 },
      "opacity": 0.7,
      "attribution": "Geländemodell © BEV, data.bev.gv.at (CC BY 4.0)"
    }
  ],
  "controls": { "legend": { "open": true }, "home": true },
  "i18n": { "locale": "en" }
}

Werte mit Farben klassifizieren

color.classes weist exakten Pixelwerten oder Wertebereichen Farben zu. Dieses Beispiel verwendet ein binäres Versiegelungsraster für Österreich aus einer 1,3 GB großen Datei. Jede Klasse erhält einen beschrifteten Legendeneintrag. Werte außerhalb der definierten Klassen bleiben transparent.

Ausprobieren: Die Klasse für unversiegelte Flächen verwendet eine achtstellige Hex-Farbe. Die letzten beiden Stellen steuern die Deckkraft, sodass die Hintergrundkarte durchscheint. Wird die Klasse entfernt, sind diese Pixel vollständig transparent.

cog-classes.map0.json
{
  "$schema": "https://map0.net/schema/v1.json",
  "version": 1,
  "meta": {
    "title": "COG classification",
    "description": "A binary raster styled by exact pixel values with hand-picked colors."
  },
  "map": { "bounds": [14.38, 48.01, 14.47, 48.08] },
  "basemaps": [
    {
      "id": "grau",
      "title": "basemap.at Grey",
      "type": "raster",
      "url": "https://mapsneu.wien.gv.at/basemap/bmapgrau/normal/google3857/{z}/{y}/{x}.png",
      "attribution": "© basemap.at",
      "default": true
    },
    { "id": "none", "title": "None", "type": "empty" }
  ],
  "layers": [
    {
      "id": "versiegelung",
      "type": "cog",
      "title": "Sealed surfaces 2022",
      "url": "https://map0.s3.fr-par.scw.cloud/data/VER_2022_AT_3857.tif",
      "color": {
        "classes": [
          { "value": 0, "color": "#67a9cf40", "label": "unsealed (0)" },
          { "value": 1, "color": "#c22f2f", "label": "sealed (1)" }
        ]
      },
      "attribution": "Versiegelung 2022 © ÖROK-Monitoring, Bearbeitung: Umweltbundesamt (CC BY 4.0)",
      "metadata": {
        "url": "https://www.data.gv.at/datasets/90c7dd9b-32eb-4521-9489-d31f0d673ae6",
        "title": "ÖROK-Monitoring Versiegelung 2022 (Stand Berechnungsjahr 2025)"
      }
    }
  ],
  "controls": { "legend": { "open": true }, "home": true },
  "i18n": { "locale": "en" }
}

Was diese Demos zeigen

Farbrampen folgen den Namen Brewer<Name><classes>, etwa BrewerSpectral9, oder Carto<Name>, etwa CartoEarth. Eine Übersicht zeigen die Farbschema-Beispiele. Ein nicht unterstützter Name versetzt den Layer in einen Fehlerstatus.

Klassenbereiche schließen from ein und to aus. Die Klasse mit dem höchsten to schließt auch diese Obergrenze ein. Exakte Werte haben Vorrang vor Bereichen. Dieselbe Datei kann auf einer Seite nicht gleichzeitig mit classes und einer Farbrampe oder Schummerung verwendet werden, da die Farbfunktion an die COG-URL gebunden ist.

EPSG:3857 erforderlich. Dieser Adapter liest COGs in Web Mercator. Dateien in anderen Koordinatensystemen lassen sich mit gdalwarp -t_srs EPSG:3857 und gdal_translate -of COG vorbereiten. Nodata-Pixel bleiben transparent; ohne deklarierten Nodata-Wert wird der Wert null als transparent behandelt.

Wann COG die richtige Wahl ist

COG eignet sich, um Orthofotos, Geländemodelle oder andere Rasterdaten als einzelne Dateien zu veröffentlichen. Der Speicher muss HTTP-Range-Requests und CORS unterstützen. Der Browser kann dann die benötigten Teile passend zum Kartenausschnitt laden. Eine weitere Möglichkeit zur Bereitstellung von Rasterdaten ist ein Kacheldienst wie WMTS.

Der Adapter verwendet @geomatico/maplibre-cog-protocol für Bilddaten, Farbrampen und Schummerung. Das Geländebeispiel nutzt das 25-m-Geländemodell des BEV, umgerechnet nach EPSG:3857 und auf einen kleineren Ausschnitt begrenzt. Der Originaldatensatz liegt in EPSG:31287 vor.