2014-09-29 98 views
0

我使用幾何函數和操作:http://www.postgresql.org/docs/9.3/static/functions-geometry.html在PostgreSQL中計算點和圓之間的距離,用於圓半徑和距離的單位是什麼?

表「銀行」包含一個地理圍欄其是circle用0.5半徑的類型。含lat_lon爲point

id url    lat_lon    device 
"455";"www.google.com";"(-83.0163,42.2733)";"48ddb459104986c1860eaa048ad72525ac881651" 

id  name geofence 
"ID123";"FAR";"<(-122.31562661719,49.051595254425),0.5>" 
"ID456";"NEAR";"<(-83.110566270539,42.102925914015),0.5>" 

表「點」我試圖找到所有的地理柵欄內的點。

我想:

SELECT * 
FROM 
    points, bank 
WHERE lat_lon <@ bank.geofence; 

我得到的結果接近,我檢查了點,但它們不是0.5KM半徑內,當我檢查他們在地圖上。

對於以上兩點,如果打印出的距離作爲列

SELECT *, lat_lon <-> bank.geofence 
FROM 
    points, bank; 

讓我對遠點的一個值39.3795,以及用於近點爲0。我知道這兩者都不在地理圍欄內,但我試圖找出用於「半徑」和「距離」的單位。

那麼,圓的半徑場是什麼單位? 如果我想要500米我應該使用什麼?

回答

1

它都在同一個單位(或更準確地說,根本沒有)。你可以稱它米,英寸或其他東西。你所說的lat_lon現在只是一個平面上的一個點,圓圈也是如此。

的距離使用基本幾何(勾股定理)計算:

a = 83.0163 - 122.31562661719 
b = 42.2733 - 49.051595254425 
c = sqrt(a^2 + b^2) = 39.212992455 
+0

我將如何去尋找地球表面上兩點之間的實際距離? – 2014-09-29 17:13:12

+0

在這種情況下,我會建議你使用Postgis(http://postgis.net/),它是專門爲這些情況:) – Wolph 2014-09-29 17:21:44

+0

這就是我目前正在研究的文檔不太清楚,如果我可以繼續使用'point'和'circle'我有或需要以某種方式轉換它們。 – 2014-09-29 17:26:24

相關問題