2012-10-30 9 views
14

Ich möchte OSM file in meine PostgreSQL-Datenbank (Windows, Postgres Version 9.2) mit dem Tool Osm2pgsql importieren.osm2pgsql: Funktion AddGeometryColumn existiert nicht

Wenn ich folgenden Befehl ausführen

osm2pgsql.exe --create -d mydb artyom.xml -U myuser -W --style default.style 

Ich erhalte den Fehler

SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2); 
failed: FEHLER: Funktion addgeometrycolumn(unknown, unknown, integer, unknown, 
integer) existiert nicht 
LINE 1: SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, ... 
      ^
HINT: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen ├╝b 
erein. Sie m├╝ssen m├Âglicherweise ausdr├╝ckliche Typumwandlungen hinzuf├╝gen. 

Error occurred, cleaning up 

Übersetzung aus dem Deutschen:

SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2); 
failed: ERROR: Function addgeometrycolumn(unknown, unknown, integer, unknown, 
integer) doesn't exist 
LINE 1: SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, ... 
      ^
HINT: No function matches the specified name and argument types. Maybe you need 
to make explicit casts. 

Error occurred, cleaning up 

Wie kann ich dieses Problem beheben?

+0

Haben Sie PostGIS in dieser Datenbank installiert? –

+0

Im Menü "Start" befindet sich ein PostGIS-Ordner. Muss ich PostGIS explizit für eine bestimmte Datenbank installieren? –

Antwort

20

Offenbar haben Sie der Datenbank, die Sie verwenden möchten, keine PostGIS-Unterstützung hinzugefügt osm2pgsql.exe. Siehe the PostGIS installation documentation (2.0).

Da Sie PostGIS 2.0 verwenden, sollten Sie nur CREATE EXTENSION postgis; PostGIS laden können. Dieser Befehl muss als Superuser ausgeführt werden - normalerweise der Benutzer postgres. Verwenden Sie:

psql -U postgres mydbname 

als Benutzer postgres verbinden.

Es scheint, dass zumindest die Windows-Builds von osm2pgsql PostGIS 2.0 nicht unterstützen - oder vor etwa sechs Monaten sowieso nicht. Siehe this issue report auf dem OSM GitHub und instructions on how to set a PostGIS 2 database to be compatible with an osm2pgsql that expects PostGIS 1.x. Zukünftige Leser sollten prüfen, ob diese Schritte tatsächlich erforderlich sind, bevor sie fortfahren; Es ist wahrscheinlich, dass osm2pgsql für Windows aktualisiert wird, um PostGIS 2 irgendwann zu unterstützen.

+0

Wenn ich "C: \ Programme \ Post greSQL \ 9.2 \ bin \ psql" -d ccp-web-f postgis.sql --username = ccp-web-user "in einem Befehlszeilenfenster starte, bekomme ich viele Fehler wie 'psql: postgis.sql: 6054: FEHLER: Aktuelle Transaktion wurde abgebrochen, verbleibende Befehle werden ignoriert'. Wie kann ich sie reparieren? –

+0

@DmitriPisarenko Haben Sie eine 'template_postgis' Datenbank? Erstellen Sie stattdessen die Datenbank aus dieser Vorlage. Wenn Sie das nicht wollen, ist es schwer, von den Fehlern zu geben, die gegeben wurden, was falsch ist. Sie müssen sich den * ersten * Fehler ansehen.Versuchen Sie, den Befehl psql mit dem zusätzlichen Argument '-v ON_ERROR_STOP = 1' auszuführen. –

+0

Ich habe eine Datenbank aus der Vorlage 'template_postgis_20' erstellt. Wenn ich den Befehl mit '-v ON_ERROR_STOP = 1 'starte, bekomme ich den Fehler' psql: C:/Programme/PostgreSQL/9.2/share/contrib/postgis-2.0/postgis.sql: 47: FEHLER: keine Erlaubnis für Sprache c'. Ich nehme an, es ist dieser Befehl, der fehlschlägt: CREATE OR FUNCTION spheroid_in REPLACE (cstring) \t RETURNS spheroid \t AS '$ libdir/PostGIS-2.0', 'ellipsoid_in' \t SPRACHE 'c' UNVERÄNDERLICH strict; ' –

1

Ziemlich spät, aber ich stolperte und stolperte über diese Sept '16. Die SQL-line:

SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2);

Bedürfnisse wie diese Funktion Unterschrift neu geschrieben werden:

('catalog','schema','table','column',srid,'type',type_mod,boolean);

Leerraum ist unwesentlich. So etwas wie die folgenden soll es tun:

SELECT AddGeometryColumn('','','planet_osm_point', 'way', 900913, 'POINT', 2,true); 

Überprüfen eines der tatsächlichen INSERT-Anweisungen für die korrekten Spaltennamen, die in meiner Version ist ‚geom‘.

Stellen Sie sicher, dass varchars in Anführungszeichen gesetzt sind, Integer und Boolesche Werte nicht angegeben sind und natürlich die richtigen Werte an den Stellen sind.

Viel Glück.

Verwandte Themen