I made some experiments with mapnik rendering. Have a look a the slippy map of Reykjavik with funny colours.

osm daten runterladen

Kleiner Auschnitte von http://download.geofabrik.de/osm

Beispiel Island
wget http://download.geofabrik.de/osm/europe/iceland.osm.bz2

Kuestenlinien und Grenzen

Das Verzeichnis world_boundaries ins mapnik Verzeichnis linken damit generate_tiles es findet.

wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz
wget http://tile.openstreetmap.org/processed_p.tar.bz2
wget http://tile.openstreetmap.org/shoreline_300.tar.bz2
wget http://www.nacis.org/naturalearth/10m/cultural/10m-populated-places.zip
wget http://www.nacis.org/naturalearth/110m/cultural/110m-admin-0-boundary-lines.zip

Icons

Verzeichnis symbols wird benoetigt fuer mapnik.
svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik/symbols/

Installieren von postgres und postgis

postgresql-8.4
postgresql-client-8.4
postgresql-8.4-postgis
postgis

postgres admin einrichten

Siehe http://wiki.ubuntuusers.de/PostgreSQL#Admin-Passwort-einrichten
standard admin user heisst postgres
sudo sudo -u postgres psql
\password postgres # passwort einrichten
\q # postgres verlassen

OSM DB anlegen

sudo sudo -u postgres createdb osm

postgis aktivieren fuer die OSM DB

Alle folgenden postgres Befehle unter dem Benutzer postgres durchfuehren.
sudo sudo -u postgres

createlang plpgsql -d osm
psql osm -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql
psql osm -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql
psql osm –command ‚GRANT SELECT ON spatial_ref_sys TO PUBLIC‘
psql osm –command ‚GRANT ALL ON geometry_columns TO PUBLIC‘

Import Script osm2pgsql

osm2pgsql importiert nur tags, die in dem Konfigurationsfile default.style festgelegt sind. Will man andere Tags kann man entweder default.style editieren oder ein anderes Style File angeben. Mit der Option –style wird default.style ueberschrieben.
-S|–style Location of the style file. Defaults to /usr/share/osm2pgsql/default.style

OSM Daten in postgres DB einlesen

sudo sudo -u postgres osm2pgsql -d osm iceland.osm.bz2

Die Mapnik Bibliothek

Ubuntu Pakete python-mapnik und libmapnik0.7.

Skripte um Mapnik zu verwenden

Skripte, die mit Hilfe von Mapnik Tiles erzeugen erhaelt man aus dem osm svn.
svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik/

osm.xml

osm.xml ist das Stylesheet File um das es beim Rendering mit Mapnik geht. Dort sind Styles, Farben, Linien, Layers etc definiert.

generate_xml.py

generate_xml.py befuellt osm.xml mit postgres Zugangsdaten u.a.
./generate_xml.py osm.xml my_osm.xml
–host localhost
–user postgresuser
–dbname osm
–symbols ./symbols/
–world_boundaries ./world_boundaries/
–port 5432
–password posrgrespassword

Rendering festlegen

Hier findet die eigentliche Arbeit, um die es geht statt :) Das my_osm.xml wird editiert. Mit dem Mapnik Viewer koennen die Aenderungen live ueberprueft werden.
apt-get install mapnik-viewer

Tiles erzeugen mit generate_tiles.py

generate_tiles.py erzeugt Tiles aus dem OSM-XML-File.
Einige Kleinigkeiten muss man mit Hand anpassen:

bbox Ausschnitt festlegen
Im Beispiel die geographischen Koordinaten von Reykjavik.
Vorsicht nur kleine Ausschnitte rendern. Reykjavik dauert einige Stunden. Island eine ganze Nacht (und Island hat im Moment noch extrem wenig Daten, ist also vergleichsweise „klein“). Die ganze Welt wuerde ein Jahr dauern.
bbox = (-22.10,64.01, -21.60,64.25)

XML-File, dass verwendet werden soll
Das File, das man sich vorher mit generate_xml. erzeugt hat.
Und in dem man dann Farben, Groessen, etc. für die einzelnen Objekte festgelegt hat.
mapfile = „/absoluter_pfad/osm_reykjavik.xml“

Verzeichnis in das die Tiles gespeichert werden sollen
tile_dir = „/absoluter_pfad/tiles_reykjavik/“

Siehe

  • Das Buch „OpenStreetMap“ von Frederik Ramm und Jochen Topf.
  • http://wiki.openstreetmap.org/wiki/Mapnik