2012-02-28 6 views
0

私はすべてのユーザーの緯度/経度を追跡するアプリケーションを設計しています。ユーザーごとに、都市内の他のすべてのユーザー間の距離を計算します。私はPythonを使用します。リアルタイムWebアプリのLat/Longデータを計算して保存する方法は?

例: クライアントは、x秒ごとにlong/latでデータベースを更新します。更新するたびに、ログオンしている他のすべてのユーザーとの間の距離を再計算する必要があります。

私の計画は、都市を独自のテーブルに分割して、データセットと計算を小さく保つことでした。しかし、私はこのアイデアがもっと悪化すると思います。私は、交通量に顕著な差があれば、まったくスケールするとは思わない。彼らはユーザーベースを制限するアプリを使用したい場合、人々は大都市圏に限定される必要があります。

ので、私の質問は:

は、これらの計算を行うために最適化されたストレージバックエンドはありますか?私は今朝、PostGISについて聞いたことがありますが、私が読んだことから、それは過度のことかもしれないようです。私がやる予定のすべては、緯度/経度の距離を計算することだけです。 ありがとうございます

+1

を使用すると、データを行う上で計画してどのような依存...しかし、あなたがその意志の値の多くを計算するに終わるかもしれないようにそれが聞こえますどこでも使用することはありませんか? 必要に応じて距離を計算(およびキャッシュ)する方がよい場合があります。すなわち、ユーザが自分の「友人の画面」などを見ているときです。 – trapper

+0

2つの座標間の距離を計算する式があります。ユーザーの座標を保存するだけで問題を解決できます。必要に応じて距離を計算することについてはトラッパーに同意します。 –

+0

@trapper、はい、私は計算に過度に野心的だと思う、誰かが彼らの周りの人を見るように要求するときにだけ計算するより意味があります。 – dm03514

答えて

1

"aviation formulary"があります。そこに「ポイント間の距離」を見てください。

ここでは、より速い髪型である等角の近似があります。

角(LA1LO1)、(LA2LO2)はラジアンです。あなたは度から変換する必要があります。

同様に、応答、cは、ラジアン単位です。あなたは度を望んでいませんが、法定マイルまたはkmをしたいです。そのために、地球の平均半径を掛け:6,378.1キロ、3,961.3マイル

Equirectangular Approximation

+0

これは私が距離を計算するために使用している公式なので、私はこれらの計算のトンを非常に頻繁に処理する方法がもっと不思議でした。 – dm03514

+1

距離の計算は、等角矩形近似を使用して行われます。ここには役に立つかもしれないバージョンがあります。 http://www.movable-type.co.uk/scripts/latlong.html。 –