Jak mogę zaktualizować ogr2ogr, aby zawierał sterownik PostgreSQL?


28

Próbuję użyć ogr2ogr, aby przesłać plik shapefile do zdalnej instalacji PostGres. Kiedy uruchomiłem to polecenie:

celenius:~ celenius$ ogr2ogr -f PostgreSQL PG:"host=255.34.00.00 user=postgres dbname=mydb password=***" Dropbox/data/roads.shp;

Otrzymałem następujący komunikat o błędzie:

Unable to find driver `PostgreSQL'.
The following drivers are available:
  -> `ESRI Shapefile'
  -> `MapInfo File'
  -> `UK .NTF'
 ...
  -> `SVG'
  -> `CouchDB'
  -> `Idrisi'
  -> `ARCGEN'
  -> `SEGUKOOA'
  -> `SEGY'

(Pominąłem niektóre sterowniki, ponieważ nie są one istotne). Czy istnieje sposób, w jaki mogę zaktualizować ogr2ogr, aby zawierał PostgreSQL? Używam komputera Mac z systemem operacyjnym 10.7.4

Odpowiedzi:


25

Korzystając z Homebrew, powinieneś:

brew install gdal --with-postgresql

lub ze starszymi wersjami gdal:

brew install gdal --with-postgres

jeśli już wcześniej instalowałeś gdal z brew, ale bez wsparcia postgresql, po prostu

Odinstaluj gdal


2
mała korekta:brew install gdal --with-postgresql
BenjaminGolder

Czy QGIS nadal będzie działać z HomeDrew GDAL?
Simbamangu

@Simbamangu Sure: homebrew to tylko menedżer pakietów, więc dystrybuowane przez niego wersje GDAL są takie same, jak sam możesz zbudować ze źródła
Andrea Cremaschi

2
Jak postąpiłbyś na komputerze z systemem Windows? Idealnie przy użyciu virtualenv
RutgerH

2
jakie jest rozwiązanie dla systemu Windows?
Denis Stephanov

5

Zaoszczędź sobie bólu i skorzystaj z pakietów binarnych / frameworków Kyngchaos dla OSX .GDAL-Complete jest tym, którego szukasz.

Inną opcją jest użycie HomeBrew .


AFAIK tego właśnie użyłem. Nie zainstalowałem go w żaden inny sposób.
djq

Czy ten plik istnieje: /Library/Frameworks/GDAL.framework/Versions/Current/Libraries/libpq.dylib i co zwraca polecenie „which ogrinfo” z terminala?
Ragi Yaser Burhum

which ogrinfozwraca /usr/local/bin/ogrinfo. Zainstalowałem GDAL i inne z KyngChaos przed zainstalowaniem QGis.
djq

Czy wspomniany plik libpq istnieje w tej lokalizacji?
Ragi Yaser Burhum

1
Jeśli biblioteki libpq.dylib nie ma (biblioteki klienta PostgreSQL), biblioteka OGR nie zostanie załadowana.
Ragi Yaser Burhum

4

zakładając, że skompilowałeś gdal ze źródła, po prostu włącz --with-pg = / path / to / pg_config podczas konfigurowania gdal.

./configure -with-pg=/path/to/pg_config ...

./make clean

./make

./make install

EDYCJA: Należy pamiętać, że pg_configpowinien znajdować się w tym samym katalogu, co inne pliki binarne PostgreSQL, takie jak psqlitp. Należy również pamiętać, że ten szczegół z odpowiedzi user259060 poniżej: należy sprawdzić, czy zainstalowana jest odpowiednia wersja serwera postgresql-dev (np. Na Ubuntu apt list --installed | grep postgresql-server-devjeśli nie znaleziono, użyj apt-cache search postgresql-server-devi zainstaluj odpowiedni pakiet za pomocą sudo apt-get install postgresql-server-dev).


Wydaje mi się „wsparcie PostgreSQL: yes” na ./configurewyjściu, ale starają się ogr2ogr -f PostgreSQLdaje ERROR 1: Unable to find driver 'PostgreSQL'. Ponadto, nie ma PostgreSQLwogrinfo --formats
adamczi

uruchomiłeś ldconfig po instalacji?
dmci

1
Zobacz edycję odpowiedzi na temat instalacji postgresql-server-dev ,, która powinna obsłużyć błąd.
czwartek

2

Ten sam komunikat dostałem podczas pracy w systemie Windows.

Narzekałem na rodzaj cudzysłowów (pojedynczy vs. podwójny), których używałem wokół ciągu połączenia. Zmiana cytatów naprawiła problem.


2

Istnieje możliwość, że zobaczysz coś w rodzaju „Obsługa PostgreSQL: nie”, mimo że źródło zostało skonfigurowane przy użyciu „--with-pg = / path / to / pg_config” ... w takim przypadku uruchom sudo apt- pobierz postgresql-server-dev-all, a następnie spróbuj ponownie.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.