2011-02-08 9 views

答えて

-1

​​が役に立ちます。

3

シェイプが数多く複雑な場合は、空間データベースを使用することをお勧めします。 PostGISは無料で、MySQLが行うほとんどのプラットフォーム上で動作します。空間データベースには、ポリゴンを格納するための空間データ型、ポイントがポリゴンにあるかどうかをデータベースに照会する空間クエリ、およびすべてを合理的に効率化する空間インデックスがあります。

OTOHの場合、非常に単純なポリゴンの数がごくわずかである場合は、通常のデータベースで管理できます。私はこれを一度やった。私のアプローチ:

ポリゴンテーブルがあります。各ポリゴンレコードには、プライマリキー、各ポリゴンに格納する必要のある情報、ポリゴンの境界ボックス(最大値と最小値のx値とy値)が含まれています。

ポリゴンのポイントは、ポリゴンの子であるポイントテーブルに格納されます。各ポイントレコードには、メンバーであるポリゴンの主キー、シーケンス番号、x値とy値が含まれます。

ポイントを含む可能性のあるポリゴンを検​​索するには、ポリゴンテーブルを照会して、そのポイントを含む可能性のあるポリゴン、つまりポイントが境界ボックス内にあるポリゴンを探します。これらの候補ポリゴンはメモリに読み込まれ、それぞれがポイントを含むかどうかがチェックされます。

多くのアルゴリズムがあります。 http://en.wikipedia.org/wiki/Point_in_polygon

私はレイキャスティング法を使用しました。これは単純なので、レイキャスティング法を使用しました。点から無限に任意の方向に線を引いて、傍受する線分の数を数えます。奇数を交差すると、あなたのポイントはポリゴンの内側にあります。

関連する問題