2

我一直在使用 ArcMap 来访问空间数据服务器上的 GIS 数据。我想弄清楚如何在 R 中做同样的事情。

我知道如何将 shapefile 读入 R。我已成功使用 maptools 和 rgdal 打开和映射本地存储的 shapefile(例如 http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles

我的问题是数据不是存储在本地,而是存储在应用程序服务器上。我相信这是一个Oracle数据库。我已经获得了有关 1. 服务器 2. 实例(一个数字) 3. 数据库 4. 用户和 5. 密码的信息。通常,我会举一个例子,但外部用户能否访问服务器是值得怀疑的。

例如这里是如何在 R 中读取和绘制本地文件

    library(rgdal)
    ogrInfo(".", "nw-rivers")
    centroids.rg <- readOGR(".", "nw-centroids") 
    plot(centroids.rg)

这 ”。” 指向本地目录。我将如何更改它以访问服务器上的数据?代码的实际语法会很有帮助。

4

1 回答 1

2

您可以使用 GDAL/OGR 从 Oracle Spatial DB 中读取数据:

http://www.gdal.org/ogr/drv_oci.html

如果您的 GDAL/OGR 安装中有驱动程序。如果:

require(rgdal)
ogrDrivers()

显示 Oracle 驱动程序,然后您可以readOGR在正确的位置使用所有参数。

猜测一下,并与 PostGIS 示例类比,我会说尝试:

dsn="OCI:userid/password@database_instance:")
ogrListLayers(dsn)
s = readOGR(dsn, layername)

但是我没有 Oracle 服务器来对其进行测试(如果我这样做了,我明天会为 PostGIS 放弃它,并将许可证保存在游艇上)而且您无论如何也不确定它是否是 Oracle 服务器。连接到任何空间数据库的一般原则是相同的——检查你有一个 OGR 驱动程序,弄清楚dsn参数是什么样的,试试看。

另一种方法是通过 ODBC 或其他非空间 R 数据库连接。但是,您可能会以 WKB 或 WKT 形式取回空间数据,并且必须转换为 SpatialWhatevers(点、线、多边形?)。

PostGIS 示例在这里:

https://gis.stackexchange.com/questions/64950/which-is-the-best-way-of-working-with-postgis-data-in-r

于 2014-04-22T07:28:53.370 回答