7

緯度と経度のペアとしてポリゴンポイントのデータベースがあり、特定のlat、lngポイントがいずれかのポリゴンの内側にあるかどうかをテストする必要があります。

これらを含むいくつかのアルゴリズムがありますが、ポリゴンが前庭にまたがる場合(経度が東経+180度から西経-180度に反転するニュージーランドの海岸沖)では機能しません。

私が見ている解決策の1つは、ポリゴンが前庭にまたがっているかどうかを検出し、その場合は両側に1つずつ、2つのポリゴンに分割して、それぞれをチェックすることです。

4

4 に答える 4

2

もう1つの(より単純な)オプションであるIMOは、その特殊なケースをテストし、存在する場合は、クエリポイントとポリゴンに変換を適用することです。たとえば、子午線にまたがる場合は、すべてを特定の経度で変換して子午線にまたがらないようにし、標準のテストを実行します。

于 2009-07-24T00:59:35.823 に答える
1

これはやり過ぎかもしれませんが、マップを平面として扱うのではなく、球状のポリゴンを使用することを検討してください。それらを処理し、球状ポリゴン内のポイント チェックを実行できる Javaのライブラリを次に示します。ただし、地球の半分以上または両方の極を含むポリゴンがある場合、囲まれた領域の定義が崩れ始めるため、問題が発生する可能性があります。

于 2009-07-24T01:33:56.767 に答える
1

360 を追加して、すべての経度座標を GW 子午線の正側に「移動」させることはできませんか? 例: 座標が -178 度の場合は +182 度になり、-1 度は 359 度になり、1 度は 361 になります。

それが極にどのように影響するかはわかりませんが、極に触れていないものにはおそらく問題なく機能します.

于 2012-10-01T09:46:26.687 に答える
0

提案をありがとう。最後に、私がテストしているポリゴンは長方形であるため、アンテメリディアン (異なる符号の経度を持つ) にまたがる場合は、両側に 1 つずつ、2 つのポリゴンに切り刻み、それらのいずれかと交差するオブジェクトをクエリします。

于 2009-08-08T05:07:09.550 に答える