:::: MENU ::::

Cácular la distancia entre puntos dados por latitud y longitud

5.00 avg. rating (83% score) - 1 vote

Mucho que explicar, pero posiblemente la teoría no le interese a nadie, así que pondré directamente el algoritmo para realizar el cálculo de la distancia.

Si alguien tiene curiosidad, se basa en la trigonometría esférica (y asume que la tierra tiene esta forma). Con esas premisas, el trabajo consiste en obtener la distancia entre dos puntos en la superficie de una esfera, para lo cual hay que encontrar el circulo de mayor diámetro que une ambos puntos.

Si queréis buscar información sobre el algoritmo os aconsejo la búsqueda «Great circle distance» en google, y encontraréis bastantes artículos.

El algoritmo está escrito en objective-c y extraido de una aplicación para iPhone que hemos desarrollado recientemente.

-(double)distancia:(double)lon1:(double)lat1:(double)lon2:(double)lat2 {
  double toRad = 0.0174532925;
  double dLat = (lat2-lat1) * toRad;
  double dLon = (lon2-lon1) * toRad;
  double a = sin(dLat/2) * sin(dLat/2) + cos(lat1 * toRad) * cos(lat2 * toRad) * sin(dLon/2) * sin(dLon/2);
  double c = 2 * atan2(sqrt(a), sqrt(1-a));
  return 6371 * c;
}



3 Comments

Hey! Qué opinas sobre el artículo?