0

我有一个 PostgreSQL / PostGIS 表,它有 30 行(仅显示 3 行)和 3 列,如下所示(raster是 PostGIS 数据类型) - 这是 EFSA CAPRI 数据集顺便说一句,如果有人熟悉它:

在此处输入图像描述

// 我可以raster在 RPostgreSQL 包的帮助下将 PostGIS 中的数据类型导入 R 吗(请参见下面的代码),或者我是否必须按照@Jot eN 的描述不可避免地使用 rgdal 包?

require(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "")
dbGetquery(con, "SELECT rid, rast, filename FROM schema.capri")

在不进行转换的情况下导入它并且St_AsText(rast)(适用于 PostGIS 的几何数据类型)不起作用。

4

2 回答 2

2

如果这仍然相关,在佛罗里达大学,David Bucklin 和我发布了一个rpostgis包,它为矢量和栅格数据提供 PostGIS 和 R 之间的双向传输。该软件包不依赖于 GDAL(和 r​​gdal),并且应该独立于平台。

假设您已经con通过 建立了功能连接RPostgreSQL,您可以使用函数将 PostGIS 栅格数据类型导入 R pgGetRast,例如:

library(rpostgis)
my_raster <- pgGetRast(con, c("schema", "raster_table"))

该函数假定光栅图块"rast"默认存储在列中(就像您的情况一样),但您可以使用参数更改它rast。现在,根据大小和其他考虑,这可能比使用rgdal. 我们仍在努力,但这是提供“纯 R”解决方案的成本。boundary如果您只对整个栅格的子集感兴趣(这将显着增加加载时间),您也可以使用该参数。

另请注意,有pgGetGeom用于点/线/多边形,而不是使用St_AsText.

于 2017-12-22T16:57:10.183 回答
1

您在 gis.stackexchange 页面上有答案 - https://gis.stackexchange.com/a/118401/20955

library('raster')
library('rgdal')

dsn="PG:dbname='plots' host=localhost user='test' password='test' port=5432 schema='gisdata' table='map' mode=2"

ras <- readGDAL(dsn) # Get your file as SpatialGridDataFrame
ras2 <- raster(ras,1) # Convert the first Band to Raster
plot(ras2)

可以在此处找到其他信息https://rpubs.com/dgolicher/6373

于 2016-06-21T13:48:56.637 回答