0

我有一个空间点 DF spo(覆盖不规则形状的感兴趣区域)。由于 crs 转换,数据不在常规网格上。

我的目标是一个具有预定义分辨率和感兴趣区域范围的栅格(更多的空间点数据将映射到这个主栅格上)。

问题开始时我

rasterize(spo, raster(ncol, nrow, extent, crs), spo$param)

我需要进行调整nrowncol以便在我感兴趣的区域内不会出现 NA 的云纹图案。我不能使用预定义(更高)的分辨率,因为rasterize没有插值功能。

作为对此的解决方案,我认为我可能需要某种 Spatial Pixel DF spi,它涵盖了我感兴趣的整个区域(就像meuse.grid in一样library(raster); data(meuse.grid)),并用作主网格。然后,我可以用它来插入我的数据,例如

idw(param~1,spo,spi)

通过这个,以我选择的分辨率全面覆盖我感兴趣的领域。但是如何从点数据中生成 SpatialPixelsDataFrame 呢?

所以在我看来,问题归结为:如何从meuse数据集中生成meuse.grid

也许我在这里采取了错误的方法,所以请让我知道是否可以使用不同的方式更轻松地实现我所追求的目标。

4

1 回答 1

1

如果您有一个多边形来定义您感兴趣的区域的边界(您应该这样做),那么它就是直截了当的。一种方法是使用polygrid函数 from geoR,它本身只是SpatialPoints,expand.gridoverlay

假设您有一个多边形来定义您感兴趣的区域,称为 ROI

在这种情况下,我将从 meuse.grid 创建一个

 data(meuse.grid)
 coordinates(meuse.grid) = ~x+y
 x <- chull(meuse.grid@coords)
 borders <- meuse.grid@coords[c(x,x[1]),]

 ROI <- SpatialPolygons(list(Polygons(list(Polygon(borders)), ID = 'border')))

实际上,要使用polygrid您只需要定义您感兴趣区域的多边形的坐标。

要创建覆盖此 ROI 区域的 10 米网格,您可以调用polygrid

# get the bounding box for ROI an convert to a list
bboxROI <- apply(bbox(ROI), 1, as.list)
# create a sequence from min(x) to max(x) in each dimension
seqs <- lapply(bboxROI, function(x) seq(x$min, x$max, by= 10))

# rename to xgrid and ygrid
names(seqs) <- c('xgrid','ygrid')

thegrid <- do.call(polygrid,c(seqs, borders = list(ROI@polygons[[1]]@Polygons[[1]]@coords)))
于 2012-12-13T00:32:11.383 回答