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.