ポリゴン内のポイントの包含のチェック: レイ トレーシングと Matplotlib
ポイントがポリゴン内にあるかどうかを判断するには、次の 2 つの主な方法があります。一般的に使用されるもの: レイ トレーシングと Matplotlib の path.contains_points。ただし、3 番目のオプションである Shapely は、幾何学計算専用のソリューションを提供します。
Matplotlib の path.contains_points
この方法は、ベンチマークで大幅に高速であることが実証されています。提供されたコードスニペットに示されているように。速度の利点により、頻繁なポイント包含チェックを伴うシナリオに適した選択肢となります。
レイ トレーシング手法
レイ トレーシングは当初、推奨されるアプローチと考えられていましたが、そのパフォーマンスは低下しました。 Matplotlib の path.contains_points に追い越されました。このコードは、ポリゴン エッジを反復処理して交差を計算するこのメソッドの実装を示しています。 path.contains_points よりも遅いですが、信頼性の高い代替手段であることに変わりはありません。
Shapely
Shapely は、ポリゴン内のポイントの包含を含む幾何学的操作に特化したライブラリを提供します。その contains メソッドは、ポイントのメンバーシップを決定するための使いやすいインターフェイスを提供します。ただし、クエリ ポイントに頂点のない連続ポリゴンを想定しているため、その精度がすべてのアプリケーションに適しているわけではないことに注意してください。
ピクセルベースのグリッド最適化
高度な精度が必要ないシナリオでは、ブール値のピクセルベースのグリッドを作成することで、効率的かつ迅速な代替手段を提供できます。ポリゴン内にあるグリッド要素に True を割り当て、ポリゴンの外側にあるグリッド要素に False を割り当てることで、後続のポイント包含チェックをグリッド インデックスを使用して計算できます。
以上がポリゴン内のポイント: レイ トレーシングと Matplotlib - どちらの方法が勝つでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。