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 0836d018 0404 513f bba4 4d6b2f23b2fc
Adatok betöltése
google docs image a64c404b 4b3b 57a2 aba6 26f6e5a3c641
Feldolgozás -> Eszköztár -> Vektor geometria -> Befoglaló téglalapok
google docs image c9dcecd4 94d0 5475 bb4b ae01d51958e8
Befoglaló téglalapot egy ideiglenes fájlba mentem
google docs image d35f335a 8c18 5c44 aacb a368523bf7c7
Feldolgozás -> Eszköztár -> Vektor átfedés -> vágás
google docs image b1cad848 bad7 528a a5f4 7d37665d1697
A vágás/metszés kimenetét geojson fájlba mentem el
google docs image 96f29f98 32ed 566a 836c 113f77fa29a2
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 0d128deb 25ed 5342 95af ba0ea0d22789 google docs image 5238e272 898e 5f21 8b3c d914eb9c8d82 google docs image 993526d6 f62c 552b bb03 c9585333f806

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