多角形(〜100000)があり、通常の格子セルとの交差領域を計算するスマートな方法を見つけようとします。多角形とぴったりのやり方
現在、ポリゴンとグリッドセルを(コーナー座標に基づいて)滑らかに作成しています。次に、単純なfor-loopを使って、各ポリゴンを通り、近くのグリッドセルと比較します。
ポリゴン/グリッドセルを示す小さな例です。
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
(BTW:グリッドセルは、寸法0.25x0.25とmaxのポリゴンの1x1のを持っている)
実はこれは周り0.003秒で、個々のポリゴン/グリッドセルのコンボのために非常に高速です。しかし、このコードを膨大な量のポリゴン(各グリッドセルに交差する可能性があります)で実行すると、マシン上で約15 +分(交差グリッドセルの数に応じて最大30+分)がかかります。残念ながら、ポリゴンの交差のコードを記述してオーバーラップ領域を取得することは、どのように可能であるかわかりません。何かヒントはありますか?洗練されたものに代わるものはありますか?
どのようにポリゴンをループして交差させるのか不思議です。あなたはそのプロセスでより多くのコードを表示できますか?これがどのようにして最適化されるかを理解する方が簡単です。 – tdedecko
私は基本的にlat/lonコーナー値の配列をとり、forループでそれらをポリゴンに変換します。次に、各ポリゴンを特定のグリッドセルと比較します。これはforループで再度実行されます。これを参照してください:http://stackoverflow.com/a/13956110/1740928 – HyperCube