PostGIS: Daten für den Renderingprozess vorbereiten

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:
    su - 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'";
    

    Als User <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 nach planet_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 mit osm2pgsql 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.