geodist
GoLang package to compute the distance between two geographic latitude, longitude coordinates
Algorithm Comparison
Vincenty
is more accurate thanHaversine
because is considers the Earth's ellipticity when performing the calculation, but takes a longer time to compute.- Wikipedia: Haversine
- Wikipedia: Vincenty
- Is the Haversine Formula or the Vincenty's Formula better for calculating distance?
Example
var newYork = geodist.Coord{Lat: 40.7128, Lon: 74.0060}
var sanDiego = geodist.Coord{Lat: 32.7157, Lon: 117.1611}
miles, km, ok := geodist.VincentyDistance(newYork, sanDiego)
if !ok {
fmt.Println("Unable to compute Vincenty Distance.")
return
}
fmt.Printf(" [Vincenty] New York to San Diego: %.3f m, %.3f km\n", miles, km)
var elPaso = geodist.Coord{Lat: 31.7619, Lon: 106.4850}
var stLouis = geodist.Coord{Lat: 38.6270, Lon: 90.1994}
miles, km = geodist.HaversineDistance(elPaso, stLouis)
fmt.Printf("[Haversine] El Paso to St. Louis: %.3f m, %.3f km\n", miles, km)
Online Calculators
- Great Circle: NOAA: Latitude/Longitude Distance Calculator
- Haversine: Moveable Type: Calculate distance, bearing and more between Latitude/Longitude points
- Vincenty: CQSRG: WGS-84 World Geodetic System Distance Calculator
Acknowledgements
- Haversine Algorithm in
GoLang
- Vincenty Algorithm in
JavaScript