0

多数のgeocoordiantesを1つのレコードのデータベースに保存する必要があります。地理座標をSQLデータベースに保存することはできないので、現時点では次のようにしています。

geocoordinates-->string-->bytes-->database

データベース内の文字列の制限は8000バイトであるため、この量のデータはバイト形式で保存する必要があります(データベースはそれがイメージであると見なすため、バイト制限はありません)。地理座標を6d.p(15d.pから)に切り捨てましたが、プロセスは非常に遅くなります。

このタスクの効率を改善する方法を知っている人はいますか?

ありがとう!

4

3 に答える 3

2

データベースを再設計し、緯度/経度を表すためにポイントをdoubleのペアとして保存してみませんか。必要に応じて、これらはすべて「親」行を参照できます。

于 2012-06-25T17:38:58.873 に答える
1

現在のテーブルの行/レコードに関連して、緯度と経度のペアでジオロケーションデータを新しいテーブルに保存することをお勧めします。

そのデータを使ったあなたの計画はわかりませんが、これは私にとって論理的な解決策のようです。

于 2012-06-25T17:45:05.303 に答える
1

Postgresはポイントやその他の幾何学的プリミティブを直接サポートしています:http ://www.postgresql.org/docs/9.1/interactive/datatype-geometric.html

また、便利な<->距離比較演算子がありますhttp://www.postgresql.org/docs/9.1/interactive/functions-geometry.html

最近傍検索のインデックスを最適化することもできます。これについては、http ://www.postgresql.org/docs/9.1/interactive/indexes-types.htmlを参照してください。

そして最後に、上記のリンクから抜粋した例を次に示します。

SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;

調べたいと思うかもしれない専用のGISデータベースがあります。postgresの上に構築されたものはPostGISです:http://postgis.refractions.net/

于 2012-06-25T18:06:38.623 に答える