相关疑难解决方法(0)

更快速的多边形交叉方式

我有大量的多边形(~100000),并尝试找到一种智能的方法来计算它们与常规网格单元的交叉区域.

目前,我正在使用形状(基于它们的角坐标)创建多边形和网格单元.然后,使用一个简单的for循环我遍历每个多边形并将其与附近的网格单元进行比较.

只是一个小例子来说明多边形/网格单元格.

from shapely.geometry import box, Polygon
# Example polygon 
xy = [[130.21001, 27.200001], [129.52, 27.34], [129.45, 27.1], [130.13, 26.950001]]
polygon_shape = Polygon(xy)
# Example grid cell
gridcell_shape = box(129.5, -27.0, 129.75, 27.25)
# The intersection
polygon_shape.intersection(gridcell_shape).area
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:网格单元的尺寸为0.25x0.25,多边形的最大尺寸为1x1)

实际上,对于具有大约0.003秒的单个多边形/网格单元组合,这是非常快的.但是,在大量多边形上运行此代码(每个多边形可以与几十个网格单元相交)在我的机器上花费大约15分钟以上(最多30分钟,具体取决于交叉网格单元的数量),这是不可接受的.不幸的是,我不知道如何编写多边形交集的代码来获得重叠区域.你有什么建议吗?有一种形状的替代品吗?

python numpy shapely

37
推荐指数
2
解决办法
4万
查看次数

标签 统计

numpy ×1

python ×1

shapely ×1