2014-07-17 50 views
1

我想計算兩個經緯度之間的距離並顯示該值。 我也想用這個值(四捨五入到最接近的KM)在postgresql查詢的兩處使用計算值

注:人爲的例子

這裏就是我有

SELECT 
ST_Distance(
    ST_GeogFromText(
    'SRID=4326;POINT(' || longitude || ' ' || latitude || ')' 
    ), 
    ST_GeogFromText('SRID=4326;POINT(1 1)') 
) AS distance, id from locations limit 10 

現在這工作得很好。我得到米的距離

但我想在兩米,公里距離(這個問題是很簡單的)

這裏是我的以爲會工作

SELECT 
ST_Distance(
    ST_GeogFromText(
    'SRID=4326;POINT(' || longitude || ' ' || latitude || ')' 
    ), 
    ST_GeogFromText('SRID=4326;POINT(1 1)') 
) AS distance, distance/1000 as distance_in_km, id from locations limit 10 

這將返回一個錯誤..
列「距離」不存在
它在查詢中的第二個「距離」的箭頭指向。

什麼我真的想避免是有兩個的全部價值和四捨五入至KM

請注意計算:這是不實際的查詢,但一個是做作提出的問題。

回答

2

嘗試了這一點: -

SELECT distance, distance/1000 as distance_in_km from 
(
    SELECT 
     ST_Distance(
      ST_GeogFromText(
      'SRID=4326;POINT(' || longitude || ' ' || latitude || ')' 
     ), 
     ST_GeogFromText('SRID=4326;POINT(1 1)') 
    ) AS distance, id from locations limit 10 
) t; 
+0

+1感謝..這確實幫助。 – baash05

+0

現在我必須弄清楚如何更改活動記錄調用的from子句。 – baash05