Nothing
wkb()
vectors (#196, #204).xy(NA, NA)
is now read as a null feature instead of POINT EMPTY. This
preserves the invariant that null features can also be identified using
is.na()
(#205).xy(NaN, NaN)
is now read as POINT EMPTY and is.na(xy(NaN, NaN))
now returns FALSE
. This means that both EMPTY and null points can roundtrip
through xy()
(#205).wk_meta()
now contains a new column is_empty
, which is TRUE
for any feature that contains at least one non-empty coordinate. This allows
more efficient detection of features with zero coordinates (#197, #199).sfc_writer()
to correctly attach the classes
attribute to
sfc output with mixed geometry types (#195).sfc_writer()
now has an argument promote_multi
to write any
input as the MULTI variant. This makes it more likely that an input vector
will be read as a single geometry type (#198).wk_collection_filter()
now correctly increments the part_id
when
calling the child handler (@brownag, #194).wkb_to_hex()
(@anthonynorth, #183).vctrs::vec_proxy_equal()
for wkb()
vctrs
(@anthonynorth, #183).sfc_writer()
, which had returned NULL for some inputs
(e.g., via wk_collection()
) (@anthonynorth, #182, #186).wk_clockwise()
and wk_counterclockwise()
to re-wind polygon rings
(@anthonynorth, #188).wk_coords<-()
for in-place modification
of coordinates (@mdsumner, #187). wk_trans_explicit()
migrated from crs2crs (@mdsumner, #187).as.data.frame.default()
,
which no longer occurs in r-devel (#166).validate_wk_wkt()
now errors for an object that does not inherit from
'wk_wkt' (#123, #146).wk_crs_projjson()
to get a JSON representation of a CRS object.
To make lookup possible based on shortcut-style CRS objects (e.g.,
"EPSG:4326"
or 4326
), added data objects wk_proj_crs_view
and
wk_proj_crs_json
that contain cached versions of rendered PROJJSON
based on the latest PROJ version (#147).wk_crs_proj_definition()
method for wk_crs_inherit()
(#136,
#147).sfc_writer()
for all wk classes, making
conversions faster and fixing at least one issue with conversion of NA
geometries to sf (#135).wk_plot()
now plots NULL
/NA
geometries and mixed geometry types
more reliably (#142, #143, #149).POINT Z EMPTY
) (#141, #150).wk_polygon()
doubled some points when the input contained
closed rings (#134, #151).wk_count()
exposed uninitialized values for empty input
(#139, #153).xy_writer()
now opportunistically avoids allocating vectors for Z
or M values unless they are actually needed (#131, #154).wk_example()
to access them and set various properties (#155).-Wstrict-prototypes
(#157, #158).wk_chunk_map_feature()
in favour of using chunking strategies
directly (#132, #159).wk_coords()
for xy()
objects (#138, #160).rct_xmin()
, rct_xmax()
,
rct_ymin()
, rct_ymax()
, rct_width()
, rct_height()
, crc_center()
,
crc_x()
, crc_y()
, crc_r()
, xy_x()
, xy_y()
, xy_z()
, and xy_m()
(#144, #161).rct_intersects()
, rct_contains()
,
and rct_intersection()
(#161).wk_affine_rescale()
to apply the translate and scale
operations in the correct order (#94).wk_handle_slice()
and wk_chunk_map_feature()
to support
a chunk + apply workflow when working with large vectors (#101, #107).wk_crs_proj_definition()
generic for foreign CRS objects
(#110, #112).wk_crs_longlat()
helper to help promote authority-compliant
CRS choices (#112).wk_is_geodesic()
, wk_set_geodesic()
, and argument geodesic
in wkt()
and wkb()
as a flag for objects whose edges must
be interpolated along a spherical/ellipsoidal trajectory (#112).sf::st_geometry()
and sf::st_sfc()
methods for wk geometry
vectors for better integration with sf (#113, #114).is.na()
and validate_wk_wkb()
when called on a very long wkb()
vector (#117).validate_wk_wkb()
and validate_wk_wkt()
, which failed
for most valid objects (#119).wk_envelope()
and wk_envelope_handler()
to compute feature-wise
bounding boxes (#120, #122).as_xy()
for nested data frames and geodesic objects (#126, #128).wkb_problems()
, wkt_problems()
, wkb_format()
,
and wkt_format()
(#129).wk_plot()
is now an S3 generic (#130).crc()
objects are now correctly exported as polygons
with a closed loop (#66, #70).wk_vertices()
and wk_coords()
to extract individual
coordinate values from geometries with optional identifying
information. For advanced users, the wk_vertex_filter()
can be used as part of a pipeline to export coordinates
as point geometries to another handler (#69, #71).wk_flatten()
to extract geometries from collections.
For advanced users, the wk_flatten_filter()
can be used as
part of a pipeline (#75, #78).options("max.print")
is now respected by all vector classes
(#72, #74).wk_polygon()
, wk_linestring()
, and wk_collection()
to construct polygons, lines, and collections. For advanced
users, wk_polygon_filter()
, wk_linestring_filter()
, and
wk_collection_filter()
can be used as part of a pipeline
(#77, #84).wk_trans_affine()
and wk_trans_set()
transforms are
also built using this feature. These are run using the
new wk_transform()
function and power the new
wk_set_z()
, wk_set_m()
, wk_drop_z()
, wk_drop_m()
,
functions (#87, #88, #89).wksxp()
in favour of improved sf::st_sfc()
support
(#21).attr(, "crs")
, and check
that operations that involve more than one vector have
compatable CRS objects as determined by wk_crs_equal()
.wk_handle()
, wk_translate()
,
and wk_writer()
(#37).sf::st_sfc()
objects
and implemented R-level generics for sfc, sfg, sf, and bbox
objects (#28, #29, #38, #45).crc()
vector class to represent circles (#40).wk_bbox()
) (#42).wk_meta()
, wk_vector_meta()
, and wk_count()
to
inspect properties of vectors (#53).wkutils::plot.wk_wksxp()
, which
no longer exists.xy()
, xyz()
, xym()
and xyzm()
classes
to efficiently store point geometries.rct()
vector class to efficiently store
two-dimensional rectangles.wkt()
, wkb()
and wksxp()
.NEWS.md
file to track changes to the package.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.