The function finds azimuth values for geographical coordinates given as decimal degrees from the from coordinates to the to coordinate. In function trackAzimuth, the azimuth values are found between successive rows of the input coordinate matrix.

gzAzimuth(from, to, type = "snyder_sphere")
trackAzimuth(track, type="snyder_sphere")

Arguments

from

a two column matrix of geographical coordinates given as decimal degrees (longitude first)

track

a two column matrix of geographical coordinates given as decimal degrees (longitude first)

to

a one row, two column matrix or two element vector of geographical coordinates given as decimal degrees (longitude first)

type

default is "snyder_sphere", otherwise "abdali"; the results should be identical with slightly less trigonometry in "abdali"

Details

The azimuth is calculated on the sphere, using the formulae given by Snyder (1987, p. 30) and Abdali (1997, p. 17). The examples use data taken from Abdali (p. 17--18). There is a very interesting discussion of the centrality of azimuth-finding in the development of mathematics and mathematical geography in Abdali's paper. Among others, al-Khwarizmi was an important contributor. As Abdali puts it, "This is a veritable who's who of medieval science" (p. 3).

Value

values in decimal degrees - zero is North - of the azimuth from the from coordinates to the to coordinate.

References

Snyder JP (1987) Map projections - a working manual, USGS Professional Paper 1395; Abdali SK (1997) "The Correct Qibla", formerly at http://patriot.net/users/abdali/ftp/qibla.pdf

Author

Roger Bivand, with contributions by Sebastian Luque

Examples

name <- c("Mecca", "Anchorage", "Washington")
long <- c(39.823333, -149.883333, -77.0166667)
lat <- c(21.423333, 61.2166667, 38.9)
x <- cbind(long, lat)
row.names(x) <- name
crib <- c(-9.098363, 56.575960)
r1 <- gzAzimuth(x[2:3,], x[1,])
r1
#>  Anchorage Washington 
#>  -9.098363  56.575961 
all.equal(r1, crib)
#> [1] "names for target but not for current"
r2 <- gzAzimuth(x[2:3,], x[1,], type="abdali")
r2
#>  Anchorage Washington 
#>  -9.098363  56.575961 
all.equal(r2, crib)
#> [1] "names for target but not for current"
trackAzimuth(x)
#> [1]  4.691489 82.234220