Calcular distancia entre dos puntos (latitud, longitud)

Respondida Calcular distancia entre dos puntos (latitud, longitud)

  • Thursday, November 03, 2011 11:32 AM
     
     

    Buenas!

    Mi pregunta es la siguiente: tengo un método que calcula la distancia entre dos puntos mediante unos calculos en lo que se deberia utilizar valores decimales para devolver la distancia con una precisión aceptable.
    El problema es que hay operadores y funciones que no me permiten utilizar variables deicmal, por ejemplo Math.Cos...

    Puedo cambiar los tipos de las variables a double y funcionaria correctamente pero la precisión se vería reducida considerablemente.

    Gracias de antemano!

All Replies

  • Thursday, November 03, 2011 11:38 AM
    Moderator
     
     

    hola

    pero porque necesitarias el Math.Cos() para calcular distinacia ?

    digo si haces

    double punto1 = (decimal)20.5;

    double punto2 = (decimal)26.1;

    double distancia = punto2 - punto1;

    o sea imagino la formula deberia ser algo simple, me suana raro que un coseno intervenga

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • Thursday, November 03, 2011 11:45 AM
     
     

    Una porción del código sería esta para que sirva de ejemplo.

      // paso los grados a radianes
                LatA = LatA * Math.PI / 180;
                LatB = LatB * Math.PI / 180;
                LngA = LngA * Math.PI / 180;
                LngB = LngB * Math.PI / 180;

                // 6371 es el radio de la tierra
                // 6371 * ACos(Math.Cos(LatA) * Cos(LatB) * Cos(LngB - LngA)+ Sin(LatA) * Sin(LatB))
                double operacion = Math.Cos(LatA) * Math.Cos(LatB) * Math.Cos(LngB - LngA) + Math.Sin(LatA) * Math.Sin(LatB);
         

  • Thursday, November 03, 2011 12:13 PM
    Moderator
     
     Answered

    hola

    pero analziando la funcion de calculo

    Math.Cos Method

     

    esta soporta como parametro un double, con eso ya puede usar decimales

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • Thursday, November 03, 2011 12:20 PM
     
     

    Creo que no me he explicado bien, necesito usar valores de tipo decimal que tienen mas precisión que los de tipo double. No me refiero a decimal de valores decimales.

    No se si me explico o te estoy liando mas ^^.

  • Thursday, November 03, 2011 3:28 PM
     
     
    Los elementos de tipo decimal no almacenan la distancia en km, lo que referencian son las coordenadas. Un ejemplo de coordenadas podría ser (37,391699803993100, -6,428940268233420). Esas coordenadas referencian a un punto y busca la distancia entre esas  coordenadas y las de otro punto que yo seleccione en el mapa.