できればPHPで、ポリゴンのグループを分析してグループの外側の境界を検出する方法を探しています。
具体的には、これは地域をレンダリングする Google マップ v3 アプリケーション用です。領域内の各ポリゴンは郵便番号です。領土境界のみを検出して描画しようとしています。これが私が達成しようとしていることのモックアップです:
この問題を解決するために私が直面する課題:
- 各地域内の郵便番号は連続していない可能性があります (多くの場合、連続していません) (上記の例の赤と緑の地域を参照してください)。
- 郵便番号は必ずしも凸型であるとは限らないため、凸包手法は機能しません (間違っているのでしょうか?)
- 上の画像ではそのように見えますが、頂点が ZIP 間で真に重複していることはめったにありません。各緯度/経度座標 (つまり、ポリゴンの各頂点) には、小数点以下 10 桁の精度があります。元の形状に似たクリーンなデータセットが生成されなかったため、丸め手法を既に試して拒否しました。
良い面としては、これらの領土は一度確立されると変わることはありません。したがって、このプロセスをオフラインで実行して、結果の領域ポリセットを計算および保存できます。
明確化: 私のデータは郵便番号レベルで保存されます。各郵便番号は、緯度/経度座標の 1 つ以上の大きなセットによって定義されます。各緯度/経度座標は、Google マップ ポリゴンの 1 つの頂点を定義します。より大きな地域と同様に、各郵便番号は凸状である場合とそうでない場合があり、単一の連続した多角形である場合とそうでない場合があります。より大きな地域は、単純に郵便番号のリストとして保存されます。テリトリーのポリゴン データは保存されません。これが、ここで解決しようとしている問題です。
正しい方向への指針を前もって感謝します。