#!/usr/bin/awk -f # math_earth_coordinates.awk - math the distance between latitude/longitude coords # # example on request by gnubien/#bash # by xmb{@skilled.ch} # # 10/09/2005 - made off math code given BEGIN { if (! lat1 && lat1 != "0") lat1 = 28.1028 * 0.017453293 if (! lon1 && lon1 != "0") lon1 = -80.6458 * 0.017453293 R = 3956 } { lat2 = $2 * 0.017453293 ; lon2 = $1 * 0.017453293; some_math() } function some_math() { # if ( lon1 > lon2) lon3 = lon1 * -1; dlon = lon2 - lon3 # if ( lon1 < lon2) dlon = (lon1 - (lon2 * -1)) # if ( lat1 < lat2) dlat = lat2 - lat1 # if ( lat1 > lat2) dlat = lat1 - lat2 dlon = lon2 - lon1 dlat = lat2 - lat1 a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2 c = 2 * atan2(sqrt(a), sqrt(1-a)) d = R * c # print here print d, c, a, dlon, dlat, lat1, lon1, lat2, lon2 }