OpenMapTiles vektorové dlaždice v češtině Jiří Komárek jiri.komarek@klokantech.com SotM CZ Brno 2017
Projekt OpenMapTiles Sada nástrojů pro vektorové mapy https://openmaptiles.org/ https://github.com/openmaptiles Nástupce OSM2VectorTiles Projekt představen v lednu 2017
Projekt OpenMapTiles Open Vector Tile Schema Popis tématických datových vrstev a atributů Dokumentované a rozšiřitelné Nástroje pro tvorbu vektorových dlaždic z OSM Tvorba MBTiles obsahující PBF (MVT) Open Map Styles Předpřipravené styly pro dlaždicové schéma Jednoduše uzpůsobitelné
OpenMapTiles Server OpenMapTiles Server je softwarový balíček pro Docker, který obsahuje vše potřebné Běží na jakémkoliv počítači s Windows, Mac či Linuxem. Instalace v Linuxu: 1. Nainstaluj Docker curl ssl https://get.docker.com/ sh 2. Spusť OpenMapTiles Server docker run rm it v $(pwd):/data p 8080:80 klokantech/openmaptilesserver https://openmaptiles.com/server/
Nastavení mapy krok za krokem
Data ke stažení dle regionu
Styly
Mapové služby
...
Výsledná mapa
Výhody vektorových dlaždic Lepší pocit pro uživatele interaktivita Menší velikost než rastrové dlaždice (povětšinou) Data a styly jsou oddělené (lze znovu využít) Možná úprava za běhu (např. filtrování prvků)
Jak nastylovat vektorové dlaždice? Mapbox Style Specification "id": "building", "type": "fill", "source": "openmaptiles", "sourcelayer": "building", "minzoom": 4, "paint": { "fillcolor": "#ccc", "filloutlinecolor": "#333", "fillopacity": 0.5 } https://www.mapbox.com/mapboxgljs/stylespec/ Styl je JSON objekt Styl obsahuje definici viditelných vrstev { Filtr objektů Rozsah přiblížení Barvy, šířky čáry, velikost fontu, pozice, } Podobný koncept jako u CartoCSS, SLD (Styled Layer Descriptor),...
Vytváření / úprava stylů Textový editor (JSON) Maputnik (opensource vizuální editor) https://editor.openmaptiles.org/
Generování vlastních OpenMapTiles Kdokoliv si sám může vygenerovat OpenMapTiles Tutoriály jsou k dispozici na adrese https://openmaptiles.org/docs/ Je třeba Docker a Docker Compose Větší plochy mohou zabrat delší čas Ovšem není nutné to podstupovat (existuje možnost stáhnout předpřipravená data)
Jak vytvořit vektorové dlaždice z OSM? Importovat OSM data do databáze (imposm3) Předzpracování a generalizace (PostGIS) Vyexportovat z DB jednotlivé dlaždice (Mapnik) Proces lze škálovat Aktualizace pouze pro změněné oblasti
Import OSM do PostGIS Pomocí imposm3 Adaptace databázového schématu pro dané potřeby Mapový soubor (.yaml) Mapa: OSM tagy SQL tabulky Filtry: Stačí pouze část OSM dat Preprocess (.sql) Generalizace! Výpočet pozic popisků (centroid) Rozdělení polygonů building_polygon: fields: name: osm_id type: id name: geometry type: validated_geometry name: area type: area name: levels key: levels type: string mapping: building: any aeroway: terminal hangar filters: reject: building: ["no","none","no"] type: polygon
Definice vrstvy vektorových dlaždic Vektorové dlaždice se skládají ze skupiny pojmenovaných vrstev (budovy, doprava, ) Vrstva obsahuje geometrické prvky a jejich metadata Popis definuje každou vrstvu a kde se nachází data SQL query, Shapefile, GeoJSON jako zdroje dat
Zápis SQL k tvorbě vektorových dlaždic Každá vrstva je vytvořena z SQL dotazu Dotaz je odeslán jedenkrát pro každou dlaždici Omezení dotazu na dlaždici!bbox! Filtrování podle přiblížení z(!scale_denominator!) OpenMapTiles GitHub repozitář: Vše pro jednu vrstvu v jedné složce Popis souboru: [layer]/[layer].yaml layer: id: "building" datasource: query: ( SELECT geometry, render_height, render_min_height FROM layer_building(!bbox!, z(!scale_denominator!)) ) AS t buffer_size: 4 schema:./building.sql datasources: type: imposm3 mapping_file:./mapping.yaml
nebo stažení předgenerovaných dlaždic Dlaždice pro vybrané oblasti Celá země, kontinenty, země, města, Zdarma ke stažení (k nekomerčním účelům) Pro komerční účely nutnost platby kvůli udržitelnosti projektu Pravidelné týdenní updaty Další data navíc: Vektorové dlaždice s vrstevnicemi Rastrové dlaždice se stínováním Celosvětová pročištěná DMT (DEM) data Satelitní mapa celého světa
Tvorba vektorových dlaždic z vlastních dat Z GeoJSON nebo ShapeFile (tippecanoe) Z PostGIS (tilelive s mapnikvectortile) návod na openmaptiles.org/docs/ Obsluha za běhu z PostGIS (postserve) Ideální pro rychle se měnící data
Jak zobrazit vektorovou mapu? Prohlížeč Mapbox GL JS OpenLayers Leaflet Mobilní aplikace Mapbox GL Native (Android, ios) Tisk, export, Mapové služby OGC WMTS / WMS <script> var map = new mapboxgl.map({ container: 'map', style: 'https://.../style.json', center: [8.5456, 47.3739], zoom: 11 }); </script>
Vícejazyčnost Nový prvek (červen 2017) Jména v 50 jazycích Data z OpenStreetMap Další vylepšení přes Wikidata Během tohoto roku https://openmaptiles.org/languages/
Vlastní souřadnicový systém Kompatibilní s javascriptovými prohlížeči, mobilním SDK,... K dispozici jako WMTS a WMS Křovák SJTSK EPSG:5514 https://openmaptiles.com/coordinatesystems/
Doplňkové datasety stínování a vrstevnice Rastrové stínování Vektorové vrstevnice Zkombinované do jednoho stylu
Doplňkové datasety OpenMapTiles Satellite NASA + ESA Sentinel2 Již ke stažení (říjen 2017)
Hosting Možnost hostovat mapu u sebe (můžeme pomoct s nastavením) Hostování na naší infrastruktuře https://www.tilehosting.com/ Globální CDN ve více než 100 datacentrech, SSL a ochrana proti DDOS Highavailability setup Loadbalancer s failover Renderování rastrových dlaždic na GPU Duplikace hlavních datacenter (v Evropě a Severní Americe) Anycast pro výběr nejbližšího serveru Týdenní updaty OpenStreetMap vektorových dlaždic
Děkuji za pozornost! Rádi pomůžeme s přípravou dat, renderováním on clusteru (jakýkoliv souřadnicový systém), přepracováním stylů, nastavení hostingu,... Kontakt: info@klokantech.com https://openmaptiles.org/