2011-10-25 8 views
3

Androidアプリケーションの通常のSQLiteデータベースに位置(緯度/経度)を持つオブジェクトを保存します。アプリケーションは、このDBに格納されている新しいオブジェクトを含むメッセージ(UDPパケット)を受信します。現在の場所に基づいてデータベースの行を削除する

DBの爆発を避けて軽く保つために、特定の半径よりも遠いすべてのオブジェクトを永久に削除したいと思います。 DBは、DBヘルパーを実装するDBアダプタクラスを介して制御されます。

距離近似を使用したくないので、私はhaversine式を使用したいと思います。今私は次の質問があります:

  1. 軽量インテリジェントなソリューションでこのタスクを実装する最良の方法はありますか?
  2. 私は仕事をするためにAsyncTaskを使うことを考えました。これはお勧めですか?
+0

この回答を見るhttp://stackoverflow.com/a/12997900/779408 – breceivemail

答えて

2

これは私がデータベースに保存されたGPSデータとオブジェクトのソート句を取得するために使用されている方法である。

public String getOrderString(double latitude, double longitude) { 
    double fudge = Math.pow(Math.cos(Math.toRadians(latitude)), 2); 

    return "((" + latitude + " - " + KEY_LATITUDE + ") * (" + latitude 
      + " - " + KEY_LATITUDE + ") + (" + longitude + " - " 
      + KEY_LONGITUDE + ") * (" + longitude + " - " + KEY_LONGITUDE 
      + ") * " + fudge + ") ASC"; 
} 

hereから「借りました」。ファッジファクターについての私の理解は、赤道の近くにない座標を考慮に入れていることです。この方程式は今まで私にとってはうまくいきましたし、かなり速いです。

public int removeBuildingEntry(double latitude, double longitude, double threshold) { 
    String where = getWhereString(double latitude, double longitude, double threshold) 

    return db.delete(TABLE, where, null); 
} 

唯一の問題は私にはないということです。そして、あなたの削除方法は次のようになります

public String getWhereString(double latitude, double longitude, double threshold) { 
    double fudge = Math.pow(Math.cos(Math.toRadians(latitude)), 2); 

    return "((" + latitude + " - " + KEY_LATITUDE + ") * (" + latitude 
      + " - " + KEY_LATITUDE + ") + (" + longitude + " - " 
      + KEY_LONGITUDE + ") * (" + longitude + " - " + KEY_LONGITUDE 
      + ") * " + fudge + ") < " + threshold; 
} 

は今、私はあなたが何かをすることによって、同じ式を利用することができると思います方程式の結果の単位を知っていて、それであなたがしきい値として渡すべきもの。私の状況では、私は秩序だけを望むので、私はそれらを気にしませんが、あなたの場合は違いを生むかもしれません。より正確な数値が必要な場合は、別の値で再生したり、計算したりすることができます。

+0

コードと説明をありがとう!これは本当に役に立ちます!私はそれを試して報告します! – Palund

+0

私はこの方法で実装しました。ユニットの場合、私は両方の製品に約111.2 kmを掛けます。赤道で1度の幅。ファッジファクターでも機能します。近似はOKです。再度、感謝します! – Palund

+0

うれしかった。あなたの質問に答えた場合は、受け入れ済みとしてマークしてください – Craigy

関連する問題