2012-10-30 19 views
14

Osm2pgsql aracını kullanarak PostgreSQL veritabanına (Windows, Postgres Version 9.2) OSM file almak istiyorum. Ben osm2pgsql: İşlev AddGeometryColumn yok

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

komutu

çalışma aşağıdaki

Ben Almancadan hata

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 

Çeviri olsun:

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 

Bunu nasıl düzeltebilirim?

+0

PostGIS'i bu veritabanına yüklediniz mi? –

+0

"Başlat" menüsünde bir PostGIS klasörü var. PostGIS'i belirli bir veritabanı için açıkça yüklemem gerekir mi? –

cevap

20

osm2pgsql.exe kullanmaya çalıştığınız veritabanına PostGIS desteği eklemediniz gibi görünüyor. Bakınız the PostGIS installation documentation (2.0).

PostGIS 2.0'ı kullandığınızdan, PostGIS'i yüklemek için yalnızca CREATE EXTENSION postgis;'u kullanabilmeniz gerekir. Bu komut süper kullanıcı olarak çalıştırılmalıdır - normal olarak kullanıcı postgres. Kullanın:

psql -U postgres mydbname 

kullanıcı postgres olarak bağlanmak için.

En azından Windows'un osm2pgsql sürümleri PostGIS 2.0'ı desteklemiyor ya da yaklaşık altı ay önce yapmadı. OSM GitHub'da this issue report ve instructions on how to set a PostGIS 2 database to be compatible with an osm2pgsql that expects PostGIS 1.x. Gelecek okuyucular, ilerlemeden önce bu adımların hala gerekli olduğunu kontrol etmelidir; Windows için osm2pgsql'un bir noktada PostGIS 2'yi desteklemek için güncellenmesi olasıdır.

+0

Bir komut satırı penceresinde "C: \ Program Files \ Post greSQL \ 9.2 \ bin \ psql" -d ccp-web -f postgis.sql - username = ccp-web kullanıcısı "çalıştırdığımda, psql: postgis.sql: 6054: ERROR: Geçerli İşlem iptal edildi, kalan komutlar yok sayılacak. Onları nasıl düzeltebilirim? –

+0

@DmitriPisarenko 'template_postgis' veritabanına sahip misiniz? Veritabanını bu şablondan oluşturun. Bunu yapmak istemiyorsan, yanlış olan hatalardan söylemek zor. * İlk * hataya bakmanız gerekiyor.Psql komutunu ek argüman '-v ON_ERROR_STOP = 1' ile çalıştırmayı deneyin. –

+0

"template_postgis_20" şablonundan bir veritabanı oluşturdum. C:/Program Files/PostgreSQL/9.2/share/contrib/PostGIS-2.0/postgis.sql: 47: HATA: Birlikte komutu çalıştırdığınızda '-v ON_ERROR_STOP = 1' hatasını' psql'in olsun Dili Atatürk için bir izni C'. Ben başarısız bu komut olduğunu varsayalım: ' \t GETİRİLERİ OLARAK \t küremsi İŞLEVİ spheroid_in (cstring) CREATE OR REPLACE '$ libdir/PostGIS-2,0', 'ellipsoid_in' \t DİL 'c' IMMUTABLE KESİN;' –

1

Oldukça geç ama ben bu Sept '16 üzerine tökezledim. SQL hattı:

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

ihtiyaçları bu fonksiyon imza olarak yeniden yazılması için:

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

Beyaz boşluk önemsizdir.

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

Kontrolü benim sürümünde 'geom' olduğunu doğru sütun adı için gerçek INSERT tabloların tek: Yani aşağıdaki gibi bir şey hile yapmak gerekir.

Varcharların alıntılandığından, tamsayıların ve boolean'ın seçilmediğinden ve elbette doğru değerlerin yerlerde olduğundan emin olun.

İyi şanslar.