This query function will calculate the distance, in meters, between two geographical coordinates (lat1, lon1) and (lat2, lon2) along an ideal earth surface.

It uses the Haversine approximation, which is accurate to about 0.5%. It doesn't take the altitude into account.

ParameterTypeRequiredDefaultDescription
asstringoptional[a]_distance The name of the field that is produced by the function.
lat1stringrequired  The field to use for latitude of first point.
lat2stringrequired  The field to use for latitude of second point.
lon1stringrequired  The field to use for longitude of first point.
lon2stringrequired  The field to use for longitude of second point.

[a] Optional parameters use their default value unless explicitly set.

Note

The values of latititude and longitude coordinates must be expressed in decimal degrees.

To calculate the distance between two geographical coordinates in meters, you could use a query function like so:

logscale
londonLat := 51.507222
| londonLon := -0.1275
| tokyoLat := 35.689722
| tokyoLon := 139.692222
| distance := geography:distance(lat1=londonLat, lon1=londonLon, lat2=tokyoLat, lon2=tokyoLon)