DE:Ajoessen/Postgis
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