• First CRAN submission.

  • Commit to rename of kissfft.hh to kissfft.h.

New features

Nearest neighbor search

  • geodesic_nn() - Find k nearest neighbors using geodesic distances on the WGS84 ellipsoid. Uses a vantage-point tree for efficient searching.
  • geodesic_nn_radius() - Find all neighbors within a specified radius (meters)

Both functions build an optimized spatial index for fast repeated queries.

Bug fixes

  • Fixed geocoords_to_mgrs() and geocoords_to_utm() which were producing garbled output. These functions have been removed as they duplicated mgrs_fwd() and utm_fwd() functionality. Use those functions instead.

Documentation

New features

Geodesic intersections

All functions return the displacement along each geodesic, a coincidence indicator, and the latitude/longitude of the intersection point.

Documentation

New features

DMS (Degrees, Minutes, Seconds) conversion

Documentation

New features

  • geocoords_parse() - Parse coordinate strings in various formats (MGRS, UTM, DMS)
  • geocoords_to_mgrs() - Convert lat/lon to MGRS strings
  • geocoords_to_utm() - Convert lat/lon to UTM strings

New features

  • albers_fwd() and albers_rev() - Albers Equal Area conic projection
    • Supports single or two standard parallels
    • Vectorized on lon0 parameter
    • Ideal for thematic maps requiring area preservation
  • polarstereo_fwd() and polarstereo_rev() - Polar Stereographic projection
    • Configurable scale factor (default k0 = 0.994 for UPS)
    • Supports both north and south polar regions
    • northp parameter is vectorized

New features

  • tm_fwd() and tm_rev() - Transverse Mercator projection with user-defined central meridian and scale factor (series approximation, fast, ~5nm accuracy)
  • tm_exact_fwd() and tm_exact_rev() - Transverse Mercator with exact formulation (slower but accurate everywhere)
  • All TM functions are vectorized on lon0 parameter

Improvements

  • azeq_fwd() and azeq_rev() are now fully vectorized on lon0 and lat0 parameters, allowing different projection centers for each point. Output now includes lon0 and lat0 columns to track which center was used.

New vignettes

New features

Fast geodesic calculations (series approximation)

Local Cartesian (ENU) coordinates

Cassini-Soldner projection

  • cassini_fwd() - Convert geographic to Cassini-Soldner projection
  • cassini_rev() - Convert back to geographic
  • Historical projection used for large-scale topographic mapping

Gnomonic projection

  • gnomonic_fwd() - Convert geographic to gnomonic projection
  • gnomonic_rev() - Convert back to geographic
  • Geodesics appear as straight lines - useful for great circle route planning

OSGB - Ordnance Survey National Grid (Great Britain)

  • osgb_fwd() - Convert WGS84 to OSGB grid coordinates
  • osgb_rev() - Convert OSGB grid to WGS84
  • osgb_gridref() - Convert to alphanumeric grid reference strings
  • osgb_gridref_rev() - Parse grid reference strings
  • Includes automatic WGS84/OSGB36 datum transformation

Geocentric (ECEF) coordinates

WGS84 Ellipsoid parameters

Azimuthal Equidistant projection

  • azeq_fwd() - Convert geographic to azimuthal equidistant projection
  • azeq_rev() - Convert azimuthal equidistant to geographic coordinates

GARS (Global Area Reference System)

  • gars_fwd() - Convert geographic coordinates to GARS codes
  • gars_rev() - Convert GARS codes to geographic coordinates

Georef (World Geographic Reference System)

  • georef_fwd() - Convert geographic coordinates to Georef codes
  • georef_rev() - Convert Georef codes to geographic coordinates

Rhumb line (loxodrome) calculations

  • rhumb_direct() - Solve the direct rhumb problem (find destination given start, azimuth, distance)
  • rhumb_inverse() - Solve the inverse rhumb problem (find distance and azimuth between two points)
  • rhumb_path() - Generate points along a rhumb line between two points
  • rhumb_line() - Generate points at specified distances along a rhumb line
  • rhumb_distance() - Compute pairwise rhumb distances
  • rhumb_distance_matrix() - Compute rhumb distance matrix between sets of points

Lambert Conformal Conic projection

  • lcc_fwd() - Convert geographic coordinates to LCC projected coordinates
  • lcc_rev() - Convert LCC coordinates back to geographic
  • Supports both single standard parallel (tangent cone) and two standard parallels (secant cone)
  • Returns convergence angle and scale factor

Geohash support

Geodesic calculations (GeodesicExact)

Polygon area

UTM/UPS conversions

  • utmups_fwd() - Convert geographic coordinates to UTM/UPS with full metadata
  • utmups_rev() - Convert UTM/UPS coordinates back to geographic

MGRS enhancements

  • mgrs_rev() now returns 12 columns including:
    • Convergence angle and scale factor
    • Grid zone designator and 100km square ID
    • Precision level decoded from MGRS string
    • EPSG CRS codes for direct use with spatial packages

Internal changes

  • All functions now use cpp11 interface (replacing Rcpp-style SEXP code)
  • Full vectorization on all coordinate inputs
  • Consistent data frame output with rich metadata
  • Initial release with basic MGRS support
  • mgrs_fwd() - Convert coordinates to MGRS
  • mgrs_rev() - Convert MGRS to coordinates