16 Feb, 2010 von Timo Mueller
OpenStreetMap-Rendering mit Mapnik
Mit Hilfe des Kartenmaterials von www.openstreetmap.org (OSM) wird einem die Möglichkeit gegeben, zum Teil qualitativ sehr hochwertiges und offenes Kartenmaterial für eigene Anwendungen zu verwenden. Die Vielzahl der Verwendungsmöglichkeiten muss hier nicht weiter erläutert werden.
Allerdings ist die Verwendung der Daten selbst nicht unbedingt trivial. Mittlerweile gibt es zwar in der weiten Welt des Netzes auch ein paar Blogs und Wikis, die einem helfen, dennoch möchte ich an dieser Stelle für eine voraussichtlich mehrteilige Serie den Grundstein legen. Der besteht daraus, aus dem frei verfügbarem Material einen kleinen einzelnen Ausschnitt zu rendern. Zu späteren Zeitpunkten werde ich hoffentlich noch zeigen können, inwiefern das durchaus umfangreiche Material auf die eigenen Bedürfnisse angepasst werden kann. Natürlich ist das ganze kein Hexenwerk und ich möchte auch nicht so tun als ob es eins wäre, weswegen wir am besten mal loslegen.
Da ich selbst in erster Linie Ubuntu benutze und an manchen Stellen der Einsatz von Windows die Angelegenheit nicht unbedingt erleichtert, ist die nachfolgende Anleitung für Ubuntu 9.10 geschrieben. Grundsätzlich sollte sie aber auch für ältere Ubuntu Versionen funktionieren. Unter http://wiki.openstreetmap.org/index.php/Mapnik gibt es weitere Infos, auch für andere Betriebssysteme.
# Subversion-Installation sudo apt-get install subversion # der Einfachheit halber arbeitet man am besten direkt im Homeverzeichnis cd ~ # Mapnik-Installation (Renderer): sudo apt-get install python-mapnik # Postgres-Installation (Datenbank) sudo apt-get install postgresql-8.3-postgis # Datenbank-Konfiguration sudo -u postgres -i createuser username # ja für superuser, username sollte normaler username sein createdb -E UTF8 -O username gis createlang plpgsql gis exit psql -d gis -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql echo "ALTER TABLE geometry_columns OWNER TO username; ALTER TABLE spatial_ref_sys OWNER TO username;" | psql -d gis # Mapnik-Dateien-Checkout für das Rendern: svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik mapnik/ cd mapnik mv archive/* ~/mapnik svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/ cd osm2pgsql make psql -f 900913.sql -d gis cd .. # Herunterladen und Entpacken des Kartenmaterials wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz # ca 50MB cd world_boundaries wget http://tile.openstreetmap.org/processed_p.tar.bz2 # ca 227MB tar xvf processed_p.tar.bz2 wget http://tile.openstreetmap.org/shoreline_300.tar.bz2 # ca 46MB tar xvjf shoreline_300.tar.bz2 # Weitere Datenbankspeisung und Konfiguration: shp2pgsql -s 900913 -I -g way processed_p shoreline_a | psql -q gis # Mapnik-Einrichtung cd .. vi set-mapnik-env # Ändern der unteren beiden Werte export MAPNIK_DBNAME='gis' export MAPNIK_DBUSER='username' # username von oben und achtet auf die richtigen Anfuehrungszeichen # osm.xml-Generierung: source ./set-mapnik-env ./customize-mapnik-map -> $MAPNIK_MAP_FILE # erstes Rendering python generate_image.py
Die Anleitung ist ja ganz nett und gut beschrieben, allerdings so nicht mehr ganz aktuell. (Zeile 51-60)
http://wiki.openstreetmap.org/wiki/Mapnik#Rendering_with_Mapnik
Ok, vielen Dank!
Der Plan ist schon ein wenig älter, ich bin nur nicht früher dazu gekommen den Artikel zu posten.
OSM und Mapnik entwickeln sich ja natürlich weiter.
Als ich ihn reingestellt habe, hat es so auf jeden Fall funktioniert :)