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

问题描述 投票:0回答:2

我有一个PostgreSQL / PostGIS表,有30行(只显示3行)和3列如下(raster是PostGIS数据类型) - 它是EFSA CAPRI数据集btw,如果有人与它相似:

enter image description here

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

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

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

r postgresql postgis rpostgresql
2个回答
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


2
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.