2009-07-24 18 views
5

ポリゴンポイントのデータベースを緯度と経度のペアとして持っており、ポリゴンの中にlat、lngポイントがあるかどうかをテストする必要があります。ポリゴンのアルゴリズムでポリゴンを扱うポリゴンを扱うポリゴン

theseを含むいくつかのアルゴリズムがありますが、ポリゴンがアンテローシドを横切っている場合(ニュージーランドの海岸から経度が+180度西から-180度フリップする場合)は機能しません。私が見

一つの解決策は、ポリゴンがantemeridianので、それらのそれぞれを確認し、2つの多角形、両側に1つずつに分割した場合をまたぐかどうかを検出することです。

答えて

2

他の(単純な)オプションは、IMO、ちょうどその特別な場合をテストし、それが存在する場合は、あなたのクエリ点とポリゴンに変換を適用することです。たとえば、反経絡にまたがっている場合は、すべてを特定の経度で翻訳して子午線全体に広げないようにし、標準テストを行います。

1

これはおそらく行き過ぎですが、あなたの代わりに平面としてマップを治療する球状のポリゴンを使用して検討するかもしれません。ここでは、Javaでlibraryが処理され、ポイントイン球形ポリゴンチェックが可能です。あなたが地球の半分以上、または両方の極を含むポリゴンを持っている場合は、囲まれた領域の定義が崩れ始めるので、問題が発生する可能性があります。提案のため

+0

合意 - 最高の球形ポリゴンとして扱うことです。ただし、巻いた規則に従わないと(つまり、内部をCCWトラバーサルで囲まれた領域として定義しない限り)、囲まれた領域は常に曖昧です。 –

0

感謝。最後に私がテストしているポリゴンは長方形なので、アンメリディアン(それは異なる符号を持つ)が2つのポリゴンに分割され、どちらか一方が交差し、それらのいずれかと交差するオブジェクトを検索します。

0

は、あなただけの360を追加することにより、GWの子午線の正側へのすべての経度の座標「動き」を作ることができませんか?例:座標は-178度、次に+ 182度、-1度は359度、1度は361になります。

私はそれが極にどのように影響するかわかりませんが、極に触れないでください。

+0

私はどこにでも特権を持っているわけではないので、答えを出すだけで私の言うことを得ることができます... –