[英]How to create cohesive Spatial Pixels from Spatial Points Dataset
我有一个空间点DF spo
(覆盖感兴趣的不规则形状的区域)。 由于crs转换,数据不在常规网格上。
我的目标是提供具有预定分辨率和关注区域范围的栅格(更多空间点数据将映射到此主栅格上)。
问题开始于我
rasterize(spo, raster(ncol, nrow, extent, crs), spo$param)
我需要调整nrow
和ncol
的方式,这样我不会我的兴趣领域内取得来港的云纹图案。 我无法使用预定义的(更高)分辨率,因为rasterize
没有插值功能。
作为解决这个问题,我想我可能需要某种形式的空间像素DF的spi
,覆盖我的整个感兴趣区域(就像在meuse.grid library(raster); data(meuse.grid)
并作为主网格。 然后,我可以用它来插值我的数据,例如
idw(param~1,spo,spi)
然后,以我选择的分辨率完整覆盖我感兴趣的领域。 但是如何从点数据中生成SpatialPixelsDataFrame?
所以,在我看来,这个问题归结为:如何从生产默兹数据集meuse.grid?
也许我在这里采用了错误的方法,所以请让我知道是否可以更轻松地以其他方式实现我的目标。
如果您有一个多边形来定义您感兴趣区域的边界(应该如此),那么它就很简单。 一种方法是使用来自geoR
的polygrid
函数,该函数本身只是SpatialPoints
, expand.grid
和overlay
的包装
假设您有一个定义感兴趣区域的多边形称为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)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.