web-dev-qa-db-ja.com

osm2pgsql:関数AddGeometryColumnが存在しません

ツール Osm2pgsql を使用して OSMファイル をPostgreSQLデータベース(Windows、Postgresバージョン9.2)にインポートしたい。

次のコマンドを実行すると

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

エラーが発生します

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

ドイツ語からの翻訳:

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

どうすればこれを修正できますか?

16

osm2pgsql.exeを使用しようとしているデータベースにPostGISサポートを追加していないようです。 PostGISインストールドキュメント(2.0) を参照してください。

PostGIS 2.0を使用しているので、CREATE EXTENSION postgis;だけでPostGISをロードできるはずです。このコマンドは、スーパーユーザー(通常はユーザーpostgres)として実行する必要があります。使用する:

psql -U postgres mydbname

ユーザーpostgresとして接続します。

少なくともosm2pgsqlのWindowsビルドはPostGIS2.0をサポートしていないようです-とにかく、約6か月前にはサポートしていませんでした。 OSM GitHubの この問題レポート および PostGIS1.xを想定するosm2pgsqlと互換性のあるPostGIS2データベースを設定する方法の説明 を参照してください。将来の読者は、先に進む前に、これらの手順が実際に必要であることを確認する必要があります。 Windows用のosm2pgsqlは、いつかPostGIS2をサポートするように更新される可能性があります。

24
Craig Ringer

かなり遅いですが、私はこの16年9月につまずいてつまずきました。 SQL行:

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

この関数シグネチャとして書き直す必要があります。

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

空白は重要ではありません。したがって、次のようなものでうまくいくはずです。

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

実際のINSERTステートメントの1つで、私のバージョンでは「geom」である正しい列名を確認してください。

Varcharsが引用符で囲まれ、整数とブール値が引用符で囲まれていないこと、そしてもちろん正しい値がその場所にあることを確認してください。

幸運を。

2
aorta