#!/usr/bin/awk -f function rad(deg) { return deg * 3.14159265 / 180.0 } function arccos(x) { return 2 * atan2(sqrt(1 - x*x) / (1 + x), 1) } function s(lat1, lon1, lat2, lon2) { rlat1 = rad(lat1) rlon1 = rad(lon1) rlat2 = rad(lat2) rlon2 = rad(lon2) # printf("%f %f %f %f\n", rlat1, rlon1, rlat2, rlon2) return arccos(sin(rlat1)*sin(rlat2) + cos(rlat1)*cos(rlat2)*cos(rlon2 - rlon1)) } BEGIN { tlat = ARGV[1] tlon = ARGV[2] ARGC = 1 minhood = "Trainstation" mindist = 99999 } # match some word, then 2 floats /(\<.*\>)\s+(-?[0-9]+\.[0-9]+)\s+(-?[0-9]+\.[0-9]+)/{ hood = $1 lat = $2 lon = $3 dist = s(lat, lon, tlat, tlon) # printf("%22s %f\n", hood, dist) if (dist < mindist) { mindist = dist minhood = hood } } END { printf("%s\n", minhood) }