Как я могу обновить ogr2ogr для включения драйвера PostgreSQL?


28

Я пытаюсь использовать ogr2ogr для загрузки шейп-файла в удаленную установку PostGres. Когда я запустил эту команду:

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

Я получил следующее сообщение об ошибке:

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

(Я опустил некоторые драйверы, так как они не актуальны). Есть ли способ, которым я могу обновить ogr2ogr, чтобы включить PostgreSQL? Я использую Mac с ОС 10.7.4

Ответы:


25

Используя Homebrew, вы должны:

brew install gdal --with-postgresql

или с более старыми версиями gdal:

brew установить gdal --with-postgres

если вы уже установили gdal с brew, но без поддержки postgresql, просто

заварить удалить GDAL


2
Небольшая поправка:brew install gdal --with-postgresql
BenjaminGolder

Будет ли QGIS работать с доморощенным GDAL?
Симбамангу

@Simbamangu Конечно: homebrew - это просто менеджер пакетов, поэтому распространяемые им версии GDAL такие же, как вы можете создать сами из исходного кода
Andrea Cremaschi

2
Как бы вы работали на машине с Windows? В идеале использовать virtualenv
RutgerH

2
Какое решение для Windows, пожалуйста?
Денис Стефанов

5

Избавьте себя от боли и используйте упакованные двоичные файлы / фреймворки Kyngchaos для OSX. GDAL-Complete - это то, что вы ищете.

Другой вариант - использовать HomeBrew .


AFAIK это то, что я использовал. Я не установил его по-другому.
DJQ

Существует ли этот файл: /Library/Frameworks/GDAL.framework/Versions/Current/Libraries/libpq.dylib и что команда «which ogrinfo» возвращает из терминала?
Раги Язер Бурхум

which ogrinfoвозвращается /usr/local/bin/ogrinfo. Я установил GDAL и другие из KyngChaos перед установкой QGis.
DJQ

Файл libpq, о котором я упоминал, существует в этом месте?
Раги Язер Бурхум

1
Если libpq.dylib отсутствует (клиентская библиотека PostgreSQL), библиотека OGR не будет загружаться.
Раги Язер Бурхум

4

предполагая, что вы скомпилировали gdal из исходного кода, просто включите --with-pg = / path / to / pg_config при настройке gdal.

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

./make clean

./make

./make install

РЕДАКТИРОВАТЬ: Обратите внимание, что он pg_configдолжен находиться в том же каталоге, что и другие ваши двоичные файлы PostgreSQL, например psql, и т. Д. Также обратите внимание, что это подробно из ответа пользователя ниже: вы должны убедиться, что установлена ​​соответствующая версия postgresql-server-dev (например, в Ubuntu. apt list --installed | grep postgresql-server-devесли не найдено, используйте apt-cache search postgresql-server-devи установите соответствующий пакет с sudo apt-get install postgresql-server-dev).


Кажется, я получаю "Поддержка PostgreSQL: да" в ./configureвыводе, но пытается ogr2ogr -f PostgreSQLдать ERROR 1: Unable to find driver 'PostgreSQL'. Кроме того, нет PostgreSQLвogrinfo --formats
Adamczi

вы запускаете ldconfig после установки?
DMC

1
См. Редактирование ответа об установке postgresql-server-dev, которая должна обработать ошибку.
Тайер

2

Я получил это же сообщение в Windows.

Он жаловался на тип кавычек (одинарные или двойные), которые я использовал вокруг строки подключения. Переключение кавычек решило проблему.


2

Существует вероятность, что вы можете увидеть что-то вроде «Поддержка PostgreSQL: нет», даже если вы настроили источник с помощью «--with-pg = / path / to / pg_config» ... в этом случае запустите sudo apt- установите postgresql-server-dev-all и повторите попытку.


1

Из прочтения документа ogr2ogr Vector , похоже, вам нужно установить клиентскую библиотеку PostgreSQL (libpq).

Этот похожий вопрос, кажется, дает некоторое представление о решении аналогичной проблемы, только с привязками Python.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.