1

我想创建各种简单(无自相交)、独立的多边形,它们都具有相同的面积(我会在不同的面积上做多次),但周长不同。我想理想情况下我会有一个因子设计,其中有 10 个区域,每个区域有 10-20 个不同边/面积比的多边形(总共 100-200 个多边形)。我想可以为 1 个区域生成 10 个多边形,然后可以使用乘数来增加/减少 10 个不同区域复制的每个多边形的总大小。实际上,形状不必有直边,但我认为这会更容易。多边形不一定是凸的,角度可以是高度可变的并且形状不规则,但它们不一定是。高度不规则多边形的好处(与具有不同边长的矩形相反,

我这样做是为了将景观与不同大小和形状的森林收获进行比较(我最终将应用一个函数来计算每个多边形的野生动物丰度)。任何可行的解决方案都可以,但首选使用 R、Python 和/或 GIS(ArcGIS 或 QGIS)的解决方案。感谢您的任何想法或建议。

4

1 回答 1

4

GeoPandas模块似乎可以满足您的需求。它用于python,利用python的优秀库进行数据分析,支持Gis和fiona地图,以及广泛的多边形创建。在这里查看:

https://github.com/kjordahl/geopandas?source=cc

从自述文件:

GeoPandas 是一个为 pandas 对象添加地理数据支持的项目。它目前实现了 GeoSeries 和 GeoDataFrame 类型,它们分别是 pandas.Series 和 pandas.DataFrame 的子类。GeoPandas 对象可以作用于匀称的几何对象并执行几何操作。

多边形创建示例:

>>> p1 = Polygon([(0, 0), (1, 0), (1, 1)])
>>> p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
>>> p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
>>> g = GeoSeries([p1, p2, p3])
>>> g
0    POLYGON ((0.0000000000000000 0.000000000000000...
1    POLYGON ((0.0000000000000000 0.000000000000000...
2    POLYGON ((2.0000000000000000 0.000000000000000...
dtype: object

最终结果是:多边形

一个更复杂的不规则多边形示例:

>>> boros = GeoDataFrame.from_file('nybb.shp')
>>> boros.set_index('BoroCode', inplace=True)
>>> boros.sort()
>>> boros
               BoroName    Shape_Area     Shape_Leng  \
BoroCode
1             Manhattan  6.364422e+08  358532.956418
2                 Bronx  1.186804e+09  464517.890553
3              Brooklyn  1.959432e+09  726568.946340
4                Queens  3.049947e+09  861038.479299
5         Staten Island  1.623853e+09  330385.036974

                                                   geometry
BoroCode
1         (POLYGON ((981219.0557861328125000 188655.3157...
2         (POLYGON ((1012821.8057861328125000 229228.264...
3         (POLYGON ((1021176.4790039062500000 151374.796...
4         (POLYGON ((1029606.0765991210937500 156073.814...
5         (POLYGON ((970217.0223999023437500 145643.3322...

复杂的

于 2013-07-19T14:50:52.253 回答