2011-07-11 102 views
5

我在Haversine公式的CF中找不到任何示例(用於計算球體上兩點之間距離的經度和緯度的距​​離的公式)。如何在ColdFusion中鍛鍊Haversine公式

維基百科在其他語言中有示例(http://en.wikipedia.org/wiki/Haversine_formula),但在CF中沒有。

CF中的解釋由另一位開發人員在內部進行了解釋,未經過充分測試。我有興趣看看其他人是如何在CF中計算出來的。我也有興趣就下面的例子對它如何簡化提出意見。

var variables.intEarthRadius = 6371; // in km 

var local.decRadius = arguments.radius/1000; // convert radius given in metres to kilometres 

var local.latMax = arguments.latitude + degree(local.decRadius/variables.intEarthRadius); 
var local.latMin = arguments.latitude - degree(local.decRadius/variables.intEarthRadius); 

var local.lngMax = arguments.longitude + degree(local.decRadius/variables.intEarthRadius/cos(radian(arguments.latitude))); 
var local.lngMin = arguments.longitude - degree(local.decRadius/variables.intEarthRadius/cos(radian(arguments.latitude))); 





private numeric function degree(required numeric radian) hint="I convert radians to degrees." { 
     return arguments.radian * 180/pi(); 
    } 

    private numeric function radian(required numeric degrees) hint="I convert degrees to radians." { 
     return arguments.degrees * pi()/180; 
    } 

回答

6

有你看着這...

http://cflib.org/udf/getHaversineDistance

(新URL,因爲CFLib.org轉換爲靜態網站發生器)

+0

理查德·您好,感謝,只是想讓我的頭幾個事情痛苦,因爲它;)它似乎是完美的。忘了關於java庫! createObject(「java」,「java.lang.Math」)更容易 – Prometheus

+1

始終站在巨人的肩膀上:-) –

+1

我寫了UDF,它只是一個快速端口:http://www.movable-type .co.uk /腳本/ latlong.html – Henry