2012-04-14 10 views
0

私は対応するアドレスの緯度と経度を変換する必要があるGPS位置で作業しています。私はすべての緯度と経度(1,500,000以上のデータ)のデータベースを、実際のランドマーク、すなわち1つのマスタテーブルにある住所と一緒に持っています。場所Javaプログラムでのカウントの問題

我々は、すべての地理的位置を横切って移動され、多くの車両にGPSデバイスをインストールしています。このデバイスは2分ごとに実際の位置を緯度と経度で送信します。私はこの緯度と経度を取得し、マスターテーブルにマッピングし、マスターテーブルからどのランドマークが近いかを確認します。この計算を行うために、緯度と経度にデルタ値を加算して車両から取得し、マスターテーブルから最も近い検索を見つけるための数学的演算を行います.YYZ位置から5 KMの車が表示されたら、最も近い点であるマスター表。あなたは私たちが得るかどのくらいのデータ想像もして

私たちは車とすべてのデバイスにインストール万台のGPSデバイスを持っているので、このプログラムは基本的に、位置を計算するために多くの時間を要するが、2分後にGPSデータを送信します。

は、あなたがこの問題を修正し、それは非常にスケーラブルかつ迅速にするために私を助けてもらえます。

ありがとうございます。

+0

構成部分に侵入、それをダウンし、最も長い時間を取っているかを見る、そこにあなたの努力を集中します。それはデータの送り返しですか?それは計算ですか?それは場所のSQL検索ですか?何が時間がかかりますか?あなたはそれをA→B→C→D→E→F等に分解し、各ステップがどれくらいの時間を要しているかを把握し、どこに最大の力を発揮するかを考えなければなりません。バックパフォーマンスが受け入れられるまでそれを続けてください。 A - > Fから時間を追跡する方法がない場合は、それを構築する必要があります。 – xQbert

+0

@xQbertは、我々は3列の緯度、経度と場所を持っているテーブルを持っている - 私は、デバイスから任意の緯度と経度を取得したら、マスターテーブルで計算を実行した後、我々は緯度と経度の列に挿入するが、我々は場所の欄には何も挿入していけません緯度と経度を送信することによりXYZから5KMのような位置を取得し、最初のテーブルの位置欄で更新します。実際にマスターテーブルに緯度と経度を渡して、マスターテーブルの使用可能なランドマークから最も近い場所を取得するのには多くの時間がかかります。ここで改善するために頼んでいます。ありがとう – geekIndiana

+0

プロシージャはありますか?関数?またはSQL Server 200Xで長時間実行されているものはありますか? ORACLE、DB2、または...もしそうなら、パフォーマンスを向上させるのを助けるために、実際に長時間実行されるSQLと実行プランのようなものを見るのに役立ちます。またはあなたは "最も近い"ランドマークを見つけようとするためにJavaからデータベースへの繰り返しの試みをしていますか? – xQbert

答えて

1

どのようにあなたのDB上のGISレイヤを使用してはどうですか? PostGISのようなものは、そのような種類のfunctinalityを持つsqlに新しいレイヤーを追加します。 〜からFAQ

3.7。他のオブジェクトの半径内のすべてのオブジェクトを見つける最良の方法は何ですか?

最も効率的にデータベースを使用するには、半径をやるのがベストであるバウンディングボックステストと半径テストを組み合わせ を照会します。バウンディング ボックステストは、 データのサブセットへの高速アクセスを与える、空間インデックスを使用しています半径テストが適用されます。

ST_DWithin(ジオメトリ、ジオメトリ、距離)関数は、インデックス付き距離の検索を実行する便利な方法です( )。これは、距離半径を囲むのに十分な大きさの 検索矩形を作成してから、 のインデックス付きサブセットで正確な距離検索を実行することによって機能します。例えば

、POINTの100メートル(1000年1000年) を持つすべてのオブジェクトは、次のクエリがうまくいくでしょう見つける:

SELECT * geotable WHERE ST_DWithin(geocolumn、 'POINT(1000年 1000)' から、 100.0)。