Mapnik

A Turistautak.hu wikiből
A lap korábbi változatát látod, amilyen bpeti68 (vitalap | szerkesztései) 2008. november 17., 23:26-kor történt szerkesztése után volt.

Rasztertérképek készítése a Turistautak.hu adatbázisából Mapnik eszközkészlettel

Ezen dokumentáció még fejlesztés alatt áll. Célja, hogy a megszerzett tapasztalatokat megosszam a Turistautak.hu közösségével és reprodukálhatóvá tegyem azt a folyamatot ameddig eljutottam. (--bpeti68 2008. november 17., 17:59 (UTC))

Egy mintatérkép itt megtekinthető. Mivel az ftp elérése meglehetősen kaotikus és több mint 60 000 képkockát kell feltölteni az egész országrész lefedéséhez, így csak akkor frissítem, ha lényeges változásokat sikerül elérnem a megjelenésben.

Tartalomjegyzék

Használt oprendszer

 Ubuntu8.10
 A lenti csomagok nagyrésze MS Windows alá is megtalálható, de 
 van köztük 1-2 aminek csak a forrása érhető el, így a fordítással magunknak kell bajlódni.
 

Szükséges csomagok

 mapnik-utils
 python-mapnik
 mapnik-plugins
 libmapnik0.5
 python2.5
 postgreSQL
 python-pygresql
 postGIS
 osm2pgsql
 libgdal1-dev -ez csak a domborzatárnyékolás előállításához kell

Továbbá szükséges még szmi kolléga tuhu2osm.c programjának módosított változata Ennek fordítása: gcc tuhu2osm.c -o tuhu2osm

Mapnik környezet és térképleíró beállítása

TODO:

  • POI-k konvertálása hiányzik a tuhu2osm scripből.
  • OSM.XML "térkép stílus leíró" rejtelmeinek feltárása.
  • turistajelzések megjelenítése a térképen.

Domborzat színezés és árnyékolás

Domborzatárnyékoláshoz le kell töltenünk az SRTM adatokat a következő helyről: ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/Eurasia/ Az adatok zipelve, 1x1 fokos szegmensekre osztva tartalmazzák a golyóbis magasságadatait. Minket tehát a következő állományok érdekelnek: ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/Eurasia/N45E016.hgt.zip ... ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/Eurasia/N48E023.hgt.zip

Szükségünk lesz még az srtm_generate_hdr.sh scriptre. Ha lent vannak az adatok, bontsuk ki őket a következő scripttel:

#!/bin/bash

PREP_TABLE="1"
for X in *.hgt.zip; do
    yes | ./srtm_generate_hdr.sh $X
    rm -f "${X%%.zip}"
	    
    # Import 10m contours
    rm -f "${X%%.hgt.zip}.shp" "${X%%.hgt.zip}.shx" "${X%%.hgt.zip}.dbf"
    gdal_contour -i 10 -snodata 32767 -a height "${X%%.hgt.zip}.tif" "${X%%.hgt.zip}.shp"
    [ "$PREP_TABLE" ] && shp2pgsql -p -I -g way "${X%%.hgt.zip}" contours | psql -q gis
    shp2pgsql -a -g way "${X%%.hgt.zip}" contours | psql -q gis
				    
    rm -f "${X%%.hgt.zip}.shp" "${X%%.hgt.zip}.shx" "${X%%.hgt.zip}.dbf"
    rm -f "${X%%.hgt.zip}.bil"
    rm -f "${X%%.hgt.zip}.hdr"
    rm -f "${X%%.hgt.zip}.prj"
#    rm -f "${X%%.hgt.zip}.tif"
    unset PREP_TABLE
done

A fenti script eredetileg betolta PostGIS adatbázisunkba a magasságvonalak rajzolásához szükséges adatokat, majd kitörölte a generált shape fájlokat. Az utolsó rm -f "${X%%.hgt.zip}.tif" parancs kiiktatásával azonban a tif-eket megőrizzük. Ezekre lesz szükségünk az árnyékolás és domborzatszínezés elkészítéséhez. Ezt a következő color_all nevű script hajtja végre.

#!/bin/bash

for X in N*.tif; do
  echo "Coloring $X"
  ./color-relief $X scale.txt "C_$X"
  echo "Shading $X"
  ./hillshade $X "H_$X"
done

TODO

  • geoTiff-ek összefűzése/darabolása
  • átlátszóság beállítása
  • OpenLayers réteg elkészítése a kezelésükhöz

Képek előállítása

  1. Töltsd le a régiók mp állományait zip-elve. Ehhez értelemszerűen rendelkezned kell a megfelelő jogosultságokkal.
  2. Csomagold ki és fűzd össze őket egyetlen mp-vé.
  3. Konvertáld át UTF-8 formátumba.
  4. Engedd rá a tuhu2osm programra: (tuhu2osm tuhu.mp data.osm)
  5. Importáld be a Postgres adatbázisba (osm2pgsql -m data.osm)
  6. Szerkeszd a set-mapnik-env file-t. Állítsd be az összes MAPNIK_* környezeti változót, hogy illeszkedjen a könyvtárrendszeredhez illetve adatbázis kapcsolatodhoz, majd futtasd a ./customize-mapnik-map >$MAPNIK_MAP_FILE parancsot. Ez létrehozza a rendszerednek megfelelő beállítású OSM.XML térképleíró állományt.
  7. Indítsd el a képkockák generálását (a mapnik könyvtárában kiadott ./set-mapnik-env ./generate_tiles.py paranccsal), vagy ha egyetlen képre akarod a térképet kirajzoltatni akkor a generate_image.py -t.

A 2-5 lépésekhez használhatod ezt a shell scriptet. A 7. lépés előtte a generate_tiles.py scriptben beállítandók a kívánt zoom szintek és a generálandó terület koordinátái, mivel a frissen telepített mapnik alapértelmezésben a teljes földgolyót le akarja gyártani.

Felhasznált dokumentációk

 Mapnik telepítése, használata

Domborzat színezés, árnyékolás

Forrás:

 GDAL-based DEM utilities
 [Mapnik-users Shaded Relief]
 DEMTOOLS fordítása Ubuntu8.10 alatt:
 g++ `gdal-config --cflags` hillshade.cpp -o hillshade `gdal-config --libs`
 g++ `gdal-config --cflags` color-relief.cpp -o color-relief.cpp `gdal-config --libs`
 g++ `gdal-config --cflags` aspect.cpp -o aspect `gdal-config --libs`
 g++ `gdal-config --cflags` slope.cpp -o slope `gdal-config --libs`