Convert between geographic coordinates and the Cassini-Soldner projection. This is a transverse cylindrical equidistant projection historically used for large-scale mapping.
cassini_fwd(x, lon0, lat0)
cassini_rev(x, y, lon0, lat0)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.
Longitude of the central meridian in decimal degrees.
Latitude of the origin in decimal degrees.
Numeric vector of y (northing) coordinates in meters.
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)
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)
utmups_fwd() for UTM projection, lcc_fwd() for Lambert
Conformal Conic
# 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)
#> x y azi rk lon lat
#> 1 0.00 7.069289e-10 90.00000 1.0000000 -100 40
#> 2 84133.35 1.115260e+05 90.65610 0.9999129 -99 41
#> 3 -86624.66 -1.105493e+05 89.37064 0.9999076 -101 39
# Round-trip
fwd <- cassini_fwd(pts, lon0 = -100, lat0 = 40)
cassini_rev(fwd$x, fwd$y, lon0 = -100, lat0 = 40)
#> lon lat azi rk x y
#> 1 -100 40 90.00000 1.0000000 0.00 7.069289e-10
#> 2 -99 41 90.65610 0.9999129 84133.35 1.115260e+05
#> 3 -101 39 89.37064 0.9999076 -86624.66 -1.105493e+05