如何锻炼ColdFusion中的Haversine配方

时间:2011-07-11 09:17:49

标签: math coldfusion coldfusion-9

我在CF的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;
    }

1 个答案:

答案 0 :(得分:6)

你看过这个......

http://cflib.org/udf/getHaversineDistance

(自CFLib.org切换到静态网站生成器以来的新网址)