Computes map projection factors (distortion measures) for a set of geographic coordinates and a given projected CRS. Returns a matrix with one row per input coordinate and one column per factor.

proj_factors(lp, crs)

Arguments

lp

A two-column numeric matrix of geographic coordinates (longitude, latitude) in decimal degrees.

crs

A PROJ CRS definition string for the target projection (e.g. a PROJ string, WKT, or authority code such as "EPSG:3112").

Value

A numeric matrix with nrow(lp) rows and the following columns:

meridional_scale

Meridional scale factor (h)

parallel_scale

Parallel scale factor (k)

areal_scale

Areal scale factor (s)

angular_distortion

Angular distortion (omega), in radians

meridian_parallel_angle

Meridian-parallel angle (theta prime), in radians

meridian_convergence

Meridian convergence (conv), in radians

tissot_semimajor

Tissot semimajor axis (a)

tissot_semiminor

Tissot semiminor axis (b)

dx_dlam

Partial derivative dx/dlambda

dx_dphi

Partial derivative dx/dphi

dy_dlam

Partial derivative dy/dlambda

dy_dphi

Partial derivative dy/dphi

Examples

# Lambert Azimuthal Equal Area
proj_factors(cbind(147, -42), "+proj=laea +lon_0=147 +lat_0=-42 +type=crs")
#>      meridional_scale parallel_scale areal_scale angular_distortion
#> [1,]                1              1           1                  0
#>      meridian_parallel_angle meridian_convergence tissot_semimajor
#> [1,]                1.570796        -2.758959e-16                1
#>      tissot_semiminor   dx_dlam      dx_dphi dy_dlam   dy_dphi
#> [1,]                1 0.7442611 2.752857e-16       0 0.9977883

# Multiple coordinates
pts <- cbind(c(130, 147, 160), c(-20, -42, -35))
proj_factors(pts, "EPSG:3112")
#>      meridional_scale parallel_scale areal_scale angular_distortion
#> [1,]        0.9952283      0.9952283   0.9904794                  0
#> [2,]        1.0236096      1.0236096   1.0477766                  0
#> [3,]        0.9973400      0.9973400   0.9946871                  0
#>      meridian_parallel_angle meridian_convergence tissot_semimajor
#> [1,]                1.570796           0.03182908        0.9952283
#> [2,]                1.570796          -0.10344450        1.0236096
#> [3,]                1.570796          -0.20688900        0.9973400
#>      tissot_semiminor   dx_dlam     dx_dphi     dy_dlam   dy_dphi
#> [1,]        0.9952283 0.9351012 -0.03149682  0.02977346 0.9892269
#> [2,]        1.0236096 0.7577603  0.10546427 -0.07866694 1.0158859
#> [3,]        0.9973400 0.8004328  0.20417250 -0.16800466 0.9727490