Convert geographic coordinates to/from Albers Equal Area conic projection. This is an equal-area projection commonly used for thematic maps of regions with greater east-west extent.

albers_fwd(
  x,
  lon0,
  stdlat = NULL,
  stdlat1 = NULL,
  stdlat2 = NULL,
  k0 = 1,
  k1 = 1
)

albers_rev(
  x,
  y,
  lon0,
  stdlat = NULL,
  stdlat1 = NULL,
  stdlat2 = NULL,
  k0 = 1,
  k1 = 1
)

Arguments

x

For forward conversion: a two-column matrix or data frame of coordinates (longitude, latitude) in decimal degrees. For reverse conversion: numeric vector of x (easting) coordinates in meters.

lon0

Central meridian in decimal degrees. Can be a vector to specify different central meridians for each point.

stdlat

Standard parallel for single standard parallel projections (e.g., Lambert Cylindrical Equal Area when stdlat = 0).

stdlat1, stdlat2

First and second standard parallels in decimal degrees for two standard parallel projections.

k0

Scale factor at the standard parallel(s). Default is 1.

k1

Scale factor at the first standard parallel for two standard parallel projections. Default is 1.

y

Numeric vector of y (northing) coordinates in meters (reverse only).

Value

Data frame with columns:

  • For forward conversion:

    • x: Easting in meters

    • y: Northing in meters

    • convergence: Grid convergence in degrees

    • scale: Scale factor at the point

    • lon, lat: Input coordinates (echoed)

    • lon0: Central meridian (echoed)

  • For reverse conversion:

    • lon: Longitude in decimal degrees

    • lat: Latitude in decimal degrees

    • convergence: Grid convergence in degrees

    • scale: Scale factor at the point

    • x, y: Input coordinates (echoed)

    • lon0: Central meridian (echoed)

Details

The Albers Equal Area conic projection preserves area, making it ideal for:

  • Thematic/choropleth maps where area comparison matters

  • Continental-scale maps (e.g., USGS maps of CONUS)

  • Statistical mapping and analysis

Common configurations:

  • CONUS: stdlat1 = 29.5, stdlat2 = 45.5, lon0 = -96

  • Australia: stdlat1 = -18, stdlat2 = -36, lon0 = 132

  • Europe: stdlat1 = 43, stdlat2 = 62, lon0 = 10

Special cases:

  • When stdlat1 = -stdlat2, the projection becomes Lambert Cylindrical Equal Area

  • When stdlat1 = stdlat2 = 0, it becomes the cylindrical equal-area projection

The lon0 parameter is vectorized, allowing different central meridians for each point.

See also

lcc_fwd() for Lambert Conformal Conic (conformal, not equal-area).

Examples

# CONUS Albers Equal Area
pts <- cbind(lon = c(-122, -74, -90), lat = c(37, 41, 30))
albers_fwd(pts, lon0 = -96, stdlat1 = 29.5, stdlat2 = 45.5)
#>            x         y convergence     scale  lon lat lon0
#> 1 -2263686.4  206874.8  -15.675472 0.9904383 -122  37  -96
#> 2  1819414.0  555045.1   13.263861 0.9917843  -74  41  -96
#> 3   577912.5 -867862.5    3.617417 0.9989271  -90  30  -96

# Australia
aus <- cbind(lon = c(151.2, 115.9, 153.0), lat = c(-33.9, -32.0, -27.5))
albers_fwd(aus, lon0 = 132, stdlat1 = -18, stdlat2 = -36)
#>          x       y convergence    scale   lon   lat lon0
#> 1  2758357 5731265   -8.610797 1.559111 151.2 -33.9  132
#> 2 -2298350 5656779    7.220512 1.514747 115.9 -32.0  132
#> 3  2936616 5219722   -9.418059 1.421592 153.0 -27.5  132

# Antarctic projection
ant <- cbind(lon = c(166.67, 77.97, -43.53), lat = c(-77.85, -67.60, -60.72))
albers_fwd(ant, lon0 = 0, stdlat1 = -72, stdlat2 = -60)
#>          x         y convergence    scale    lon    lat lon0
#> 1  6362785 -14451441  -151.42898 8.975620 166.67 -77.85    0
#> 2 12396653   1540037   -70.84009 4.891702  77.97 -67.60    0
#> 3 -8241491   7212962    39.54943 3.760209 -43.53 -60.72    0

# Round-trip conversion
fwd <- albers_fwd(pts, lon0 = -96, stdlat1 = 29.5, stdlat2 = 45.5)
albers_rev(fwd$x, fwd$y, lon0 = -96, stdlat1 = 29.5, stdlat2 = 45.5)
#>    lon lat convergence     scale          x         y lon0
#> 1 -122  37  -15.675472 0.9904383 -2263686.4  206874.8  -96
#> 2  -74  41   13.263861 0.9917843  1819414.0  555045.1  -96
#> 3  -90  30    3.617417 0.9989271   577912.5 -867862.5  -96

# Single standard parallel (cylindrical-like)
albers_fwd(pts, lon0 = -96, stdlat = 37)
#>            x         y convergence    scale  lon lat lon0
#> 1 -2285643.4  314053.2   -15.64719 1.000000 -122  37  -96
#> 2  1839257.8  657147.1    13.23993 1.002569  -74  41  -96
#> 3   582500.9 -756236.7     3.61089 1.006856  -90  30  -96