如何检查栅格和多边形是否重叠?

样品

我有一个栅格,我想检查带有值的像元是否与我的关注区域重叠,这是一个空间多边形文件。

有快速的方法吗?

我的栅格看起来像这样:

在此处输入图片说明

我试过的

r <- raster("C:/user/test.jp2")
studyarea <- readOGR("C:/user/boundary.shp")
dummi <- as(extent(r), "SpatialPolygons")
if (gContainsProperly(studyarea, dummi)) {
  print("Raster extent is fully within the Area of interest")
} 
else if (gIntersects(studyarea, dummi)) {
  print("Raster extent is not fully within the Area of interest")
} else {
  print("Raster extent is fully outside the Area of interest")
}

as(extent(r), "SpatialPolygons")在值以及NA中创建一个多边形。但是我只想检查值部分和学习区域是否重叠

栅格和学习区域的数据示例:

matrix <- matrix(c(NA,NA,NA,1,NA,NA,2,1,NA,1,3,4,2,3,4,1), nrow=4)
r <- raster(matrix)
extent(r) <- c(399960, 509760, 5290200, 5400000)
crs(r) <- "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs" 
writeRaster(r, paste(getwd(),"filename.jp2"))
                 
matrix <- matrix(c(1,1,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA), nrow=4)
rpoly<- raster(matrix)
extent(rpoly) <- c(399960, 509760, 5290200, 5400000)
crs(rpoly) <- "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs" 
studyarea <- rasterToPolygons(rpoly)

谢谢

样品

我找到了更快的解决方案。可以通过多边形裁剪栅格,然后可以通过多边形遮蔽栅格。如果“多边形”区域中没有栅格值。栅格将具有最小值= 0和最大值= 0。

建立资料

matrix <- matrix(c(NA,NA,NA,1,NA,NA,2,1,NA,1,3,4,2,3,4,1), nrow=4)
r <- raster(matrix)
extent(r) <- c(399960, 509760, 5290200, 5400000)
crs(r) <- "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs" 
writeRaster(r, paste(getwd(),"filename.jp2"))
                 
matrix <- matrix(c(1,1,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA), nrow=4)
rpoly<- raster(matrix)
extent(rpoly) <- c(399960, 509760, 5290200, 5400000)
crs(rpoly) <- "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs" 
studyarea <- rasterToPolygons(rpoly)

# Reproject. Make sure both have the same projection
studyarea <-  spTransform(studyarea, projection(r))
  
# Crop and clip raster with study area polygon
r_crop <- crop(r, studyarea)
r_mask <- mask(r_crop, studyarea, updatevalue = NA, updateNA= TRUE)

if (r_mask@data@min == 0 && r_mask@data@max == 0){
  print("raster and studyarea do not overlap))
  }
else {
  print("Raster and studyarea do overlap")
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检测圆形和多边形是否重叠?

R:检查多边形是否与栅格相交时,intersect() 和 gIntersects() 的结果不同

使用 JSTS 和 GeoJson 文件检查多边形的重叠

如何从栅格中提取多边形?

如何简化和消除GeoJSON多边形中的重叠

如何检查多边形是否包含点?

如何检查多边形包含Point Sequelize和Postgres

检查Latlng是否在多边形内

SF 和星星:多边形化分类栅格

如何在PostgreSQL中分割具有重叠多边形并计算重叠的多边形?

如何在MySQL数据库中插入多边形并检查传递的多边形是否在其中?

阴影重叠多边形

如何停止多边形笔触样式重叠多边形填充

R中具有多边形的裁剪栅格:错误范围不重叠

计算多个重叠多边形(shapefile)内的栅格景观比例(百分比)?

多边形,z-index和之前/之后的重叠

Openlayers - 避免和调整重叠的多边形

检查多边形是否为Shapely中的多边形

如何处理MySQL多边形重叠查询?

GLSL-如何避免多边形重叠?

如何检查点是否在 MySQL 表中的多边形内?

Java-如何检查经/纬度坐标是否在多边形内

如何创建多边形并检查给定的纬度,经度是否在内部

PostGIS 和坐标,确定点是否在多边形/多多边形 (kml) 内

检查坐标是否在KML多边形内

检查位置(纬度经度)是否在 KML 多边形内

检查多边形是否在 R 中相交

mongodb检查点是否在多边形中

OSMBonusPack:检查我的GeoPoint是否在多边形内