我正在使用Mac Os 10.9.2和R版本3.0.2。
我使用dbDriver()
和dbConnect()
来启动与数据库的连接。接下来,我尝试使用
c = readOGR("PG:dbname=OB", layer="geo.countries")
这不起作用,并且始终返回"无法打开文件"错误。
我从https://stat.ethz.ch/pipermail/r-sig-geo/2010-January/007519.html了解到,原因是缺少PostgreSQL的驱动程序。通过使用命令ogrDrivers()
有人可以帮我解决如何安装驱动程序的问题吗?或者我如何才能使这项工作?非常感谢任何帮助!
谢谢!
答案 0 :(得分:1)
如果没有正确的驱动程序,gdal / ogr通常会抛出错误,如
Unable to find driver PostgreSQL
首先,确保数据库和图层存在。如果没有安装Postgres的驱动程序,那么您必须重新安装gdal。使用自制软件:
brew uninstall gdal
brew install gdal --with-postgresql
答案 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。