DE:Postgis92 Win7 64bit

From OpenStreetMap Wiki
Jump to navigation Jump to search

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.

Jt postgresql stack.jpg

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.

Jt pgadmin db anlegen.jpg

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