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

djq
źródło

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

Andrea Cremaschi
źródło
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 .

Ragi Yaser Burhum
źródło
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).

dmci
źródło
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.

Michał
źródło
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.

użytkownik259060
źródło
1

Po przeczytaniu dokumentu formatu ogr2ogr Vector wygląda na to, że musisz zainstalować bibliotekę klienta PostgreSQL (libpq).

To podobne pytanie wydaje się dawać wgląd w rozwiązanie podobnego problemu, tylko z powiązaniami Pythona.

RyanDalton
źródło