连接到postgres时出现rgdal错误

时间:2014-03-19 10:07:15

标签: r postgresql driver dbconnection rgdal

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

连接到我的postgres数据库
c = readOGR("PG:dbname=OB", layer="geo.countries")

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

可以看出

有人可以帮我解决如何安装驱动程序的问题吗?或者我如何才能使这项工作?非常感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:1)

如果没有正确的驱动程序,gdal / ogr通常会抛出错误,如

Unable to find driver PostgreSQL

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

brew uninstall gdal
brew install gdal --with-postgresql

另见this question

答案 1 :(得分: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数据帧中。在大型栅格的情况下相当烦人。我已经为此发布了question