shapelyを使用して、ポイントに最も近いラインセグメントを検索しますか?
バックグラウンド 既知のポイントから、図に示されているように、MultiLineStringのテーブルに対して最も近い周囲の「見える境界」を確立する必要があります。 私はこのサイトをいくつかの用語(例:最小エッジ、最小周囲、最近傍、クリップ、ポリゴンを含む、可視性、スナップ、カットノード、レイトレース、フラッドフィル、内部境界、ルーティング、凹型ハル)で検索しました。このシナリオに一致すると思われる以前の質問を見つけることができません。 図 緑の円は既知のポイントです。 黒い線は、既知のMultiLineStringです。 灰色の線は、既知のポイントからの放射状の掃引を示しています。 赤い点は、放射状スイープとMultiLineStringsの最も近い交点です。 パラメーター PointはMultiLineStringと交差しません。 Pointは常にMultiLineStrings内の名目上中央に配置されます。 MultiLineStringはPointを完全に囲むことはないため、境界線はMultiLineStringになります。 約1,000個のMultiLineStringを含むテーブルがあります(通常は約100ポイントの単一行を含みます)。 考慮される方法論 既知のポイントから一連の線を構築することにより、放射状スイープを実行します(たとえば、1度の増分で)。 MultiLineStringを使用して、各放射状スイープラインの最も近い交点を確立します。 放射状スイープラインの1つがMultiLineStringのいずれとも交差しない場合、これは、MultiLineStringの周囲構造に収まる周囲のギャップを示します。 概要 この手法は最も近い交差点を検出しますが、放射状スイープの解像度に応じて、必ずしもすべての最も近い境界ノードポイントを検出するわけではありません。誰もがすべての周辺ポイントを確立するための代替方法を推奨したり、何らかの形のバッファリング、セクター化またはオフセットでラジアルスイープテクニックを補完できますか? ソフトウェア 私は、SpatiaLiteやShapelyをソリューションに使用することを好みますが、オープンソースソフトウェアを使用して実装できる提案を歓迎します。 編集:実用的なソリューション(@geneの回答に基づく) from shapely.geometry import Point, LineString, mapping, shape from shapely.ops import cascaded_union from shapely import affinity import fiona sweep_res = 10 # sweep resolution (degrees) focal_pt = Point(0, 0) …