Distances in LatLong coordinate system
configuration-examples Distances in LatLong coordinate system
Great-circle distances between two points on a sphere given their longitudes and latitudes can be calculated with the [haversine formula].(https://en.wikipedia.org/wiki/Haversine_formula)
The following example shows an implementation in the GeoDMS configuration. We thank PBL for making this example available.
example haversine function
template DistanceMtrFromDegrees
{
// begin case parameters
attribute<float64> lat1_degrees (NL);
attribute<float64> lat2_degrees (NL);
attribute<float64> lon1_degrees (NL);
attribute<float64> lon2_degrees (NL);
// end case parameters
attribute<float64> lat1_radian (NL) := lat1_degrees * pi() / 180.0;
attribute<float64> lat2_radian (NL) := lat2_degrees * pi() / 180.0;
attribute<float64> lon1_radian (NL) := lon1_degrees * pi() / 180.0;
attribute<float64> lon2_radian (NL) := lon2_degrees * pi() / 180.0;
attribute<float64> deltaLon_radian (NL) := lon1_radian - lon2_radian;
attribute<float64> deltaLat_radian (NL) := lat1_radian - lat2_radian;
attribute<float64> a (NL) := sqr(sin(deltaLat_radian/2d)) + (((cos(lat1_radian) * cos(lat2_radian))) * sqr(sin(deltaLon_radian/2d)));
attribute<meter> distance (NL) := (2d * 6371000d * atan(sqrt(a) / (sqrt(1d - a))))[Meter];
}