Vektor
MBTiles
készítése

Mi a cél és miért jó mindez?

A cél egy olyan összetett vektoros térbeli adatforrás létrehozása, amit mind a böngészőben, mind asztali térinformatikai programban fel lehet használni, egy átlagos webtárhelyen tárolva és onnan kiszolgálva.

Vector Tiles egy viszonylag új technológia, arra való, hogy az adatot és annak kinézetét szét lehessen választani, úgy, hogy közben nem kell az egész vektoros fájlt kezelni hozzá.

MBTiles fájl létrehozása

  1. lépés: Adatok előkészítése (QGIS - kihagyható)
  2. lépés: Adatok feldolgozása

Adatok előkészítése

Openstreetmap (OSM) adatait használtam fel, amit Docker környezetben a helyi gépről érek el.

Az adminisztrációs réteget leszűrtem Dunaújvárosra, majd készítettem egy befoglaló téglalapot, ezután a OSM rétegeit elvágtam ezzel a téglalappal, amit kimentettem egy-egy json fájlba.

google docs image 6bd28439 7587 53e9 91ac 8248aab67310
Adatok betöltése
google docs image 80eb4c0b 45fb 5bf1 aa82 ad842e909e1a
Feldolgozás -> Eszköztár -> Vektor geometria -> Befoglaló téglalapok
google docs image c2aed06d b867 5508 b100 5f6e925f3c52
Befoglaló téglalapot egy ideiglenes fájlba mentem
google docs image 90fddd98 69ed 50cd 9a18 f53e1a1d7dfb
Feldolgozás -> Eszköztár -> Vektor átfedés -> vágás
google docs image 2c87987e 422e 5768 83ae 8f0f690534d5
A vágás/metszés kimenetét geojson fájlba mentem el
google docs image 4b2bee51 6f6b 5d60 927b 5b9728ad097c
A vágás/metszés kötegelt feldolgozóban beállítva

Adatok feldolgozása

Készítettem egy git tárat, amiben létrehoztam egy dockeres környezetet (google által elsőnek kidobott környezet sajnos nálam nem működött). A geojson fájlok feldolgozásához a mapbox/tippecanoe szoftvert használtam.

Az alábbi kód futtatásához Docker programra van szükség.

git clone git@github.com:bszabo28/docker-tippecanoe.git
cd docker-tippecanoe

docker-compose build

docker-compose run tippecanoe tippecanoe -s EPSG:4326 -pi -f -z13 -o osm-vector-dunaujvaros.mbtiles  \
geojson/osm-places.geojson \
geojson/osm-aeroways.geojson \
geojson/osm-amenities.geojson \
geojson/osm-barrierpoints.geojson \
geojson/osm-barrierways.geojson \
geojson/osm-housenumbers-interpolated.geojson \
geojson/osm-housenumbers.geojson \
geojson/osm-housenumbers-interpolated.geojson \
geojson/osm-road.geojson osm-buildings.geojson \
geojson/osm-landusage.geojson \
geojson/osm-transport-areas.geojson \
geojson/osm-waterareas.geojson \
geojson/osm-waterways.geojson

A kimenetként megadott MBTiles fájlt a DB Browser for SQLite programmal módosítom, törlöm a metadata táblából a "generator_options" recordot (Tileserver-php fájlban okoz hibát).

google docs image fa342de4 d071 5a81 8be9 247e49777bee google docs image eeb3d5dc 04b4 50de bbac dece7607db15 google docs image 39eed09e df6d 50e3 b6c3 6a4dc4439c6d

Ezután az előző blogpostban beállított Tileserver-php segítségével publikálom az elkészített MBTiles-t.

QGIS-ben az alábbi két módon lehet használni a vektor réteget:

Közvetlenül a mbtiles-t beolvasva, vagy vectiles json fájlt:

  1. https://tile-server.szabo-balazs.hu/mbtiles/osm-vector-dunaujvaros.mbtiles
  2. https://tile-server.szabo-balazs.hu/mbtiles/osm-vector-dunaujvaros.json

Itt elérhető a Tileserver-php által készített térkép:

https://tile-server.szabo-balazs.hu/#mbtiles/osm-vector-dunaujvaros/mapboxgl

dc76a04ac91090244418763e1e1d2a