Nothing
CRAN resubmission. No user-visible changes to package functionality.
calculate_geometric_attributes() is now
wrapped in \donttest{} instead of \dontrun{}, and operates on two
features so that the cluster code path is genuinely exercised.parallel::detectCores().Accuracy improvements for geodesic workflows. Values of reock,
elongation_rectangle and maxlength may change for lon/lat input,
especially at high latitudes:
reock) and minimum bounding rectangle
(elongation_rectangle) are now computed in a local Lambert azimuthal
equal-area projection centred on each feature, instead of in raw lon/lat
degrees. GEOS hull constructions are planar, so minimizing in degree space
distorted the "minimum" geometry wherever a degree of longitude is shorter
than a degree of latitude. The hull is measured back in the input's CRS.maxlength (and the distance/bearing outputs of get_distant_points())
are now found by evaluating all convex-hull vertex pairs geodesically in
a single vectorised terra::distance() call. The previous rotating-calipers
candidate search operated in planar coordinate space and could miss the true
geodesic maximum. The internal rotating-calipers helper was removed.Performance and packaging:
calculate_geometric_attributes() gains a vectorised fast path when only
area, perimeter, decimallongitude and/or decimallatitude are
requested: terra's multi-feature methods are called once instead of looping
per feature.by_feature branches of calc_extent(), calc_elongation() and
get_distant_points() no longer compute (and discard) the convex hull of
the entire input set.NAMESPACE now uses targeted importFrom() declarations instead of
blanket import(terra) / import(methods); the two previously unqualified
subset() / aggregate() calls are now terra::-qualified.Breaking changes to documented metric contracts:
bearing is now documented as an axial orientation in [-90, 90] degrees:
the maximum-length line is always oriented from its southernmost to its
northernmost endpoint, so values outside that range were unreachable.
0 = north-south axis, -90/90 = east-west axis. Computed values are unchanged.northerness = cos(bearing) is now documented to range in [0, 1]; negative
values were unreachable.fractaldimension now follows the FRAGSTATS convention
2 * log(0.25 * P) / log(A) (McGarigal & Marks 1995, doi:10.2737/PNW-GTR-351).
Values change relative to the previous 2 * log(P) / log(A), which could
fall outside [1, 2] for small polygons.hole_area_pct now uses the gross area (including holes) as denominator,
matching its documentation. Values change relative to the previous
net-area denominator.decimallongitude / decimallatitude are now always in decimal degrees:
the centroid is reprojected to EPSG:4326 when the input CRS is projected.
Previously, method = "cosine" on a projected CRS returned metres under
these column names.Other fixes and improvements:
method = "cosine" as "for planar CRS".
geo, haversine and cosine are all lon/lat great-circle methods in
terra::distance(); on a projected CRS the argument is ignored and
distances are Cartesian.calc_elongation() computes rectangle side lengths explicitly from the
unique corners in ring order, instead of relying on undocumented ordering of
terra::crds() output, and returns Inf for degenerate (zero-width)
rectangles instead of failing or dividing by zero.transform argument passed to terra::expanse(); area is
geodesic on lon/lat input and Cartesian on projected input.num_holes is counted from the hole column of terra::geom() instead of
length() on the fillHoles() result; num_polygons uses nrow()."subscript out of bounds" error in
calc_extent(direction = <single>, output = "polygon", by_feature = TRUE).parallel in Imports (used by calculate_geometric_attributes()).inst/CITATION now uses the installed package version instead of a
hardcoded one.Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.