Comment puis-je mettre à jour ogr2ogr pour inclure le pilote PostgreSQL?

28

J'essaie d'utiliser ogr2ogr pour télécharger un fichier de formes vers une installation PostGres distante. Lorsque j'ai exécuté cette commande:

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

J'ai reçu le message d'erreur suivant:

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

(J'ai omis certains des pilotes car ils ne sont pas pertinents). Existe-t-il un moyen de mettre à jour ogr2ogr pour inclure PostgreSQL? J'utilise un Mac avec OS 10.7.4

djq
la source

Réponses:

25

En utilisant Homebrew, vous devez:

brew install gdal --with-postgresql

ou avec des versions plus anciennes de gdal:

brew install gdal --with-postgres

si vous avez déjà installé gdal avec brew auparavant mais sans support postgresql,

désinstaller bdal gdal

Andrea Cremaschi
la source
2
une petite correction:brew install gdal --with-postgresql
BenjaminGolder
QGIS fonctionnera-t-il toujours avec l'homebrew GDAL?
Simbamangu
@Simbamangu Sure: homebrew n'est qu'un gestionnaire de paquets, donc les versions GDAL qu'il distribue sont les mêmes que vous pouvez construire vous-même à partir des sources
Andrea Cremaschi
2
Comment procéderiez-vous sur une machine Windows? Idéalement en utilisant un virtualenv
RutgerH
2
quelle est la solution pour windows s'il vous plaît?
Denis Stephanov
5

Épargnez-vous de la peine et utilisez les binaires / frameworks Kyngchaos pour OSX .GDAL-Complete est celui que vous recherchez.

Une autre option consiste à utiliser HomeBrew .

Ragi Yaser Burhum
la source
AFAIK c'est ce que j'ai utilisé. Je ne l'ai pas installé autrement.
djq
Ce fichier existe-t-il: /Library/Frameworks/GDAL.framework/Versions/Current/Libraries/libpq.dylib et que renvoie la commande 'which ogrinfo' depuis le terminal?
Ragi Yaser Burhum,
which ogrinforetourne /usr/local/bin/ogrinfo. J'ai installé GDAL et d'autres de KyngChaos avant d'installer QGis.
djq
Le fichier libpq que j'ai mentionné existe-t-il à cet emplacement?
Ragi Yaser Burhum,
1
Si libpq.dylib n'est pas là (la bibliothèque cliente PostgreSQL), la bibliothèque OGR ne se charge pas.
Ragi Yaser Burhum,
4

en supposant que vous avez compilé gdal à partir des sources, incluez simplement --with-pg = / path / to / pg_config lorsque vous configurez gdal.

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

./make clean

./make

./make install

EDIT: notez que cela pg_configdevrait être dans le même répertoire que vos autres binaires PostgreSQL, comme psql, etc. apt list --installed | grep postgresql-server-devs'il n'est pas trouvé, utilisez apt-cache search postgresql-server-devet installez le package correspondant avec sudo apt-get install postgresql-server-dev).

dmci
la source
Il semble que j'obtienne "PostgreSQL support: yes" en ./configuresortie, mais j'essaie de ogr2ogr -f PostgreSQLdonner ERROR 1: Unable to find driver 'PostgreSQL'. De plus, pas PostgreSQLdansogrinfo --formats
adamczi
avez-vous exécuté ldconfig après l'installation?
dmci
1
Voir la modification de la réponse concernant l'installation de postgresql-server-dev, qui devrait gérer l'erreur.
thayer
2

J'ai reçu ce même message sous Windows.

Il se plaignait du type de guillemets (simples ou doubles) que j'utilisais autour de la chaîne de connexion. Le changement de devis a résolu le problème.

Michael
la source
2

Il est possible que vous voyiez quelque chose comme "Support PostgreSQL: non", même si vous avez configuré la source en utilisant "--with-pg = / path / to / pg_config" ... dans ce cas, exécutez sudo apt- installez postgresql-server-dev-all, puis réessayez.

user259060
la source
1

En lisant le document sur les formats vectoriels ogr2ogr , il semble que vous devez installer la bibliothèque cliente PostgreSQL (libpq).

Cette question similaire semble donner un aperçu de la résolution d'un problème similaire, uniquement avec les liaisons Python.

RyanDalton
la source