1

我正在使用 Mac Os 10.9.2 和 R 版本 3.0.2。我使用dbDriver()anddbConnect()来启动到我的数据库的连接。接下来,我尝试使用连接到我的 postgres 数据库

c = readOGR("PG:dbname=OB", layer="geo.countries")

这不起作用,并且总是返回“无法打开文件”错误。我从https://stat.ethz.ch/pipermail/r-sig-geo/2010-January/007519.html了解到,原因是缺少 PostgreSQL 驱动程序。使用命令可以看出ogrDrivers()

有人可以帮我安装驱动程序吗?或者我怎样才能使这项工作?任何帮助深表感谢!

谢谢!

4

2 回答 2

1

在没有合适的驱动程序的情况下,gdal/ogr 通常会抛出类似错误

Unable to find driver PostgreSQL

首先,确保数据库和图层存在。如果确实没有安装 Postgres 的驱动程序,则必须重新安装 gdal。使用自制软件:

brew uninstall gdal
brew install gdal --with-postgresql

另请参阅此问题

于 2014-03-21T02:48:20.963 回答
1

如果您确实确定 gdal 已正确安装,请确保您的 dns 已完全指定(它具有比 dbname 更多的参数)

dsn="PG:dbname=DB host=HOST user=USER password=PSSWD port=5432"

此外,如果您的表包含多个空间列(层),则必须指定您想要的:

layer = "DB.TABLE(YOUR_SPATIAL_COLUMN)"

我花了一段时间才知道。但是调用函数后很明显

ogrListLayers()

这个对我有用。只是一个问题,如果您的表中有一些栅格列,它将不会被排除(与所有其他图层/空间列一样)。相反,它将作为文本列加载到 spatialobject@data 数据框中。在大光栅的情况下很烦人。我已经为此发布了问题

于 2016-11-29T13:55:07.033 回答