Come posso aggiornare ogr2ogr per includere il driver PostgreSQL?


28

Sto provando a usare ogr2ogr per caricare uno shapefile su un'installazione remota di PostGres. Quando ho eseguito questo comando:

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

Ho ricevuto il seguente messaggio di errore:

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

(Ho omesso alcuni driver in quanto non rilevanti). Esiste un modo per aggiornare ogr2ogr per includere PostgreSQL? Sto usando un Mac con OS 10.7.4

Risposte:


25

Utilizzando Homebrew dovresti:

brew install gdal --with-postgresql

o con versioni precedenti di gdal:

brew install gdal --with-postgres

se hai già installato gdal con brew prima ma senza supporto postgresql, basta

brew disinstalla gdal


2
una piccola correzione:brew install gdal --with-postgresql
BenjaminGolder,

QGIS funzionerà ancora con l'homebrew GDAL?
Simbamangu,

@Simbamangu Certo: homebrew è solo un gestore di pacchetti, quindi le versioni GDAL che distribuisce sono le stesse che puoi costruirti dalla fonte
Andrea Cremaschi,

2
Come procederesti su una macchina Windows? Idealmente usando un virtualenv
RutgerH il

2
qual è la soluzione per Windows per favore?
Denis Stephanov,

5

Risparmia un po 'di dolore e usa i binari / framework Kyngchaos per OSX .GDAL-Complete è quello che stai cercando.

Un'altra opzione è utilizzare HomeBrew .


AFAIK questo è quello che ho usato. Non l'ho installato in nessun altro modo.
djq,

Esiste questo file: /Library/Frameworks/GDAL.framework/Versions/Current/Libraries/libpq.dylib e cosa restituisce il comando 'which ogrinfo' dal terminale?
Ragi Yaser Burhum,

which ogrinforitorna /usr/local/bin/ogrinfo. Ho installato GDAL e altri da KyngChaos prima di installare QGis.
djq,

Il file libpq che ho citato esiste in quella posizione?
Ragi Yaser Burhum,

1
Se libpq.dylib non è presente (la libreria client PostgreSQL), la libreria OGR non verrà caricata.
Ragi Yaser Burhum,

4

supponendo che tu abbia compilato gdal dal sorgente, includi semplicemente --with-pg = / path / to / pg_config quando stai configurando gdal.

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

./make clean

./make

./make install

EDIT: Nota che pg_configdovrebbe essere nella stessa directory con gli altri tuoi binari PostgreSQL, come psql, ecc. Nota anche, questo dettaglio dalla risposta di user259060 di seguito: dovresti verificare che sia installata una versione postgresql-server-dev appropriata (ad es. Su Ubuntu apt list --installed | grep postgresql-server-devse non trovato utilizzare apt-cache search postgresql-server-deve installare il pacchetto corrispondente con sudo apt-get install postgresql-server-dev).


Sembra che ottenga "Supporto PostgreSQL: sì" ./configurenell'output, ma sto cercando di ogr2ogr -f PostgreSQLdare ERROR 1: Unable to find driver 'PostgreSQL'. Inoltre, no PostgreSQLinogrinfo --formats
adamczi il

hai eseguito ldconfig dopo l'installazione?
dmci,

1
Vedi la modifica alla risposta sull'installazione di postgresql-server-dev ,, che dovrebbe gestire l'errore.
Thayer,

2

Ho ricevuto lo stesso messaggio su Windows.

Si lamentava del tipo di virgolette (singole o doppie) che stavo usando intorno alla stringa di connessione. Il cambio delle virgolette ha risolto il problema.


2

C'è la possibilità che tu possa vedere qualcosa come "Supporto PostgreSQL: no", anche se hai configurato il sorgente usando "--with-pg = / path / to / pg_config" ... in quel caso, esegui sudo apt- ottenere install postgresql-server-dev-all e quindi riprovare.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.