cassini_fwd: Cassini-Soldner projection

View source: R/cassini.R

cassini_fwdR Documentation

Cassini-Soldner projection

Description

Convert between geographic coordinates and the Cassini-Soldner projection. This is a transverse cylindrical equidistant projection historically used for large-scale mapping.

Usage

cassini_fwd(x, lon0, lat0)

cassini_rev(x, y, lon0, lat0)

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

Longitude of the central meridian in decimal degrees.

lat0

Latitude of the origin in decimal degrees.

y

Numeric vector of y (northing) coordinates in meters.

Details

The Cassini-Soldner projection was historically used for large-scale topographic mapping before UTM became standard. It is still used in some countries and for historical map analysis.

Key properties:

  • Distances along the central meridian are preserved

  • Transverse cylindrical equidistant projection

  • Not conformal (angles are not preserved)

Value

Data frame with columns:

  • For forward conversion:

    • x: Easting in meters

    • y: Northing in meters

    • azi: Azimuth of the geodesic from the central point (degrees)

    • rk: Reciprocal of the azimuthal scale

    • lon, lat: Input coordinates (echoed)

  • For reverse conversion:

    • lon: Longitude in decimal degrees

    • lat: Latitude in decimal degrees

    • azi: Azimuth of the geodesic from the central point (degrees)

    • rk: Reciprocal of the azimuthal scale

    • x, y: Input coordinates (echoed)

See Also

utmups_fwd() for UTM projection, lcc_fwd() for Lambert Conformal Conic

Examples

# Project relative to a central meridian
pts <- cbind(lon = c(-100, -99, -101), lat = c(40, 41, 39))
cassini_fwd(pts, lon0 = -100, lat0 = 40)

# Round-trip
fwd <- cassini_fwd(pts, lon0 = -100, lat0 = 40)
cassini_rev(fwd$x, fwd$y, lon0 = -100, lat0 = 40)

geographiclib documentation built on March 4, 2026, 9:07 a.m.