我可以使用 RPostgreSQL 包将 PostGIS 栅格数据类型导入到 R 中吗?

Can I import PostGIS raster data type into R by using the RPostgreSQL-package?

我有一个 PostgreSQL / PostGIS table 有 30 行(只显示了 3 行)和 3 列如下 (raster 是一种 PostGIS 数据类型)- 这是 EFSA CAPRI 数据集,顺便说一下,如果有人熟悉它的话:

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

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

导入它而不进行转换和 St_AsText(rast)(适用于 PostGIS 的几何数据类型)不起作用。

您在 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

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

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

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

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

另请注意,points/lines/polygons 有 pgGetGeom,而不是使用 St_AsText