2012-10-30 15 views
14

Osm2pgsqlツールを使用してOSM fileをPostgreSQLデータベース(Windows、Postgresバージョン9.2)にインポートします。私は osm2pgsql:機能AddGeometryColumnが存在しません

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 

どのように私はこの問題を解決することができますか?

+0

このデータベースにPostGISをインストールしましたか? –

+0

メニュー "スタート"にPostGISフォルダがあります。特定のデータベース用にPostGISを明示的にインストールする必要がありますか? –

答えて

20

osm2pgsql.exeを使用しようとしているデータベースにPostGISサポートを追加していないようです。 the PostGIS installation documentation (2.0)を参照してください。

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

psql -U postgres mydbname 

postgresとして接続します。

少なくともWindowsのosm2pgsqlビルドは、PostGIS 2.0をサポートしていないようです。 OSM GitHubのthis issue reportinstructions on how to set a PostGIS 2 database to be compatible with an osm2pgsql that expects PostGIS 1.xを参照してください。将来の読者は、これらのステップが進行する前にまだ実際に必要であることを確認する必要があります。 Windows用のosm2pgsqlがある時点でPostGIS 2をサポートするように更新される可能性があります。

+0

コマンドラインウィンドウで '' C:\ Program Files \ PostgreSQL \ 9.2 \ bin \ psql "-d ccp-web -f postgis.sql --username = ccp-web-user'を実行すると、 psql:postgis.sql:6054:ERROR:現在のトランザクションがキャンセルされ、残りのコマンドは無視されます。どうすれば修正できますか? –

+0

@DmitriPisarenko 'template_postgis'データベースをお持ちですか?そのテンプレートからデータベースを作成してください。あなたがそれをしたくなければ、何が間違っているのかから与えられたエラーから言うことは難しいです。最初のエラーを調べる必要があります。追加の引数 '-v ON_ERROR_STOP = 1'を指定してpsqlコマンドを実行してみてください。 –

+0

テンプレート 'template_postgis_20'からデータベースを作成しました。 '-v ON_ERROR_STOP = 1'でコマンドを実行すると、' psql:C:/ Program Files/PostgreSQL/9.2/share/contrib/postgis-2.0/postgis.sql:47:ERROR:laguageの許可がありません。 c。私はそれが失敗し、このコマンドであるとします ' \t RETURNSがAS \tを回転楕円体FUNCTIONのspheroid_in(のCString)をCREATE OR REPLACE '$ libdirという/ PostGISの-2.0'、 'ellipsoid_in' \t LANGUAGE 'C' IMMUTABLE STRICT;' –

1

ちょっと遅くなりましたが、私はこの9月16日につまずいてトリップしました。 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:だから、次のようなものは、トリックを行う必要があります。

varcharsがクォートされていることを確認します。整数とブール値は引用符で囲まれておらず、正しい値がその場所にあることを確認してください。

幸運。

関連する問題