如何使用R将矩形多边形拟合为不规则多边形?

问题描述 投票:1回答:1

如何将矩形多边形拟合为不规则多边形?或更好;如何将最大矩形多边形拟合为不规则多边形?

背景:我有一堆重叠的光栅文件,它们代表了星载传感器系统的不同数据。为了进行进一步的分析,我想获得适合所有这些数据集的轮廓线/轮廓线的最大矩形多边形(所有4个角均为90度角),以掩盖和裁剪我的数据集。换一种说法;如何将最大尺寸的矩形多边形放入绿色轮廓中(见下图)?

Idea:首先获取每个数据集的轮廓或足迹,然后溶解所有足迹以获取轮廓,并将最大程度的矩形多边形最终拟合到该不规则多边形中

the red lines represent the footprints of the datasets, the green lines represent the outline of the irregular polygon in which I want to fit a rectangular polygon of maximum size

r geometry spatial raster sp
1个回答
0
投票

以下内容您需要做什么?

library(raster)
library(rgeos)
library(mapview)
raster1 <- raster(xmn=-2,xmx=0.1,ymn=50.3,ymx=51.5,vals=1)
raster2 <- raster(xmn=-2.1,xmx=0.5,ymn=50.4,ymx=51.4,vals=1)
raster3 <- raster(xmn=-2.2,xmx=-0.3,ymn=50.2,ymx=51.6,vals=1)

r1 <- extent(raster1)
r1p <- as(r1, 'SpatialPolygons')
r2 <- extent(raster2)
r2p <- as(r2, 'SpatialPolygons')
r3 <- extent(raster3)
r3p <- as(r3, 'SpatialPolygons')
r1p$data <- 1
r2p$data <- 2
r3p$data <- 3

rr <- bind(r1p, r2p, r3p)
rrsp <- as(extent(rr), 'SpatialPolygons')
rrsp$data <- 1
crs(rrsp) <- crs(r1p) <- crs(r2p) <- crs(r3p) <- crs(raster1)

mm <-
    mapview(rrsp, col.regions = 'green', col='green', alpha.regions = 0.1) + 
    mapview(r1p, col.regions = 'red', col='red', alpha.regions = 0.1) + 
    mapview(r2p, col.regions = 'red', col='red', alpha.regions = 0.1) + 
    mapview(r3p, col.regions = 'red', col='red', alpha.regions = 0.1)

mm

它会找到每个栅格的范围,从中生成空间多边形,然后将它们绑定在一起。然后找到其范围,再次作为空间多边形。

mapview代码进行以下绘制。

enter image description here

绿色矩形包含所有红色的栅格。

© www.soinside.com 2019 - 2024. All rights reserved.