python-3.x - 使用Geopandas,如何通过采样方法在每个多边形中随机选择5个点

标签 python-3.x geopandas

Shapefile data image-Kopargaon

我想根据随机抽样方法在每个多边形中选择 5 个点。并且需要在每个多边形中有 5 个点坐标(纬度、经度)来识别种植的裁剪。

关于使用 geopandas 执行此操作的任何想法?

非常感谢。

最佳答案

我的建议涉及在形状边界框内随机抽取 x 和 y 坐标,然后检查抽样点是否确实在形状内。如果采样点在形状内,则返回它,否则重复直到找到形状内的点。对于采样,我们可以使用均匀分布,这样形状中的所有点都有相同的采样概率。这是函数:

from shapely.geometry import Point
def random_point_in_shp(shp):
    within = False
    while not within:
        x = np.random.uniform(shp.bounds[0], shp.bounds[2])
        y = np.random.uniform(shp.bounds[1], shp.bounds[3])
        within = shp.contains(Point(x, y))
    return Point(x,y)

下面是一个示例,说明如何将此函数应用于名为 geo_df 的示例 GeoDataFrame,以便为每个条目获取 5 个随机点:

for num in range(5):
    geo_df['Point{}'.format(num)] = geo_df['geometry'].apply(random_point_in_shp)

可能有更有效的方法来执行此操作,但根据您的应用程序,该算法可能足够快。我的测试文件包含约 2300 个条目,为每个条目生成五个随机点在我的机器上花费了大约 15 秒。

关于python-3.x - 使用Geopandas,如何通过采样方法在每个多边形中随机选择5个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58802921/

相关文章:

python-3.x - (openpyxl) FileNotFoundError : [Errno 2] No such file or directory

python - 在pygame中临时保存图像

python - 如果使用 re 模块在其中包含子字符串,如何提取所有原始化合物?

matplotlib - 颜色图的自定义刻度标签

python - GeoPandas 的过度功能不起作用

matplotlib - 使用 Cartopy 合并国家

python - 字典每个键分为多行

python - Geopandas 连接形状文件的着色

python - 如何使用rasterio更改光栅的crs?

如果正在写入的文件被外部删除,Pythonic 的处理方式