Map/Comment est générée cette carte
De Stéphane Brunner.
Sommaire |
Vocabulaire utilisé
- Les dalles sont des image de 1°x1° générée depuis un fichier SRTM.
- Les tuiles sont des images générée par MapNik utile pour OpenLayers.
Description rapide
- Importer les donnée OSM dans PostGIS.
- Compiler colors-hade.cpp et void-filling.cpp.
- Générer les dalles SRTM color-shade et importer les données de contour avec do (prends environ 1 semaine)
cd /media/Mapnik/SRTM/hgt;ionice -c3 nice -n 19 ../../scriptes/do *.hgt.zip
- Générer les dalles Aster color-shade et importer les données de contour avec do-aster (prends plusieurs jours suivant le nombre de fichiers, sur mon ordi environ 40s par fichier.)
cd /media/Mapnik/Aster/Sources;ionice -c3 nice -n 19 ../../scriptes/do-aster *.zip
- Générer les différentes couches avec postdo (prends environ 6 jours sur mon ordi)
cd /media/Mapnik/SRTM;ionice -c3 nice -n 19 ../scriptes/postdo
- Créer le fichier MapNik pour toutes les différentes dalles colorshade avec (prends plusieurs heures) maketiff_xml
cd /media/Mapnik/scriptes;ionice -c3 nice -n 19 ./maketiff_xml
- Génère le fichier MapNik pour les contours avec generatexml (si mes souvenirs sont bon prends environ 1 heure)
cd /media/Mapnik/scriptes;ionice -c3 nice -n 19 ./generatexml
- Préparer MapNik.
- Générer les tuiles avec MapNik avec generate_tiles.py (comme ordre d'idée le zoom 11 sur l'Europe m'a pris environ on 4 jours ...)
cd /media/Mapnik/mapnik;ionice -c3 nice -n 19 ./generate_tiles.py
- Générer le fond marin
cd /media/Mapnik/Fond-marin/GEBCO_08;ionice -c3 nice -n 19 python test-multi;ionice -c3 nice -n 19 ../../scriptes/postdo-fonds
Mon organisation des répertoire
/media/Mapnik/mapnik - utilitaire osm pour MapNik (svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik).
/media/Mapnik/demtools - colors-hade.cpp et void-filling.cpp.
/media/Mapnik/SRTM - SRTM scriptes (do, scale2.txt, maketiff-xml.py,srtm_generate_hdr.sh).
/media/Mapnik/SRTM/data - Contiens les données SRTM téléchargées.
/media/Mapnik/Aster/Sources - Contiens les données SRTM téléchargées.
/media/Mapnik/SWBD - Contiens les donnée SWBD de contour des étendue d'eau (ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SWBD)
/var/www/map - Répertoire du serveur web.
Importer les données OSM
Installer PostGis 8.3 avec les modules contrib.
sudo -u postgres -i createuser user createdb -E UTF8 -O user osm createlang plpgsql osm psql -d osm -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql psql -d osm -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql psql -d osm -f /home/sbrunner/workspace/Mapnik/osm2pgsql/900913.sql psql -d osm -f /usr/share/postgresql/8.3/contrib/_int.sql psql -d osm -f /media/Mapnik/mapnik/900913.sql #psql -d osm -f /media/Mapnik/mapnik/setup_z_order.sql exit osm2pgsql --slim --merc --create planet-date.bz
Compiler colors-shade.cpp et void-filling.cpp
g++ -O3 color-shade.cpp -lMagick++ -lX11 -lgdal1.5.0 -L/usr/lib/ -I/usr/include/gdal/ -o color-shade g++ -O3 void-filling.cpp -lMagick++ -lX11 -lgdal1.5.0 -L/usr/lib/ -I/usr/include/gdal/ -o void-filling mkdir ~/bin ln -s "`pwd`/color-shade" ~/bin ln -s "`pwd`/void-filling" ~/bin echo "export PATH=$PATH:~/bin" >> ~/.bashrc
MapNik
- Dans le fichier generate_tiles.py commenter les lignes 97 et 98 :
# command = "convert -colors 255 %s %s" % (tile_uri,tile_uri) # call(command, shell=True)
- Modifier la fin du fichier a votre convenance.
- Définir les variable d'environnement suivante :
export MAPNIK_MAP_FILE=/media/Big/Mapnik/mapnik/osm-my.xml export MAPNIK_TILE_DIR=/var/www/map/tiles
- Pour générer les tuiles exécuter le scripte generate_tiles.py
- Vous pouvez également utiliser le scripte generate_map.py pour créer une carte spécifique (regardez le début du fichier).
Données requise
- Donnée altimétrique : ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/ (/media/Big/Mapnik/SRTM/data)[1]
- Fichier OSM : http://download.geofabrik.de/osm/ ou http://wiki.openstreetmap.org/wiki/Planet.osm (/media/Big/Mapnik)
- World boundaries : http://tile.openstreetmap.org/world_boundaries-spherical.tgz (/media/Big/Mapnik/mapnik)
- Processed : http://hypercube.telascience.org/~kleptog/processed_p.zip (/media/Big/Mapnik/mapnik)
Programme requis
PPA for Ubuntu : https://launchpad.net/~stephane-brunner/+archive/mapnik
Fichiers utilisé
- Remplissage des trous pour les dalles SRTM
- void-filling.cpp (/media/Mapnik/scriptes/demtools)
- Calcule colorshade
- color-shade.cpp (merci a PerryGeo qui a fourni la base) (/media/Mapnik/scriptes/demtools)
- Définition des couleurs par altitudes
- scale2.txt (/media/Mapnik/scriptes)
- Extraction des données SRTM
- srtm_generate_hdr.sh (/media/Mapnik/scriptes) (original)
- Automatisation du calcule des dalles d'altitude (colorshade) de 1°x1°
- do (/media/Mapnik/scriptes)
- Ajoute les étendue d'eau sur les dalle colorshade (si mes souvenirs sont bon !)
- doSWBD (/media/Mapnik/scriptes)
- Crée les fichiers shp pour les contours
- do-contour (/media/Mapnik/scriptes)
- Remplissage des trous entre les dalles
- void-filling-color.cpp (/media/Mapnik/scriptes/demtools)
- Scriptes d'assemblage des tuiles en plusieurs couches
- 1°x1°
- 1°x90°
- 6°x90°
- 180°x90°
- 360°x180° (complet)
- postdo (/media/Mapnik/scriptes)
- postdoSWBD (/media/Mapnik/scriptes) je ne sais plus si je l'ai utilisé finalement.
- Créer le fichier MapNik pour toutes les différentes dalles colorshade
- maketiff_xml.py (/media/Mapnik/scriptes)
- Génère le fichier MapNik pour les étendue d'eau (plus utiliser me semble-t-il !)
- generatexmlSWBD (/media/Mapnik/scriptes)
- Génère le fichier MapNik pour les contours
- generatexml (/media/Mapnik/scriptes)
- Fichier de style MapNik pour le calcule final
- srtm.xml (/media/Mapnik/styles)
- Script modifié de calcule des tuiles
- generate_tiles.py (/media/Mapnik/mapnik/scriptes)
- Fichiers pour la publication web
- index.html (/var/www/map)
- stephane-maps.js (/var/www/map)
Lien contexte
- http://wiki.openstreetmap.org/wiki/HikingBikingMaps
- http://trac.mapnik.org/wiki/ManagingLargeXmlFiles#ExternalEntities
- http://wiki.openstreetmap.org/wiki/Mapnik
Pour toutes question ou remarque poster un message.
