CARTOCSS
- CartoCSS je tzv. preprocesor stylů Mapnik vyvinutý společností MapBox.
- Je napsán v programovacím jazyce JavaScript.
- Pomocí CartoCSS se vytváří jednotlivé styly mapy obdobně jako styly pro webové stránky na základě CSS stylů, ze kterých CartoCSS vychází (odtud koncovka CSS), jedná se v podstatě jen o jejich úpravu pro kartografické účely.
- Oproti kódu Mapnik XML je kód CartoCSS významně kratší a svojí strukturou jednodušší. Tento fakt potvrzuje i dnešní trend, kdy většina stylů Mapnik napsaná v jazyce Mapnik XML přechází do CartoCSS.
- Samotný
kód CartoCSS stylu je uložen v souboru s příponou .mss (Map Stylesheet files).
Tento soubor obsahuje definice vrstev a stylů pro každou vrstvu v mapě.
- Tyto definice vrstev jsou pak propojeny souborem .mml (Map Markup Language file), což je soubor ve formátu YAML nebo JSON, který obsahuje odkazy na zdroje dat a na soubory .mss.
- MML soubor také umožňuje definovat vlastnosti mapy jako celku, jako jsou projekce, rozlišení a nějaké obecné nastavení.
- Pokud generujete
Mapnik XML ze stylu CartoCSS, pak soubor .mml se používá jako vstup pro
generování jazyka/formátu Mapnik XML.
- Šablony stylů CartoCSS používají konkrétně nástroje TileMill, Mapnik a Kosmtik. Nástroj Mapbox Studio tento jazyk/formát taktéž využíval, momentálně však využívá novější jazyk Mapbox Style.
- Tento jazyk se používá ve stylových šablonách neboli mapových vrstvách portálu OSM, a to v Humanitární mapě, Standardní mapě a mapách určených pro cyklisty CyclOSM a Cyklomapě.
- Stylový formát CartoCSS je
výrazně ovlivněný jazykem Cascadenik, ze kterého částečně vychází.
- Cascadenik byl taktéž preprocesorem stylových šablon Mapniku, jež zpracovával styly v kaskádových stylech CSS, které si následně nástroj Mapnik převedl do svého jazykového formátu Mapnik XML, díky čemuž pak došlo k vytvoření samotného stylu v tomto vizuálním editoru, tj. Mapnik.
- Jeho vývoj byl zastavený v roce 2014 a jeho nástupcem se stal právě CartoCSS.
- CartoCSS podporuje značně velké množství formátů – stejné jako Mapnik XML (např. ESRI shapefiles, PostGIS, TIFF, OSM, GDAL, OGR, CSV), což je nejdůležitější a největší rozdíl mezi CartoCSS a MapCSS, který slouží pouze ke stylování dat OSM.
- Stejně jako MapCSS se skládá z pravidel, #selektoru a deklarace – {vlastnost: hodnota;}. Před selektor (název vrstvy) se píše #, následuje deklarace ve složené závorce, která se od další deklarace odděluje středníkem, vlastnost od hodnoty pak odděluje dvojtečka.
*preprocesor = program, který zpracovává vstupní data tak, aby výstup mohl dále zpracovávat jiný program; používán pro předzpracování zdrojového kódu před vlastní kompilací – softwarový nástroj používaný pro vývoj softwaru (IT SLOVNÍK, 2022)
(OPENSTREETMAP WIKI 2023i; CARTO 2023)
Základní vlastnosti CartoCSS
- Selektory (Selectors): Selektory umožňují definovat, na které prvky se bude styl aplikovat.
- Atributy-Vlastnosti (Properties): Vlastnosti určují, jak se mají vybrané prvky zobrazit, jako jsou barvy, velikosti, obecně nějaký styl.
- Hodnoty (Values): Hodnoty určují konkrétní parametry pro každou vlastnost, jako jsou konkrétní barvy nebo konkrétní velikost.
- Proměnné (Variables): Proměnné umožňují definovat hodnoty, které se budou používat opakovaně v rámci stylu.
- Funkce (Functions): Funkce umožňují aplikovat složitější transformace na vybrané prvky, jako jsou například matematické operace nebo transformace geometrie.
Ukázka kódu
Ukázka CartoCSS
Zdroj: vlastní zpracování
- Tento kód definuje pro silnice II. třídy černou barvu, velikost linie na 2 pixely a průhlednost na 0,8. Pozadí má nastavenou bílou barvu.
Popis kódu silnice II. třídy
Map:
- Definuje soubor (celou mapu) a nastavuje její souřadnicový systém na EPSG:4326.
- Nastavuje bílé pozadí mapy pomocí background-color: #FFFFFF;
#roads [highway='secondary']:
- Tato vrstva vybírá všechny silnice II. třídy v OpenStreetMap pomocí značky [highway='secondary'].
- Nastavuje barvu silnic pomocí line-color: #000000;
- Nastavuje šířku silnic pomocí line-width: 2;
- Nastavuje průhlednost silnic pomocí line-opacity: 0.8.
Ukázka CartoCSS
Zdroj: vlastní zpracování
Map:
- Definuje soubor (celou mapu) a nastavuje její souřadnicový systém na EPSG:4326.
#bus-stop-layer:
- Vybere vrstvu, která bude obsahovat zastávky autobusů.
- Nastaví parametry pro zobrazování bodové vrstvy:
- marker-width: šířka bodu v pixelech
- marker-height: výška bodu v pixelech
- marker-file: soubor s ikonou, která bude použita pro zastávky autobusů
- marker-allow-overlap: umožní překrývání bodů (aby se body na stejné pozici nekryly)
[highway='bus_stop']:
- Vybere prvky na vrstvě, které mají klíč "highway" a hodnotu "bus_stop".
- Nastaví parametry pro zobrazování bodové vrstvy:
- marker-width: šířka bodu v pixelech
- marker-height: výška bodu v pixelech
- marker-file: soubor s ikonou, která bude použita pro zastávky autobusů
- marker-allow-overlap: umožní překrývání markerů (aby se markery na stejné pozici nekryly)
Layer:
- Definuje zdroj dat pro vrstvu zastávek autobusů:
- type: typ dat (v tomto případě osm)
- bbox: souřadnice, které ohraničují oblast, ve které se mají zobrazit zastávky autobusů
- filter: určuje, které prvky se mají na vrstvě zobrazit (v tomto případě vybere jen uzly s klíčem "highway" a hodnotou "bus_stop")
Zdroje
CARTO (2023): CartoCSS Properties, https://carto.com/developers/styling/cartocss/ (30. 4. 2023).
CARTOCSS (2017): Documentation, https://cartocss.readthedocs.io/en/latest/ (21.1.2023).
IT SLOVNÍK (2022): Co je to Preprocesor? https://it-slovnik.cz/pojem/preprocesor (29.1.2023).
OPENSTREETMAP WIKI (2023i): CartoCSS, https://wiki.openstreetmap.org/wiki/CartoCSS (21.1.2023).