s2_geography vectors. This not only
allows data containing s2 geography to be safely saved and restored across
R sessions, but also enables using s2 in parallel algorithms such as
mclapply() (#283)S2_FORCE_BUNDLED_ABSEIL in conifigure: if non-empty, any system
install of Abseil is ignored (e.g., if using a non-standard compiler on a
system where system Abseil is available via pkg-config) (#275)-Wpedantic (#275).cmake to SystemReqirements. Even though this is technically optional
(system Abseil can be used), adding to requirements helps some installers
automatically install the dependency (#277).s2_buffer_cells() recycles max_dist and min_level arguments, allowing
to specify these by feature (#264 and
https://github.com/r-spatial/sf/issues/2488).as.data.frame() for s2_cell() to comply with new wk
version and the latest release of R (#207).#include <cstdint> to an Abseil header to fix compilation with
gcc13 (#209, #210).s2_convex_hull() and s2_convex_hull_agg() (@spiry34, #150,
#151, #163).max_distance argument to s2_closest_edges(), making
distance-constrained k-nearest neighbours possible (#125, #156, #162).s2_point_on_surface() implementation for polygons
(@kylebutts, #152, #161)s2_cell_union() vector class to represent cell coverings and
operators to generate them from an s2 geography vector (e.g.,
s2_covering_cell_ids()). Cell unions are useful as compact representations
of spherical geometry and can be used like a bounding box to determine
a possible intersection with one or more geographies (#85, #94, #164).s2_union_agg() more efficient using a recursive merge strategy
(#103, #165).-O0 (#167, #172).s2_prepared_dwithin() and fixed s2_dwithin_matrix() such that it
efficiently uses the index (#157, #174).s2_lnglat() and s2_point() to use wk::xy() (a record-style
vctr) to represent point coordinates. This is much faster than the previous
representation which relied on list() of external pointers (#181, #159).planar and tessellate_tol_m to s2_as_text(),
s2_as_binary(). Use planar = TRUE and set tessellate_tol_m to the
maximum error for your use-case to automatically subdivide edges to
preserve or "straight" lines in Plate carree projection on import (#182).planar and tessellate_tol_m to s2_geog_from_text(), and
s2_geog_from_wkb(). Use planar = TRUE and set tessellate_tol_m to the
maximum error for your use-case to automatically subdivide edges to
ensure or "straight" lines in Plate carree projection on export (#182).STRICT_R_HEADERS (@eddelbuettel, #118).s2_centroid_agg() did not
behave like a normal point in distance calculations (#119, #121).s2_projection_filter() and s2_unprojection_filter() to
expose the S2 edge tessellator, which can be used to make Cartesian
or great circle assumptions of line segments explicit by adding
points where necessary (#115).s2_cell() vector class to expose a subset of the S2
indexing system to R users (#85, #114).s2_closest_edges() to make k-nearest neighbours calculation
possible on the sphere (#111, #112).s2_interpolate(), s2_interpolate_normalized(),
s2_project(), and s2_project_normalized() to provide linear
referencing support on the sphere (#96, #110).dimensions to s2_options() to constrain the
output dimensions of a boolean or rebuild operation (#105, #104, #110).s2_is_valid() and s2_is_valid_detail() to help find invalid
spherical geometries when importing data into S2 (#100).s2_union() can now handle MULTIPOLYGON
geometries with overlapping rings in addition to other invalid
polygons. s2_union() can now sanitize
almost any input to be valid spherical geometry with
minimal modification (#100, #99).s2_union_agg() to
s2_coverage_union_agg() to make clear that the function only
works when the individual geometries do not have overlapping
interiors. s2_union_agg() was replaced with a
true aggregate union that can handle unions of most geometries
(#100, #97).s2_rebuild_agg() to match s2_union_agg(). Like
s2_rebuild(), s2_rebuild_agg() collects the edges in the input
and builds them into a feature, optionally snapping or simplifying
vertices in the process (#100).s2_options(), which now uses strings
rather than numeric codes to specify boolean operation options, geography
construction options, and builder options (#70).s2_rebuild() and s2_simplify(), which wrap the S2 C++ S2Builder
class to provide simplification and fixing of invalid geographies (#70).s2_latlng() to s2_lnglat() to keep axis order consistent
throughout the package (#69).s2_bounds_cap() and s2_bounds_rect() to compute bounding areas
using geographic coordinates (@edzer, #63).s2_*_matrix() predicates now efficiently use indexing to compute the
results of many predicate comparisons (#61).This version is a complete rewrite of the former s2 CRAN package, entirely backwards incompatible with previous versions.