Compute the area of a polygon in angular coordinates (longitude/latitude) on an ellipsoid.
1.1
## S4 method for signature 'matrix'areaPolygon(x, a=6378137, f=1/298.257223563,...)## S4 method for signature 'SpatialPolygons'areaPolygon(x, a=6378137, f=1/298.257223563,...)
Arguments
x: longitude/latitude of the points forming a polygon; Must be a matrix or data.frame of 2 columns (first one is longitude, second is latitude) or a SpatialPolygons* object
a: major (equatorial) radius of the ellipsoid
f: ellipsoid flattening. The default value is for WGS84
...: Additional arguments. None implemented
Returns
area in square meters
Note
Use raster::area for polygons that have a planar (projected) coordinate reference system.
Author(s)
This function calls GeographicLib code by C.F.F. Karney
p <- rbind(c(-180,-20), c(-140,55), c(10,0), c(-140,-60), c(-180,-20))areaPolygon(p)# Be careful with very large polygons, as they may not be what they seem!# For example, if you wanted a polygon to compute the area equal to about 1/4 of the ellipsoid# this won't work:b <- matrix(c(-180,0,90,90,0,0,-180,0), ncol=2, byrow=TRUE)areaPolygon(b)# Becausee the shortest path between (-180,0) and (0,0) is # over one of the poles, not along the equator!# Inserting a point along the equator fixes thatb <- matrix(c(-180,0,0,0,-90,0,-180,0), ncol=2, byrow=TRUE)areaPolygon(b)