Styly pro vykreslování dat OpenStreetMap

MAPBOX STYLE

  • Mapbox style je tvořen souborem specifikací pro vizuální podobu mapy, který se nazývá „dokument“.
  • Tento dokument definuje, jaká data se budou zobrazovat na mapě, v jakém pořadí budou vykreslena a jak se budou stylovat při vykreslení.
  • Mapbox Style je založen na programovacím jazyce JavaScript.
  • Dokument stylu je uložen v JSON formátu, který obsahuje hierarchickou strukturu vlastností. Jedná se o kořenové a vnořené vlastnosti.
    •  Kořenové vlastnosti
      • Kořenové vlastnosti stylu Mapbox jsou na nejvyšší úrovni hierarchie a definují použité vrstvy v mapě, pozadí mapy, zdroje dlaždic a další zdroje.
      • Kořenové vlastnosti, jako například „verze“ (version), „název“ (name) a „metadata“ (metadata), nemají žádný vliv na vzhled nebo chování mapy, ale poskytují důležité popisné informace související s mapou.
      • Ostatní vlastnosti, jako jsou například „vrstvy“ (layers) „a „zdroje“ (sources), jsou z pohledu uživatele kritické a určují, které mapové prvky se na mapě objeví, vykreslí a jak budou vypadat.
      • Některé další kořenové vlastnosti, jako je střed (center), přiblížení (zoom), sklon (pitch) a směr-azimut (bearing), mají v nástroji nastavené výchozí, defaultní hodnoty, které se použijí při počátečním zobrazení mapy.
    • Vnořené vlastnosti
      • Naopak vnořené vlastnosti jsou umístěny v rámci kořenových vlastností a ovlivňují konkrétní vrstvy na mapě.
      • Vrstvy jsou jednotlivé prvky na mapě, jako například silnice, řeky nebo budovy.
      • Vnořené vlastnosti přesně určují, jak mají být tyto vrstvy zobrazeny, například jakou barvou a tloušťkou čáry.
      • Vnořené vlastnosti mohou být také vnořeny samy v sobě, což umožňuje vytvořit složitější styly, jako například různé varianty zobrazení jedné vrstvy v závislosti na měřítku, přiblížení (zoomu) mapy. 
  • Mapbox style je základním stylovým jazykem webové aplikace (nástroje) Mapbox Studio nebo opensourcového nástroje Maputnik. Dále se jazyk/formát používá v knihovnách Mapbox GL, MapLibre GL a OpenLayers. 
  • V současné době je postupná tendence opouštění jazyka/formátu stylových šablon CartoCSS právě k Mapbox Style 
(MAPBOX 2023b; OPENSTREETMAP WIKI 2023k)

Základní kořenové vlastnosti Mapbox style

  • version: Udává verzi Mapbox stylu. Například: "version": 8.
  • name: Název Mapbox stylu. Například: "name": "Basic".
  • metadata: Obsahuje další metadatové informace o Mapbox stylu. Například: "metadata": { "mapbox:autocomposite": true }.
  • center: Udává výchozí středový bod mapy. Například: "center": [0, 0].
  • zoom: Udává výchozí zoom mapy. Například: "zoom": 3.
  • bearing: Udává výchozí orientaci mapy. Například: "bearing": 0.
  • pitch: Udává výchozí náklon mapy. Například: "pitch": 0.
  • sources: Definuje zdroje dat použitých v Mapbox stylu. Například: "sources": { "my-data": { "type": "vector", "url": "mapbox://myusername.my-data" } }.
  • sprite: Definuje URL adresu, ze které lze načíst sprite soubor, který obsahuje ikony použité v Mapbox stylu. Například: "sprite": "mapbox://sprites/myusername/my-sprite".
  • glyphs: Definuje URL adresu, ze které lze načíst soubory písem, které se používají k zobrazení textu (popisků) na mapě. Například: "glyphs": "mapbox://fonts/myusername/{fontstack}/{range}.pbf".
  • transition: Určuje dobu trvání přechodu mezi změnami stylu. Například: "transition": { "duration": 300, "delay": 0 }.
  • layers: Definuje jednotlivé vrstvy mapy. Každá vrstva má své vlastnosti jako jsou symboly, barvy, texty apod. Například: "layers": [ { "id": "my-layer", "type": "circle", "source": "my-data", "paint": { "circle-color": "#ff0000" } } ].
  • light: Umožňuje přidat osvětlení na mapu. Například: "light": { "anchor": "viewport", "color": "#ffffff", "intensity": 0.4 }.
  • terrain: Definuje URL adresu, ze které lze načíst soubory s daty terénu pro zobrazení reliéfu na mapě. Například: "terrain": { "source": "mapbox-dem", "exaggeration": 1.5 }.
  • fog: Umožňuje přidat efekt mlhy na mapu. Například: "fog": { "range": [1000, 2000], "color": "#ffffff" }.
