根据条件在栅格上捕捉点

时间:2018-11-06 15:35:30

标签: r line distance raster snapping

我有一个栅格和一些要点。我想根据一些一般条件捕捉最接近栅格的点。

library(raster)
##create a diagonal matrix
xy = diag(1, 100, 100)
# Turn the matrix into a raster
rast <- raster(xy)
# Give it lat/lon coords 
extent(rast) <- c(-180,180,-90,90)
# ... and assign a projection
projection(rast) <- CRS("+proj=longlat +datum=WGS84")

##create two points just for reference
lonlat <- data.frame(x = c(50,130), y = c(75,-50))
coordinates(lonlat)<-~x+y
crs(lonlat)<- CRS("+proj=longlat +datum=WGS84")
plot(rast)
plot(lonlat,add=T)

结果为

enter image description here

现在,我要捕捉绿色对角线上的点(+)。在这里,我提供了一个对角矩阵以使其变得容易,但它可以是任何形状(例如像河流一样的弯曲形状)。

我发现了一些仅将最接近的栅格网格捕捉到点的方法。

##snap raster grid closest to point
Idx = sapply(lonlat$x,function(i) which.min(abs(unique(rasterToPoints(rast, spatial = TRUE)@coords[,1])-i)))
Idy = sapply(lonlat$y,function(i) which.min(abs(unique(rasterToPoints(rast, spatial = TRUE)@coords[,2])-i)))

我基本上想要两件事(a)根据一些简单条件(rast == 1)捕捉最近的点。 (b)根据搜索半径捕捉点(让我们说一些点相邻)。

0 个答案:

没有答案