私は緯度と経度の2つの列を持つテーブルを持っています。私はすべてのオブジェクトを「矩形」(緯度/経度座標メトリックの矩形)バウンディングボックス内に取得したいとします.min-max緯度とmin-max経度です。基本的にはそれは次の擬似-SQLに沸く:空間インデックスと2つの座標インデックス
SELECT * FROM MyTable WHERE lat < :maxlat AND lat > :minlat
AND lon < :maxlon AND lon > :minlon
私のテーブルのインデックスを作成するための最善の解決策は何ですか? 2列のインデックス? 2つの列の2つのインデックス?空間インデックス?
データベースの移植性とシンプルさを犠牲にして特別な列、特定のライブラリを必要とするため、空間インデックスが本当に必要かどうかを知りたいと思います。
注:私はこの質問をデータベースにとらわれないようにしたいと思いますが、完全性のために私はPostGISなしでPostGreSQL 8を使って作業しているということを言及します。
このタイプの空間クエリのみを実行することは保証できますか? 2点間の実世界(大円)距離を見つけるような簡単な追加が必要な場合は、それらの空間ライブラリがすべて実際に便利になります...また、境界ボックスが+/-経度を横切る場合どうなるかを考慮してください。 170,0 -170,10(これは太平洋の有効な境界ボックスです)。 http://gis.stackexchange.com – tomfumb
はい、私はこのタイプの空間クエリを実行することを保証することができます。そして、私はすでに2点(Haversine関数)間の大円距離を計算する関数を持っています。太平洋を横断する場合、それはカバーされたゾーン外です(しかし、minlonとmaxlonを切り替える小さなテストで簡単に処理できます)。 –