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.