5

次のようなGEO-JSONポリゴンがあるとします。

[
    [15.520376, 38.231155],
    [15.160243, 37.444046],
    [15.309898, 37.134219],
    [15.099988, 36.619987],
    [14.335229, 36.996631],
    [13.826733, 37.104531],
    [12.431004, 37.61295],
    [12.570944, 38.126381],
    [13.741156, 38.034966],
    [14.761249, 38.143874],
    [15.520376, 38.231155]
]

GPSの位置がポリゴン領域内にあるかどうかを確認するにはどうすればよいですか?

たとえば、ユーザーがLat 37.387617Long 14.458008にいる場合、配列を検索するにはどうすればよいですか?

必ずしも誰かがコードを書いてくれる必要はありません。チェックする方法のロジックがわからないだけです。例(任意の言語)があれば、私に教えてください。

4

2 に答える 2

3

このタスクはpoint in polygonテストと呼ばれます。

Gerveは、このタスクに使用されるwidleyのアルゴリズムについて説明しました。しかし、これはそれを実装するのに役立ちません。平行線のようなフットトラップがあります。

そのアルゴリズムの1つは、最適化されたバリアントであるCrossingsMultiplytestと呼ばれます。

ソースコード:CrossingsMultiplyTest(ファイルの最後の関数)

概要は「ポリゴン戦略のポイント」に記載されています。

座標には経度を使用し、x座標には緯度を使用しyます。

于 2013-03-25T18:21:00.390 に答える
2

レイキャスティングアルゴリズムに関する記事を見つけました。それはここでかなりよく説明されています、それの要点は(擬似コードで):

count ← 0
 foreach side in polygon:
   if ray_intersects_segment(P,side) then
     count ← count + 1
 if is_odd(count) then
   return inside
 else
   return outside
于 2013-03-25T16:57:31.180 に答える