Rdistance v4.5.0 on CRAN now

New transect survey-design tools for Rdistance are on CRAN

R
Distance Analysis
Author

Trent McDonald

Published

September 18, 2026

Modified

September 21, 2026

A new version of Rdistance, version 4.5.0, is on CRAN now (published 18-Sep-2026). The headline addition is a new suite of functions for designing random line-transect surveys inside study-area polygons, before you ever go to the field. This post summarizes the changes since v4.4.3 (May 2026).


Functionality Changes

  • Transect Survey Design: Added a family of functions for designing random line-transect surveys inside study-area polygons. drawTransects() is the main entry point. It calls findSpacing() to compute the spacing that yields a target survey length, then makeLines() to place transects with a random start. calcLineLength() converts a target number of detected groups into a target transect length. Both parallel (“rectangular”) and “zigzag” layouts are supported, transects can be drawn across one or several polygons at once, and random replicates can be generated (parameter R). Transects can be returned as one continuous route (combine = TRUE) or as individual legs (combine = FALSE), and the target length can refer to the total route length or on-effort length only (parameter target). Spacing is computed by an optimization routine in the new OSCARS package. See the Designing Line Transect Surveys tutorial for a walk-through.
  • Concave Polygons: Added convexPartition(), which splits a strongly concave polygon into a handful of more-convex pieces using Approximate Convex Decomposition (Lien and Amato 2006). Splitting a bent, arc-, or L-shaped study area before calling drawTransects() improves coverage of “zigzag” transects.
  • OSCARS Optimization: Fitting the non-smooth distance functions (oneStep, triangle, and huber) is now performed by OSCARS::oscars, a true global optimizer. It starts near the likelihood’s maximum and runs up to 10,000 iterations by default (options("Rdistance_oscarEvals")), and usually finds a higher maximum than the previous optimizer. It is also noticeably slower, so estimated run times are now printed to the console during fitting.
  • abundEstim() on an Existing Fit: abundEstim() now accepts a previously fitted abundance object, in addition to a distance function. This lets you fit with ci = NULL first and add (or extend) bootstrap iterations later, without redoing the whole analysis.
  • New Data Sets: Added exampleSurveyPoly (two non-convex Alaska coastal survey strata, used to demonstrate the new survey-design functions), and pronghornDf/pronghornAreas (an aerial line-transect survey of pronghorn in southeast Wyoming, 2012-2019, with associated herd-unit polygons).
  • New Dependencies: Added sf, grDevices, and OSCARS to Imports, required by the new survey-design functions.

Documentation Changes

Many documentation updates throughout, aimed at clarifying the survey-design routines and the optimization changes above.