【问题标题】:Creating random polygons within a set shapefiles boundary in R在 R 中的一组 shapefile 边界内创建随机多边形
【发布时间】:2012-04-03 08:15:49
【问题描述】:

我有一个 shapefile,它是智利的国界线。如果可能的话,我想随机生成例如该区域内有 1000 个多边形。我想知道在 R 中解决这个问题的最佳方法是什么?我想也许,使用'shapefiles'包加载shapefile,然后使用'spatstat'中可用的东西创建一个点数据集。然后我可以围绕这些点创建圆形多边形......这主要是假设的,我不知道它是否可能。

我在 R 方面有一些经验,但之前没有真正尝试过任何空间分析。

任何想法和建议将不胜感激。

【问题讨论】:

    标签: r spatial points shapefile


    【解决方案1】:

    您可以使用栅格多边形吗?

    在你的 shapefile 多边形上生成一个精细的网格(小于你的目标多边形区域),然后选择一个随机的“种子”网格正方形,并通过递增地添加最近的网格单元来“生长”它,直到它达到你想要的大小。这样,如果您从沿海单元开始,您将获得近似圆形的内陆多边形和半圆形多边形。

    栅格表示是否适合您取决于您​​在创建这些多边形时打算做什么,但看起来您只是要将它们叠加在其他土地利用数据上,这可以通过栅格上的栅格来完成或多边形上的栅格。

    在光栅包中应该都是可行的。

    【讨论】:

    • 听起来,我认为光栅方法可以工作。你能给我一些关于如何选择随机“种子”网格方块的指示,以及我可以用什么来“生长”它们,记住我想尝试自动化这 1000 多次?感谢您的回复 - 非常有用!
    • 快速浏览一下,'rasterize' 可以在多边形和外部'NA' 上生成一个值为 '1' 的网格,然后 sampleRandom 可以在其中随机选取非 NA 单元格。尽管 rowcol 参数似乎存在错误...然后您可以使用 'adjacent' 来增长多边形。
    【解决方案2】:

    这确实是一个难题,因为您需要担心一些事情。多边形可以是简单的凸出的东西,也可以是更复杂的“凹”形,也可以是由多个“岛”和湖泊组成的多分支形状。我会先把这部分弄清楚,因为如果你只需要简单的情况,那就更好了。

    1) 凸多边形很容易从随机点生成,因为您只需要凸包 - 点的顺序不会影响结果。对于实际的多边形,将它们作为边界链接在一起的顺序非常重要,否则您将获得带有扭曲边界的无意义的形状。但是,有alphahull 包可以从非凸点生成更智能的外壳。

    2) 如果多边形的任何部分都不能超过主边界,那么您需要每个顶点都在边界内,并且连接它们的任何部分都不能越过主边界。想象一个多边形,其顶点都在国界之内,但有一个线段穿过河流入口。有用于在多边形内获取点的采样函数(sp 中的spsamplesplancs 中的csr),rgeos 中有几何测试,可用于确保没有交叉点 - 仍然是额外的工作,因为您正在测试一组定义多边形的样本点的失败,而不是生成已知的“好案例”。

    如果您可以放松一些限制,那么它可能是相当可行的。您提到“圆形多边形”,您真的是指圆形(或近似圆形),因为如果是这样,那么某些测试可能会变得更加简单。

    我倾向于深入了解您的目标,看看这是否真的是您想要做的,或者您是否可以进一步简化事情。

    【讨论】:

    • 您好,感谢您快速而有用的回复。我将进一步解释我的意图:这些“随机”多边形将充当假设的保护区。该项目的目的是查看这些随机生成的保护区是否包含比实际保护区更多的资源(环境层的集合)。你说得对,这些多边形在理想情况下完全是陆地的。创建它们后,它们将用于“按蒙版提取”或“按位置选择”或其他图层上的等效项。
    • 至于多边形形状/大小...近似圆形就足够了。更重要的是这些多边形中的每一个的大小将足够接近相同,例如距离该点 10 公里半径。
    猜你喜欢
    • 2020-01-09
    • 2023-04-01
    • 2020-02-13
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2019-10-07
    • 1970-01-01
    相关资源
    最近更新 更多