r-如何从空间点数据集中创建有凝聚力的空间像素



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

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

问题从我开始

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

我需要调整nrowncol,这样我就不会在我感兴趣的区域内得到NA的莫尔条纹。我不能使用预定义(更高)的分辨率,因为rasterize没有插值功能。

作为解决方案,我想我可能需要某种空间像素DFspi,它覆盖了我感兴趣的整个区域(就像library(raster); data(meuse.grid)中的meuse.grid),并用作主网格。然后,我可以用它来插值我的数据,例如

idw(param~1,spo,spi)

通过这一点,以我选择的决议全面覆盖我感兴趣的领域。但是,如何从点数据生成空间像素数据帧呢?

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

也许我在这里采取了错误的方法,所以请告诉我是否可以用不同的方式更容易地实现我想要的目标。

如果您有一个定义感兴趣区域边界的多边形(您应该这样做),那么它是直的。一种方法是使用geoR中的polygrid函数,它本身只是SpatialPointsexpand.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区域的10m网格,您可以创建对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)))

相关内容

  • 没有找到相关文章

最新更新