我正在尝试使用ogr2​​ogr将shapefile上传到远程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?我正在使用OS 10.7.4的Mac。

#1 楼

使用Homebrew,您应该:


brew install gdal --with-postgresql


或旧版本的gdal:


brew install gdal --with-postgres


如果您之前已经安装了带有brew的gdal,但没有postgresql支持,则只需


brew卸载gdal


评论


一个小小的更正:brew install gdal --with-postgresql

– BenjaminGolder
2014年1月16日22:02

QGIS仍可与自制GDAL一起使用吗?

–Simbamangu
14年4月16日在8:20

好吧,它曾经可以工作,但是似乎有些依赖关系发生了变化。请参阅以下问答:gis.stackexchange.com/questions/79251/…

– Andrea Cremaschi
14年4月16日在12:14

您将如何在Windows机器上进行操作?理想情况下使用virtualenv

–罗格(RutgerH)
16 Dec 7'在21:41

请问Windows的解决方案是什么?

–丹尼斯·斯蒂芬诺夫(Denis Stephanov)
17年2月21日在16:03

#2 楼

减轻您的痛苦,并为OSX使用Kyngchaos打包的二进制文件/框架。GDAL-Complete是您所需要的。

另一种选择是使用HomeBrew。

评论


AFAIK,这就是我用的。我没有其他安装方式。

– djq
2012年9月12日在21:48

该文件是否存在:/Library/Frameworks/GDAL.framework/Versions/Current/Libraries/libpq.dylib,并且“哪个ogrinfo”命令从终端返回什么?

–拉吉·亚瑟(Ragi Yaser Burhum)
2012年9月12日23:05

哪个ogrinfo返回/ usr / local / bin / ogrinfo。在安装QGis之前,我从KyngChaos安装了GDAL和其他工具。

– djq
2012年9月12日23:24

我提到的libpq文件在该位置是否存在?

–拉吉·亚瑟(Ragi Yaser Burhum)
2012年9月12日23:37

如果libpq.dylib不存在(PostgreSQL客户端库),则OGR库将不会加载。

–拉吉·亚瑟(Ragi Yaser Burhum)
2012年9月14日22:14在

#3 楼

假设您已从源代码编译gdal,则在配置gdal时只需包含--with-pg = / path / to / pg_config。

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

./make clean

./make

./make install


编辑:请注意,pg_config应该与其他PostgreSQL二进制文件(例如psql等)位于同一目录中。还要注意,来自user259060的以下详细信息如下:您应该验证是否安装了适当的postgresql-server-dev版本(例如,在Ubuntu上,请使用apt list --installed | grep postgresql-server-dev(如果找不到),请使用apt-cache search postgresql-server-dev,并使用sudo apt-get install postgresql-server-dev安装相应的软件包)。

评论


似乎我在./configure输出中得到“ PostgreSQL支持:是”,但是尝试对ogr2ogr -f PostgreSQL给出错误1:无法找到驱动程序'PostgreSQL'。另外,ogrinfo --formats中没有PostgreSQL

– adamczi
18-11-14在0:53

安装后是否运行ldconfig?

– dmci
18年11月14日在8:44

请参阅有关安装postgresql-server-dev的答案的编辑,该编辑应处理该错误。

– Thayer
19年11月27日在15:44

我认为with-pg前面有两个连字符?就像../configure --with-pg = / Applications / Postgres.app / Contents / Versions / latest / bin / pg_config

–马克·艾格(Mark Egge)
20年1月23日,下午3:27

#4 楼

在Windows上,我也收到了相同的消息。

我抱怨连接字符串周围使用的引号类型(单引号还是双引号)。切换引号可以解决此问题。

#5 楼

即使您已经使用“ --with-pg = / path / to / pg_config”配置了源,也有可能会看到类似“ PostgreSQL support:no”的信息……在这种情况下,请运行sudo apt-获取安装postgresql-server-dev-all,然后重试。

#6 楼

通过阅读ogr2ogr Vector格式文档,您似乎需要安装PostgreSQL客户端库(libpq)。

这个类似的问题似乎为解决类似问题(仅使用Python绑定)提供了一些见识。

#7 楼

在Ubuntu 18.04(以及可能的其他版本)上,可从软件包postgresql-11-ogr-fdw获得OGR的Postgres包装器。该版本适用于Postgres的版本11,因为它需要与客户端的版本匹配。

对于此列表,请参见此包的不同版本,对于不同版本的Postgres,请使用以下命令:

aptitude search postgres | grep ogr-fdw