Die nachfolgende Anleitung gilt für Debian Wheezy (Stand 01/2013)
Anlegen der PostGIS-Datenbank
- Installation der PostgreSQL-Pakete:
aptitude install postgresql-9.1 postgresql-9.1-postgis postgresql-contrib-9.1 postgis
- Installation des Pakets
postgis
. Wheezy enthält PostGIS 1.5. Wenn, wie in meinem Fall, Funktionen benötigt werden, die erst ab PostGIS 2.0 verfügbar sind, kann diese Version problemlos aus den Quellen installiert werden. - Anlegen eines Users und einer Datenbank. Als Superuser:
Als Usersu - postgres createuser <username> Soll die neue Rolle ein Superuser sein? (j/n) j #psql --command "ALTER USER <username> WITH SUPERUSER"; psql --command "ALTER USER <username> WITH ENCRYPTED PASSWORD 'osm'";
<username>
:createdb osm psql -d osm --command "CREATE EXTENSION hstore;" #createlang plpgsql osm psql -d osm -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql psql -d osm -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
Importieren der OpenStreetMap-Daten mit osm2pgsql
Mit Osm2pgsql können OpenStreetMap-Daten in eine PostGIS-Datenbank importiert werden. Im Wesentlichen werden dabei die OSM-Objekte (Ways, Nodes, Relations), ihre Attribute (Tags) und Geometrie in Datenbanktabellen übernommen. Nodes werden nachplanet_osm_nodes
, Ways nach planet_osm_line
und geschlossene Ways nach planet_osm_polygon
importiert. Welche Attribute übernommen werden sollen, wird in einer Konfigurationsdatei (Import Style) festgelegt.
Relationen vom Typ Multipolygon, Boundary und Route werden nach planet_osm_rels
importiert. In diese Tabelle werden nur die Attribute der Relation und Verweise auf ihre Members eingetragen. Über die Konfigurationsdatei kann festgelegt werden, dass für Relationen mit bestimmten Attributen auch die Geometrie nach planet_osm_polygon
bzw. planet_osm_line
importiert werden.
Daten importieren:osm2pgsql -c -m -s -d osm -U <username> -W -H localhost --bbox <bbox> <osmdatei>
<osmdatei>
ist die Datei OSM-Format (.osm, .osm.bz2 ou .pbf), welche die zu importierende Daten enthält.Nachbearbeiten der importierten Daten
Die mitosm2pgsql
und dem Default-Importstyle erzeugte Datenbank enthält alle Daten, die man für das Rendern einer Karte im OSM-Mapnik-Standard benötigt. Für einen Karte in einem davon wesentlich abweichenden Stil kann es sinnvoll bzw. notwendig sein, die importierten Daten mit SQL nachzubearbeiten. Ein einfaches Anwendungsbeispiel ist das Ersetzen der Werte "yes", "true", "1" durch "yes", um Abfragen in Mapnik oder Tilemill zu vereinfachen:UPDATE planet_osm_line
SET tunnel = (CASE WHEN tunnel IN ('yes','true','1')
THEN 'yes'::text
ELSE tunnel::TEXT
END);
Dies kann natürlich auch in der Datenbankabfrage in Mapnik/Tilemill gemacht werden. Erledigt man das bereits im Vorfeld, dann werden die Abfragen in Mapnik/Tilemill kompakter und lesbarer. Komplexere Anwendungsfälle werden in einem separaten Beitrag behandelt.