All locations are first converted to SpatialPoints
objects. The sp::over() function is then used to determine which
polygon from SPDF
each location falls in. The dataframe row associated
with each polygon is then associated with each location.
getSpatialData(lon, lat, SPDF, useBuffering = FALSE, verbose = FALSE)
Vector of longitudes in decimal degrees.
Vector of latitudes in decimal degrees.
Object of class SpatialPolygonsDataFrame.
Logical flag specifying the use of location buffering to find the nearest polygon if not target polygon is found.
Logical flag controlling detailed progress statements.
Vector or dataframe of data.
Occasionally for coastal locations the precise coordinates
lie outside the boundaries of a low resolution SpatialPolygonsDataFrame.
To account for this any location that remains unassociated after the first
pass is then buffered to create a small circle around the original location.
All polygons are then checked to see if there is any intersection with the
now larger buffered locations. Each point is then checked for an intersecting
polygon at the following radii: 1km, 2km, 5km, 10km, 20km, 50km, 100km, 200km.
If a buffered location is more than 200km away from any polygon, a value of
NA
(or data frame row with all NA
s) is returned for that
location.
Missing or invalid values in the incoming lon
or lat
vectors
result in NA
s at those positions in the returned vector or data frame.