特定のポイントがポリゴン内にあるかどうかを判断する SQL クエリを作成しようとしています。(私は SQL Server 2008 R2 を使用しています)。
私はこのチュートリアルに従っていました(コピー/貼り付けしてテーブル名を変更するだけです)、ほぼ機能しますが、まったく正確ではありません。たとえば、座標が : である特定の点を考えてみましょう。
この点の周りに 4 つの頂点座標で小さな多角形 (おおよその正方形) を描くと、次のようになります。
P = 45.7664, 4.87383
S = 45.97215 4.693909, 45.687 4.674683, 45.73302 5.460205, 46.05227 5.366821, 45.97215 4.693909
以下のリンクに示されている手順は、ポイントが多角形ではないことに答えますが、それは.
しかし、正方形を拡大すると (私のテストでは 10 倍大きくなります)、手順は私のポイントが正方形の中にあると答えます。
そこで、より正確な別のアルゴリズムを探しています。
これが私のDBの各ポリゴンのすべての頂点座標を含む私のVERTICEテーブルです
すべてのポリゴン (数千あります) について、パラメータで渡された特定のポイントがポリゴン内にあるかどうかを確認する必要があります (そうであれば、どのポリゴンか)。自分でループを実行できますが、正しいPoint in polygonアルゴリズムがありません。
誰かが私を助けることができますか?どうもありがとうございました。
まとめ
対応する SQL フィドル: http://sqlfiddle.com/#!3/0caa4/1