17

ツール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

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

4

2 に答える 2

25

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

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

psql -U postgres mydbname

user として接続しますpostgres

少なくとも の Windows ビルドはosm2pgsqlPostGIS 2.0 をサポートしていないようです - とにかく、約 6 か月前にはサポートしていませんでした。OSM GitHub のこのイシュー レポートと、PostGIS 1.x を予期する osm2pgsql と互換性があるように PostGIS 2 データベースを設定する方法の説明を参照してください。今後の読者は、続行する前に、これらの手順がまだ実際に必要であることを確認する必要があります。osm2pgsqlfor Windows は、ある時点で PostGIS 2 をサポートするように更新される可能性があります。

于 2012-10-30T05:54:03.897 に答える
3

かなり遅くなりましたが、私はつまずいて、この 2016 年 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 );

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

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

幸運を。

于 2016-09-22T13:42:37.070 に答える