DE:Postgis92 Win7 64bit
Im nachfolgenden beschreibe ich die erste Einrichtung meiner PostGIS-DB auf Windows 7 64bit. Hilfestellung bekam ich im Forum unter dem Posting [1].
Es wurde PostgreSQL für das aktuellen Betriebssytem von der Seite [2] heruntergeladen. Zur Anwendung kam postgresql-9.2.4-1-windows-x64.exe Der von [Ajoessen] beschriebene Weg hat leider nicht funktioniert und wie man mir mitteilte ist dieser für die aktuellen Versionen schon veraltet.
Meine OSM-Daten sollen später mittels osmosis in die Datenbank osm aufgenommen werden.
Die langen Verzeichnisnamen habe ich teilweise eingekürzt oder mit einer entsprechenden Bezeichnung versehen. Dieses an den []-Klammern zu erkennen. z.B. [osmosis-Verzeichnis]
Sicherlich könnte man viele Schritte auch in eine Batch-File verpacken. Das kann man später nochmal machen.
Schritt 1 - Installation PostgreSQL
Ausführen der EXE und anschließendes ergänzen der Umgebungsvariablen PATH um den Verweis auf C:\Program Files\PostgreSQL\9.2\bin. Im Rahmen der Installation wurden folgende Parameter zugewiesen bzw. übernommen:
- Password: osm
- Port: 5432
- Locale: German, Germany
Im Anschluss wurde der Stack installiert. Dieses ist ein Plugin-Verwalter der bei Bedarf Komponenten herunterlädt und installiert.
Hier wurde mit dann die zugehörige Version von PostGIS eingebunden. Unter [3] soind noch einige Anmerkungen zu möglichen Bugs zu finden.
Schritt 2 - Anlegen einer Datenbank osm
Ich habe die neue Datenbank über die graphische Oberfläche von pgAdmin III erstellt.
- Kontextmenü (rechte Maustaste) auf den DB-Eintrag -> Neue Datenbank
- Eingabe des DB-Namen in das entsprechende Textfeld
Schritt 3 - Einlesen von SQL-Anweisungen
- Öffnen eines Kommandozeilenfensters in Windows
- Wechsel in das unten angebene PostgreSQL-Unterverzeichnis für die SQL-Statements. Dadurch kann auf eine Übergabe des langen Verzeichnisnamens verzichtet werden.
[PostgreSQL-Verzeichnis]\9.2\share\contrib\postgis-2.0>psql -U postgres -d osm -f postgis.sql [PostgreSQL-Verzeichnis]\9.2\share\contrib\postgis-2.0>psql -U postgres -d osm -f postgis_comments.sql [PostgreSQL-Verzeichnis]\9.2\share\contrib\postgis-2.0>psql -U postgres -d osm -f spatial_ref_sys.sql
Schritt 4 - Erstellen des Objektes hstore
Beim ersten Durchlauf von Schritt 4 war es zu einer Fehlermeldung gekommen .... Aus diesem Grunde war das Erstellen von hstore erforderlich.
- Starten von pgAdmin III und Verbinden mit der osm-Datenbank
- Klicken auf das Icon mit der Lupe und dem Text SQL
- In den SQL-Editor nachfolgenden Ausdruck eingeben und mit dem grünen Pfeil (Abfrage ausführen) absenden:
CREATE EXTENSION hstore;
Schritt 5 - Einspielen des pgsnapshot-Schema von osmosis
- Öffnen eines Kommandozeilenfensters in Windows
- Wechsel in das aktuelle osmosis-Verzeichnis für die Skripte. Dadurch kann auf eine Übergabe des langen Verzeichnisnamens verzichtet werden.
[osmosis-Verzeichnis]\script>psql -U postgres -d osm -f pgsnapshot_schema_0.6.sql
- Dieses Schema wurde gewählt um die Daten direkt mit osmosis in die DB einzuspielen ohne Verwendung eines DUMP -> [4] #18
Ein Großteil der Tabellen wurde bereits angelegt was ein Blick auf den Verzeichnisbau zeigt.
Es kommt jetzt leider immer noch zu einer Fehlermeldung: ALTER TABLE psql:pgsnapshot_schema_0.6.sql:40: FEHLER: Funktion addgeometrycolumn(unknown, unknown, integer, unknown, integer) existiert nicht ZEILE 1: SELECT AddGeometryColumn('nodes', 'geom', 4326, 'POINT', 2);
TIP: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen über ein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
Zunächst lag die Vermutung das es an einem fehlenden plpgsql lag - aber der Aufruf
C:\Program Files\PostgreSQL\9.2\bin>createlang -U postgres plpgsql osm
createlang: Sprache »plpgsql« ist bereits in Datenbank »osm« installiert
hat dieses nicht bestätigt. plpgsql ist schon standardmäßig mit installiert.
Schritt 6 - zwei weitere SQL-Scripte
- Öffnen eines Kommandozeilenfensters in Windows
- Wechsel in das aktuelle osmosis-Verzeichnis für die Skripte.
- die beiden nachfolgenden Scripte sind in dieser Reihenfolge einzulesen!
[osmosis-Verzeichnis]\script>psql -U postgres -d osm -f pgsnapshot_schema_0.6_bbox.sql [osmosis-Verzeichnis]\script>psql -U postgres -d osm -f pgsnapshot_schema_0.6_linestring.sql
Schritt 7 - Direkter Datenimport über osmosis
Testweise werden jetzt die OSM-Daten der geofabrik eingelesen. Es können natürlich auch die aus jedem anderen Bereich sein.
- Öffnen eines Kommandozeilenfensters in Windows
- Wechsel in das Verzeichnis für die SQL-Statements wo die OSM-Datei abgelegt ist. Dadurch kann auf eine Übergabe des langen Verzeichnisnamens verzichtet werden.
[osmosis-Verzeichnis]/osmosis/bin/osmosis.bat --read-xml file="schleswig-holstein-latest.osm.bz2" --write-pgsql user="postgres" database="osm" password="osm"
Hinweise: Wenn Sie Daten über andere Quellen beziehen, dann ist darauf zu achten das die OSM-Daten user und Datumsangaben beinhalten.
Schritt 8 - abschließender Test
Um festzustellen ob alles korrekt installiert wurde kann folgender Test durchgeführt werden:
- im pgAdminIII unter dem Menüpunkt Plugins die PSQL-Console aufrufen
- folgende Eingaben durchführen \d nodes bzw. \d ways und mit Return bestätigen - das Ergebnis müßte wie folgt aussehen.
osm=# \d nodes Table "public.nodes" Column | Type | Modifiers --------------+-----------------------------+----------- id | bigint | not null version | integer | not null user_id | integer | not null tstamp | timestamp without time zone | not null changeset_id | bigint | not null tags | hstore | geom | geometry(Point,4326) | Indexes: "pk_nodes" PRIMARY KEY, btree (id) "idx_nodes_geom" gist (geom)
osm=# \d ways Table "public.ways" Column | Type | Modifiers --------------+-----------------------------+----------- id | bigint | not null version | integer | not null user_id | integer | not null tstamp | timestamp without time zone | not null changeset_id | bigint | not null tags | hstore | nodes | bigint[] | bbox | geometry(Geometry,4326) | linestring | geometry(Geometry,4326) | Indexes: "pk_ways" PRIMARY KEY, btree (id) "idx_ways_bbox" gist (bbox) "idx_ways_linestring" gist (linestring) CLUSTER
Links
- PostGIS-Tutorial Grundlagen (deu)
- Kartenraster- und Straßenverzeichnis von Brogo
- osmosis-osm2postgresql-osm2pgsql-openstreetmap-daten-datenbanken-und-spielplatze
- QGIS-Blog - Bremer Landesgrenzen mit OpenStreetMap-Daten und QGIS erzeugen.
- Blazejak's GIS Blog
- Erstellen von Multipolygon-Einträgen
- Postgis Bibel - (eng)
- OpenDump-Tutorial