DE:Ajoessen/Postgis

From OpenStreetMap Wiki
Jump to navigation Jump to search

Die nachfolgende Seite beschreibt das Anlegen einer Datenbank für OSM-Daten unter Windows XP und Windows 7.

Für die Installation muß man gegebenenfalls Administratorrechte haben.

Installation von PostgreSQL

http://www.postgresql.org/download/windows

Version 9.07 für 32 Bit auswählen

oder direkt:

http://get.enterprisedb.com/postgresql/postgresql-9.0.7-1-windows.exe

=> postgresql-9.0.7-1-windows.exe


Installation Directory: Für Windows XP: C:\Programme\PostgreSQL\9.0 Für Windows 7: C:\Programme (x86)\PostgreSQL\9.0

Data Directory: ..\data (oder Laufwerk wählen und neues Verzeichnis anlegen)

Password: osm

Port: 5432

Locale: German, Germany

[ ] Stack Builder


Kontrolle: pgAdmin starten

Windows XP:

Start/Programme/PostgreSQL 9.0/pgAdmin III

Doppelklick auf Server>PostgreSQL 9.0 (localhost:5432)

Windows 7:

Start/Alle Programme/PostgreSQL 9.0 (x86)/pgAdmin III

Doppelklick auf Server>PostgreSQL 9.0 (x86) (localhost:5432)


Installation von Postgis

http://postgis.refractions.net/download/windows

Abschnitt: For PostgreSQL 8.3,8.4, 9.0 Users

[+] PostGIS 1.5.2 release for PostgreSQL 9.0 32-bit (inc. GEOS 3.2.2/PROJ 4.6.1 ~12Mb)

=> postgis-pg90-setup-1.5.2-3.exe

User Name: postgres

Password: osm

Port: 5432

Database Name: postgis

Would you like to enable... Ja


Passwort-Authentifizierung deaktivieren

Windows XP mit separatem Laufwerk:

Start/Programme/PostgreSQL 9.0/pgAdmin III

Datei/pg_hba.conf öffnen

Suchen in: E:\data


Windows 7 im Programmpfad:

Start/Alle Programme/PostgreSQL 9.0 (x86)/pgAdmin III

Datei/pg_hba.conf öffnen

Computer/Lokaler Datenträger (C:)/Program Files(x86)/PostgreSQL/9.0/data


Datei: pg_hba.conf

erste Zeile doppelclicken

Methode md5 auf trust umschalten

speichern

Datei/Exit

Neuen user anlegen

batch-Datei osmuserneu.bat für Windows XP:

%ProgramFiles%\PostgreSQL\9.0\bin\createuser -U postgres osmuser

für Windows 7:

"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\createuser" -U postgres osmuser
pause

Zwischenfrage superuser mit j beantworten

Die große Entscheidung: osmosis oder osm2pgsql?

Hier muß sich der Anwender nun entscheiden, was er mit den Daten in der Datenbank anfangen will.

Sollen die Daten später wieder als osm-Daten extrahiert werden, verwendet man osmosis. Dies legt die Daten genau so ab, wie sie in osm benutzt werden (Knoten, Wege und Relationen).

Will man mit Mapnik Karten rendern, verwendet man osm2pgsql, um die Daten "mundgerecht" für Mapnik zu importieren. Dabei werden die für das Rendern notwendigen Polygonelemente erzeugt, und Routen-Relationen als zusätzliche Wege erzeugt. Ausserdem wird aus den layer=*-Einträgen die Renderreihenfolge bestimmt.

Neue Datenbank für osm2pgsql anlegen

batch-Datei osmdbneu.bat für Wndows XP:

%ProgramFiles%\PostgreSQL\9.0\bin\createdb -U postgres -E UTF8 -O osmuser osmdb
%ProgramFiles%\PostgreSQL\9.0\bin\createlang -U postgres plpgsql osmdb
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\postgis-1.5\postgis.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\postgis-1.5\spatial_ref_sys.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\_int.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\hstore.sql"

für Windows 7:

