Changelog
Source:NEWS.md
tissot 0.3.0
New features
tissot()gains amethodargument (default"proj"). The new"proj"method delegates toPROJ::proj_factors(), calling the PROJ C library directly for exact distortion factors rather than approximating them via finite differences. This is more accurate, especially for tabular or piecewise projections (e.g. Robinson). The original finite-difference computation (Snyder 1987), inspired by Bill Huber’s formulation at https://gis.stackexchange.com/a/5075/482, is preserved asmethod = "finitediff". ThePROJpackage is now the sole coordinate transformation dependency;gdalrasterhas been removed.tissot_raster()computes distortion surfaces on a regular projected grid, returning atissot_rasterobject withimage()andplot()methods. Extent is auto-detected from the global lon/lat bounding box (clamped byradius) or supplied explicitly. Supports any metric from [tissot()] output.
Dependency change
-
gdalrasterremoved fromImports. All coordinate transformation now goes throughPROJ::proj_trans()andPROJ::proj_crs_text(). CRS validation (srs_is_geographic) is handled by an internal helper usingPROJ::proj_crs_text().
Bug fixes
- Fixed default
metricsintissot_raster(): names now use underscores ("scale_area","scale_h","scale_k") matching the actualtissot_tblcolumn names (previously used dots, causing silently all-NA output).
tissot 0.2.0
CRAN release: 2026-02-12
Major refactor — modernized engine, new API, and rich plotting.
Breaking changes
Projection engine switched from
reprojtotransform_xy()from gdalraster. All projection work is now a single batched GDAL call.API renamed:
proj.in/proj.out→source/target, following reproj conventions.targetis the second positional argument (required);sourcedefaults to"EPSG:4326".tissot()input is now any “xy-ish” object (matrix, data.frame, list, length-2 vector) via the internalas_xy()helper. The oldlambda/phipositional arguments are replaced byx.tissot()returns atissot_tbl(subclassed tibble) withsourceandtargetstored as attributes. Column names changed to:x,y,dx_dlam,dy_dlam,dx_dphi,dy_dphi,scale_h,scale_k,scale_omega,scale_a,scale_b,scale_area,angle_deformation,convergence.indicatrix()returns anindicatrix_list(replacesindicatrixesclass). Acceptstissot_tblor raw coordinates + explicittarget.Removed:
indicatrix0(),tissot0(),.prj(), and the internalnumericDerivpath. The Jacobian is now computed directly via finite differences.
New features
-
plot.indicatrix()andplot.indicatrix_list()with:- Reference unit circle overlay (
show.circle) - Lambda/phi direction axes (
show.axes) -
show.circleandshow.axesacceptTRUE,FALSE, or a named list of graphical parameters for full customization - Colour-coded fill via
fill.by(e.g."scale_area","angle_deformation")
- Reference unit circle overlay (
tissot_map()andtissot_abline()accept explicittargetargument.as_xy()internal helper coerces diverse coordinate inputs.resolve_gpar()internal helper for the logical-or-list graphical parameter pattern.