我有一个PostgreSQL / PostGIS表,有30行(只显示3行)和3列如下(raster
是PostGIS数据类型) - 它是EFSA CAPRI数据集btw,如果有人与它相似:
//我可以在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的几何数据类型)不起作用。
你有一个关于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(和rgdal),并且应该与平台无关。
假设您已经通过con
建立了功能连接RPostgreSQL
,您可以使用pgGetRast
函数将PostGIS栅格数据类型导入R,例如:
library(rpostgis)
my_raster <- pgGetRast(con, c("schema", "raster_table"))
该函数假定光栅图块默认存储在列"rast"
中(就像您的情况一样),但您可以使用参数rast
更改它。现在,根据大小和其他考虑因素,这可能比使用rgdal
慢得多(但更灵活)。我们仍在努力,但这是提供“纯R”解决方案的成本。如果您只对整个栅格的子集感兴趣(这将显着增加加载时间),您还可以使用boundary
参数。
另请注意,点/线/多边形有pgGetGeom
,而不是使用St_AsText
。