"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\createdb" -U postgres -E UTF8 -O osmuser osmdb
"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\createlang" -U postgres plpgsql osmdb
"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\psql" -U postgres -d osmdb -f "%ProgramFiles(x86)%\PostgreSQL\9.0\share\contrib\postgis-1.5\postgis.sql"
"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\psql" -U postgres -d osmdb -f "%ProgramFiles(x86)%\PostgreSQL\9.0\share\contrib\postgis-1.5\spatial_ref_sys.sql"
"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\psql" -U postgres -d osmdb -f "%ProgramFiles(x86)%%\PostgreSQL\9.0\share\contrib\_int.sql"
"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\psql" -U postgres -d osmdb -f "%ProgramFiles(x86)%\PostgreSQL\9.0\share\contrib\hstore.sql"
pause

Wenn es Fehlermeldungen hagelt, probeweise nur die ersten beiden Zeilen in die batch-Datei schreiben.

Geofabrik-Extrakt mit osm2pgsql in die Datenbank laden

Extrakt Herunterladen und ablegen unter D:\Karten\osm\Geofabrik osmconvert.exe herunterladenund ablegen in D:\Karten\osm\osmconvert

batchdatei nrw-pbf2osm.bat:

osmconvert.exe D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf -o=nrw.osm
pause

download von osm2pgsql von http://tile.openstreetmap.org/osm2pgsql.zip

entpacken in Verzeichnis D:\Karten\OpenStreetMap\osm2pgsql

Der beigefügte default.style passt nicht mehr zum aktuellen Mapnik-Stil. Deshalb muß die aktuelle Version hier heruntergeladen und in das osm2pgsql-Verzeichnis geschoben werden.

Die Größe des Cachespeichers richtet sich nach dem vorhanden Arbeitsspeicher, 500MB für das Betriebssystem sollte man davon aber abziehen. Mehr als 3GB sind für Windows nicht erlaubt.

Batchdatei nrw2db.bat:

D:\Karten\OpenStreetMap\osm2pgsql\osm2pgsql --create --database osmdb --username osmuser --prefix planet -s --cache 3000 -S D:\Karten\OpenStreetMap\osm2pgsql\extended.style --hstore D:\Karten\osm\osmconvert\nrw.osm
pause

Kontrolle:

"%ProgramFiles(x86)%\PostgreSQL\9.0\bin\psql" -U postgres -d osmdb
\d

-->Tabellenliste

select name from planet_line where ((name) is not null) limit 25;

-->die ersten 25 benannten Wege

Datenbank für osmosis "snapshot-Schema" anlegen

osmosis latest von hier besorgen und nach D:\Karten\Openstreetmap\osmosis\ (ohne die Versionsnummer!) entpacken.

Es gibt zwei Datenbankschemen: simple und snapshot. Ersteres ist veraltet und sollte nicht mehr verwendet werden.

osmosisdbneu.bat für Windows XP:

%ProgramFiles%\PostgreSQL\9.0\bin\createdb -U postgres -E UTF8 -O osmuser osmosisdb
%ProgramFiles%\PostgreSQL\9.0\bin\createlang -U postgres plpgsql osmosisdb
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\postgis-1.5\postgis.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\postgis-1.5\spatial_ref_sys.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\_int.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\hstore.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "D:\Karten\OpenStreetMap\osmosis\script\pgsql_snapshot_schema_0.6.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "D:\Karten\OpenStreetMap\osmosis\script\pgsql_snapshot_schema_0.6_action.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "D:\Karten\OpenStreetMap\osmosis\script\pgsql_snapshot_schema_0.6_bbox.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d osmosisdb -f "D:\Karten\OpenStreetMap\osmosis\script\pgsql_snapshot_schema_0.6_linestring.sql" 

Geofabrik-Extrakt mit osmosis in Datenbank laden

osm2db.bat:

D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-xml file="D:\Karten\osm\Geofabrik\duesseldorf.osm.bz2" --write-pgsql user="osmuser" database="osmosisdb"

Daten aus der Datenbank mit osmosis auslesen und filtern

Hochspannungsleitungen filtern:

D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pgsql user="osmuser" database="osmosisdb" validateSchemaVersion="no" --dd --tf accept-ways power=* --tf accept-relations route=power --used-node --write-xml power.osm

Daten über eine Rechteckauswahl filtern:

D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pgsql user="osmuser" database="osmosisdb" --dbb left=6.478 right=6.706 bottom=51.285 top=51.406 --write-xml Krefeld.osm