Bagaimana saya bisa memperbarui ogr2ogr untuk memasukkan driver PostgreSQL?

28

Saya mencoba menggunakan ogr2ogr untuk mengunggah shapefile ke instalasi PostGres jarak jauh. Ketika saya menjalankan perintah ini:

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

Saya mendapat pesan kesalahan berikut:

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

(Saya menghapus beberapa driver karena mereka tidak relevan). Apakah ada cara agar saya dapat memperbarui ogr2ogr untuk memasukkan PostgreSQL? Saya menggunakan Mac dengan OS 10.7.4

djq
sumber

Jawaban:

25

Menggunakan Homebrew Anda harus:

buat install gdal --with-postgresql

atau dengan versi gdal yang lebih lama:

buat install gdal --with-postgres

jika Anda telah menginstal gdal dengan brew sebelumnya tetapi tanpa dukungan postgresql, cukup

buat uninstall gdal

Andrea Cremaschi
sumber
2
koreksi kecil:brew install gdal --with-postgresql
BenjaminGolder
Akankah QGIS masih bekerja dengan GDAL homebrew?
Simbamangu
@Simbamangu Sure: homebrew hanyalah manajer paket, jadi versi GDAL yang dibagikannya sama dengan yang Anda bisa buat sendiri dari sumber
Andrea Cremaschi
2
Bagaimana Anda melanjutkan pada mesin windows? Idealnya menggunakan virtualenv
RutgerH
2
apa solusi untuk windows?
Denis Stephanov
5

Selamatkan dirimu dari rasa sakit dan gunakan binary / frameworks Kyngchaos untuk OSX .GDAL-Complete adalah yang kamu cari.

Pilihan lain adalah menggunakan HomeBrew .

Ragi Yaser Burhum
sumber
AFAIK inilah yang saya gunakan. Saya tidak menginstalnya dengan cara lain.
djq
Apakah ada file ini: /Library/Frameworks/GDAL.framework/Versions/Current/Libraries/libpq.dylib dan apa perintah 'yang ogrinfo' kembali dari terminal?
Ragi Yaser Burhum
which ogrinfokembali /usr/local/bin/ogrinfo. Saya menginstal GDAL dan yang lainnya dari KyngChaos sebelum menginstal QGis.
djq
Apakah file libpq yang saya sebutkan ada di lokasi itu?
Ragi Yaser Burhum
1
Jika libpq.dylib tidak ada di sana (pustaka klien PostgreSQL), pustaka OGR tidak akan memuat.
Ragi Yaser Burhum
4

dengan asumsi Anda telah mengkompilasi gdal dari sumber, cukup sertakan --with-pg = / path / ke / pg_config ketika Anda mengkonfigurasi gdal.

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

./make clean

./make

./make install

EDIT: Catatan yang pg_configharus di direktori yang sama dengan binari PostgreSQL Anda yang lain, seperti psql, dll. Juga perhatikan, detail dari jawaban user259060 di bawah ini: Anda harus memverifikasi bahwa versi postgresql-server-dev yang sesuai telah diinstal (misalnya pada penggunaan Ubuntu apt list --installed | grep postgresql-server-devjika tidak ditemukan gunakan apt-cache search postgresql-server-devdan instal paket yang sesuai dengan sudo apt-get install postgresql-server-dev).

dmci
sumber
Tampaknya saya mendapatkan "dukungan PostgreSQL: ya" dalam ./configureoutput, tetapi mencoba ogr2ogr -f PostgreSQLmemberi ERROR 1: Unable to find driver 'PostgreSQL'. Juga, tidak ada PostgreSQLdalamogrinfo --formats
adamczi
sudahkah Anda menjalankan ldconfig setelah instalasi?
dmci
1
Lihat hasil edit untuk jawaban tentang menginstal postgresql-server-dev ,, yang seharusnya menangani kesalahan tersebut.
Thayer
2

Saya mendapat pesan yang sama saat di Windows.

Itu mengeluh tentang jenis kutipan (tunggal vs ganda) yang saya gunakan di sekitar string koneksi. Mengalihkan harga memperbaiki masalah.

Michael
sumber
2

Ada kemungkinan bahwa Anda mungkin melihat sesuatu seperti "dukungan PostgreSQL: tidak", meskipun Anda telah mengkonfigurasi sumber menggunakan "--with-pg = / path / ke / pg_config" ... dalam kasus itu, jalankan sudo apt- dapatkan instal postgresql-server-dev-all lalu coba lagi.

pengguna259060
sumber
1

Dari membaca dokumen ogr2ogr Vector format , sepertinya Anda perlu menginstal pustaka klien PostgreSQL (libpq).

Pertanyaan serupa ini tampaknya memberikan beberapa wawasan untuk menyelesaikan masalah yang sama, hanya dengan binding Python.

Ryan Dalton
sumber