Randomly samples longitude and latitude on earth so that equal areas are (approximately) equally likely to be sampled. (Approximation assumes earth as a perfect sphere.)

rlatlon(...)

rlonlat(...)

rgeo(n = 1, latlim = c(-90, 90), lonlim = c(-180, 180), verbose = FALSE)

rgeo2(n = 1, latlim = c(-90, 90), lonlim = c(-180, 180), verbose = FALSE)

Arguments

...

arguments passed through to other functions

n

number of random locations

latlim, lonlim

range of latitudes and longitudes to sample within, only implemented for rgeo.

verbose

return verbose output that includes Euclidean coordinates on unit sphere as well as longitude and latitude.

Value

a data frame with variables long and lat. If verbose is TRUE, then x, y, and z coordinates are also included in the data frame.

Details

rgeo and rgeo2 differ in the algorithms used to generate random positions. Each assumes a spherical globe. rgeo uses that fact that each of the x, y and z coordinates is uniformly distributed (but not independent of each other). Furthermore, the angle about the z-axis is uniformly distributed and independent of z. This provides a straightforward way to generate Euclidean coordinates using runif. These are then translated into latitude and longitude.

rlatlon is an alias for rgeo and rlonlat is too, expect that it reverses the order in which the latitude and longitude values are returned.

rgeo2 samples points in a cube by independently sampling each coordinate. It then discards any point outside the sphere contained in the cube and projects the non-discarded points to the sphere. This method must oversample to allow for the discarded points.

Examples

rgeo(4)
#>          lat         lon
#> 1 -26.753299    4.880432
#> 2 -64.369786   51.715726
#> 3  18.181790  -66.721506
#> 4  -6.281018 -103.974445
# sample from a region that contains the continental US
rgeo(4, latlim = c(25,50), lonlim = c(-65, -125))
#>        lat        lon
#> 1 27.27968 -117.01791
#> 2 48.57241  -80.02287
#> 3 34.33344  -89.51643
#> 4 34.95282 -110.67493
rgeo2(4)
#>          lat       lon
#> 1   9.714323 -88.59965
#> 2  27.981377 167.53559
#> 3 -64.222853  32.77816
#> 4  40.528947 124.11740