2011-07-11 10 views
5

No encuentro ejemplos en CF de la fórmula Haversine (una fórmula para calcular distancias entre dos puntos en una esfera desde sus longitudes y latitudes).Cómo entrenar la fórmula Haversine en ColdFusion

Wikipeda tiene ejemplos en otros idiomas (http://en.wikipedia.org/wiki/Haversine_formula) pero ninguno en CF.

Una interpretación en CF está debajo de otro desarrollador, interna, y no completamente probada. Estoy interesado en ver cómo otros han calculado esto en CF. También me gustaría obtener opiniones sobre el ejemplo a continuación sobre cómo se puede simplificar.

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; 
    } 

Respuesta

6

¿Has mirado en este ...

http://cflib.org/udf/getHaversineDistance

(Nueva URL desde CFLib.org cambió al generador de sitio estático)

+0

Hola Richard, gracias, tratando de pongo mi cabeza alrededor de algunas cosas dolorosas como es;) parece perfecto. se olvidó de las libs de java! createObject ("java", "java.lang.Math") mucho más fácil – Prometheus

+1

Siempre soporte sobre los hombros de los gigantes :-) –

+1

Escribí ese UDF y era solo un puerto rápido de: http: //www.movable-type .co.uk/scripts/latlong.html – Henry

Cuestiones relacionadas