【问题标题】:rgdal error when connecting to postgres连接到 postgres 时出现 rgdal 错误
【发布时间】:2014-04-25 11:44:56
【问题描述】:

我正在使用 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()可以看到

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

谢谢!

【问题讨论】:

    标签: r postgresql driver dbconnection rgdal


    【解决方案1】:

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

    Unable to find driver PostgreSQL

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

    brew uninstall gdal
    brew install gdal --with-postgresql
    

    另见this question

    【讨论】:

    • 谢谢!我使用 Homebrew 重新安装了 gdal,但命令行 c = readOGR("PG:dbname=OB", layer="geo.countries") 仍然给我错误“无法打开文件”。我确定数据库和图层存在。知道我的命令行是否错误吗?还是其他一些可能的问题?我在这里真的很茫然..
    【解决方案2】:

    如果您确实确定 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

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 1970-01-01
      • 2016-10-26
      • 2023-01-21
      • 2020-07-14
      • 2020-04-04
      • 2019-10-08
      • 2020-08-22
      • 2019-06-21
      相关资源
      最近更新 更多