(MAPBOX 2023b)

Ukázka kódu

Ukázka Mapbox style
Zdroj: vlastní zpracování

Tento kód definuje pro silnice II. třídy černou barvu, velikost čáry na 2 pixely a průhlednost na 0,8.

Popis kódu silnice II. třídy

  • "version": 8: verze Mapbox GL JS stylu, kterou bude používat.
  • "sources": { "roads": { ... } }: definuje zdroj dat, který bude použit pro zobrazování silnic. V tomto případě se jedná o vektorová data.
  • "type": "vector": určuje typ zdroje dat.
  • "url": "mapbox://path/to/roads": URL adresa zdroje dat, kde se nachází data silnic.
  • "layers": [ { ... } ]: definuje vrstvu, která bude zobrazovat silnice.
  • "id": "roads": identifikátor vrstvy.
  • "type": "line": určuje, že se bude jednat o liniovou vrstvu, která bude zobrazovat silnice.
  • "source": "roads": označuje zdroj dat, který se bude používat pro tuto vrstvu.
  • "source-layer": "roads": označuje konkrétní vrstvu silnic, která se bude používat ze zdroje dat.
  • "layout": {}: layout vrstvy, ve kterém se specifikuje, jak se mají prvky zobrazovat. V tomto případě se používají výchozí hodnoty.
  • "paint": { ... }: popisuje stylizaci vrstvy. V tomto případě se nastavuje barva, šířka a průhlednost linií.
  • "line-color": "#000000": barva čar silnic, zde černá.
  • "line-width": 2: šířka, zde 2 pixely.
  • "line-opacity": 0.8: průhlednost linií, zde 80%.
  • "filter": ["==", "highway", "secondary"]: filtrování dat, kdy se zobrazí pouze silnice II. třídy (kde klíč "highway" má hodnotu "secondary").
(MAPBOX 2023b)
Ukázka Mapbox style
Zdroj: vlastní zpracování

Popis kódu zastávky autobusu (trolejbusu) na Konečného náměstí, Brno

    • "version": 8 - Specifikuje verzi Mapbox stylu, v tomto případě je použita verze 8.
    • "sources" - Tento blok definuje zdroje dat používané v mapě V tomto konkrétním kódu existuje pouze jeden zdroj s názvem "my-data", který je typu "geojson" a obsahuje jediný prvek, tj. bod na souřadnicích [16.5958938, 49.2050419].
    • "layers": Definuje vrstvy, které budou zobrazeny na mapě. Zde je jedna vrstva s ID "my-data-layer". Typ vrstvy je "symbol", což znamená, že se použijí symboly z ikonografické sady pro zobrazení dat. V layoutu vrstvy se nastavuje ikona, která bude použita pro vykreslení symbolů ("bus_stop"), velikost ikony (0.5) a povolení překrývání ikon, pokud jsou blízko sebe ("icon-allow-overlap": true). V paint se nenastavuje nic, protože typ "symbol" nepotřebuje žádné speciální nastavení.
    • "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf" - Toto nastavení specifikuje, kde se má načíst font písma pro vykreslování textových prvků na mapě.
    • "zoom": 14.5 - Určuje výchozí úroveň přiblížení pro mapu, v tomto případě na úroveň 14,5.
    • "center": [16.5958938, 49.2050419] - Určuje výchozí pozici mapy na souřadnicích [16.5958938, 49.2050419].
    • "pitch": 0 - Určuje výchozí sklon mapy ve stupních. Hodnota 0 znamená, že mapa bude vykreslena rovnoběžně se zemským povrchem, tedy bez náklonu .
    • "bearing": 0 -  Určuje směr, kterým je mapa natočena. V tomto kódu je hodnota nastavena na 0, což znamená, že mapa bude vykreslena bez otočení.
    • "antialias": true - Určuje, zda se bude používat antialiasing pro vyhlazení okrajů prvků na mapě. V tomto případě je povoleno použití antialiasingu.
    (MAPBOX 2023b)

    Zdroje

    MAPBOX (2023b): All docs. Mapbox GL JS. Style Specification, https://docs.mapbox.com/mapbox-gl-js/style-spec/ (21. 1. 2023).

    OPENSTREETMAP WIKI (2023k): Mapbox styles, https://wiki.openstreetmap.org/wiki/Mapbox_styles (21.1.2023).