【问题标题】:How to fit rectangular polygon into irregular polygon using R?如何使用 R 将矩形多边形拟合成不规则多边形?
【发布时间】:2020-06-14 03:47:46
【问题描述】:

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

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

想法:首先获取每个数据集的轮廓或足迹,然后分解所有足迹以获得轮廓并最后将最大范围的矩形多边形拟合到该不规则多边形中

【问题讨论】:

  • 我能澄清一下吗?您想要一个完全包含每个栅格的矩形(即 4 个角全部为 90 度),它应该是实现这一目标的最小矩形吗?它是否应该与坐标系对齐(即您是否正在寻找两个底角的 y 值相等?
  • 或者你想要图中绿色显示的多边形的坐标?
  • @Allan Cameron 感谢您的快速回复,我调整了问题。我想要一个最大尺寸的矩形多边形,它完全被我的栅格数据集的足迹覆盖(它被足迹覆盖的频率无关紧要,但必须至少覆盖一次)!
  • @Allan Cameron 我不想在我的图中以绿色显示多边形的坐标
  • 输出矩形是否必须与(经纬度?)坐标轴对齐,还是可以旋转?我敢打赌,要找到最佳解决方案是一个计算上的难题,因为你的绿色多边形是凹的,所以你可能有各种奇怪的形状。您可以尝试使用optim 的方法,但可以找到局部最优...

标签: r geometry spatial raster sp


【解决方案1】:

以下是否满足您的需求?

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 代码如下图所示。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多