2012-02-28 74 views
0

我正在設計一個應用程序,將跟蹤所有用戶的緯度/經度。對於每個用戶,它將計算城市中所有其他用戶之間的距離。我將使用python。如何計算並存儲實時網絡應用的緯度/經度數據?

例如: 我的客戶端將每x秒更新一次數據庫的long/lat數據庫。每次更新時,都必須重新計算其與所有其他登錄用戶之間的距離。

我的計劃是將城市拆分成自己的表格,以便保持數據集和計算的更小。但是我越想到這個想法越來越糟。如果有任何重要的流量,我認爲它根本不會擴展。如果用戶想要使用會限制用戶羣的應用程序,那麼人們將不得不被限制在主要的大都市區。

所以我的問題是:

是否有優化做這些計算的存儲後端?今天早上我剛剛聽說過PostGIS,但是從我看過的內容看來,它可能是矯枉過正的?我打算做的是計算經緯度之間的距離。 謝謝

+1

取決於你打算用數據做什麼...但它聽起來像是你可能最終計算值很多那會從未在任何地方使用? 也許最好只根據需要計算(並緩存)距離。即當用戶查看他們的「朋友屏幕」或其他。 – trapper 2012-02-28 16:34:00

+0

有一個計算兩個座標之間的距離的公式,所以只保存用戶座標就可以解決你的問題。我同意捕捉器只在需要時計算距離。 – 2012-02-28 16:36:02

+0

@trapper,是的,我認爲我的計算過於雄心勃勃,只有當有人要求看到身邊的人時才計算它們,這樣做更有意義。 – dm03514 2012-02-28 16:47:51

回答

1

有「aviation formulary」。在「點之間的距離」下查找。

下面是Equirectangular Approximation,這是一個更快的髮型。

角(LA1LO1),(LA2LO2)處於弧度;你必須從度數轉換。

類似地,響應c以弧度表示。你不想學位,但想要法定英里或公里。對於這一點,乘以地球平均半徑:6,378.1公里,3,961.3英里

Equirectangular Approximation

+0

ty這是我用來計算距離的公式,我更想知道如何能夠非常頻繁地處理這些計算。 – dm03514 2012-02-28 16:44:34

+1

通過Equirectangular Equirectangular Approximation完成距離計算。這是一個可能有用的版本。 http://www.movable-type.co.uk/scripts/latlong.html。 – 2012-02-28 18:08:55