wk 0.9.4
- Ensure package tests pass against sf 1.0-18 (#224, #225).
wk 0.9.3
- Ensure package compiles with STRICT_R_HEADERS=1(#222).
wk 0.9.2
- Add wk_crs()andwk_set_crs()methods forbbox(#213)
- Fix wk_trans inconsistent meta flags handling (#217)
- Ensure package builds on arm64 for Windows (#220)
wk 0.9.1
- Fix format strings/arguments for R-devel (#209).
wk 0.9.0
Breaking changes
- The common well-known binary representation of POINT EMPTY (i.e.,
POINT (nan nan)) is now handled as POINT EMPTY allowing empty points to
roundtrip through 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).
Bugfixes and improvements
- wk_meta()now contains a new column- is_empty, which is- TRUEfor any feature that
contains at least one non-empty coordinate. This allows more efficient
detection of features with zero coordinates (#197, #199).
- Updated PROJ data to use the latest pull of the database packaged
with PROJ 9.3.0 (#201).
- The wk package now compiles once again on gcc 4.8 (#203, #206).
- Fixed sfc_writer()to correctly attach theclassesattribute to sfc output with mixed geometry types
(#195).
- Function sfc_writer()now has an argumentpromote_multito 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).
- The wk_collection_filter()now correctly increments thepart_idwhen calling the child handler (@brownag, #194).
wk 0.8.0
- Added wkb_to_hex()(@anthonynorth, #183).
- Implemented vctrs::vec_proxy_equal()forwkb()vctrs (@anthonynorth, #183).
- Fixed sfc_writer(), which had returned NULL for some
inputs (e.g., viawk_collection()) (@anthonynorth, #182, #186).
- Added wk_clockwise()andwk_counterclockwise()to re-wind polygon rings (@anthonynorth,
#188).
- New replacement-function mode for wk_coords<-()for
in-place modification of coordinates (@mdsumner, #187).
- New function wk_trans_explicit()migrated from crs2crs
(@mdsumner,
#187).
wk 0.7.3
- Fix tests for updated waldo package (#178).
wk 0.7.2
- Fix use-after-free warnings.
wk 0.7.1
- Fix implicit reliance on error as.data.frame.default(),
which no longer occurs in r-devel (#166).
wk 0.7.0
- Remove legacy headers that are no longer used by any downstream
package (#146).
- validate_wk_wkt()now errors for an object that does
not inherit from ‘wk_wkt’ (#123, #146).
- Added 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"or4326), added
data objectswk_proj_crs_viewandwk_proj_crs_jsonthat contain cached versions of rendered
PROJJSON based on the latest PROJ version (#147).
- Added a wk_crs_proj_definition()method forwk_crs_inherit()(#136, #147).
- Conversion to sf now uses the 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/- NAgeometries and mixed geometry types more reliably (#142, #143,
#149).
- Exported EMPTY geometries to well-known text now include dimension
(e.g., POINT Z EMPTY) (#141, #150).
- Fixed bug where wk_polygon()doubled some points when
the input contained closed rings (#134, #151).
- Fixed bug where wk_count()exposed uninitialized values
for empty input (#139, #153).
- The xy_writer()now opportunistically avoids allocating
vectors for Z or M values unless they are actually needed (#131,
#154).
- Added example WKT for all geometry types and dimensions plus helper
wk_example()to access them and set various properties
(#155).
- Fixes warnings when compiling with -Wstrict-prototypes(#157, #158).
- Removed wk_chunk_map_feature()in favour of using
chunking strategies directly (#132, #159).
- Optimized wk_coords()forxy()objects
(#138, #160).
- Added accessor methods for record-style vectors:
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(), andxy_m()(#144, #161).
- Added rectangle operators rct_intersects(),rct_contains(), andrct_intersection()(#161).
wk 0.6.0
- Fixed wk_affine_rescale()to apply the translate and
scale operations in the correct order (#94).
- Add wk_handle_slice()andwk_chunk_map_feature()to support a chunk + apply workflow
when working with large vectors (#101, #107).
- C and R code was rewritten to avoid materializing ALTREP vectors
(#103, #109).
- Added a wk_crs_proj_definition()generic for foreign
CRS objects (#110, #112).
- Added wk_crs_longlat()helper to help promote
authority-compliant CRS choices (#112).
- Added wk_is_geodesic(),wk_set_geodesic(),
and argumentgeodesicinwkt()andwkb()as a flag for objects whose edges must be
interpolated along a spherical/ellipsoidal trajectory (#112).
- Added sf::st_geometry()andsf::st_sfc()methods for wk geometry vectors for better integration with sf (#113,
#114).
- Refactored well-known text parser to be more reusable and faster
(#115, #104).
- Minor performance enhancement for is.na()andvalidate_wk_wkb()when called on a very longwkb()vector (#117).
- Fixed issue with validate_wk_wkb()andvalidate_wk_wkt(), which failed for most valid objects
(#119).
- Added wk_envelope()andwk_envelope_handler()to compute feature-wise bounding
boxes (#120, #122).
- Fixed headers and tests to pass on big endian systems (#105,
#122).
- Incorporated the geodesic attribute into vctrs methods, data frame
columns, and bbox/envelope calculation (#124, #125).
- Fix as_xy()for nested data frames and geodesic objects
(#126, #128).
- Remove deprecated wkb_problems(),wkt_problems(),wkb_format(), andwkt_format()(#129).
- wk_plot()is now an S3 generic (#130).
wk 0.5.0
- Fixed bugs relating to the behaviour of wk classes as vectors (#64,
#65, #67, #70).
- crc()objects are now correctly exported as polygons
with a closed loop (#66, #70).
- Added wk_vertices()andwk_coords()to
extract individual coordinate values from geometries with optional
identifying information. For advanced users, thewk_vertex_filter()can be used as part of a pipeline to
export coordinates as point geometries to another handler (#69,
#71).
- Added wk_flatten()to extract geometries from
collections. For advanced users, thewk_flatten_filter()can be used as part of a pipeline (#75, #78).
- options("max.print")is now respected by all vector
classes (#72, #74).
- Moved implementation of plot methods from wkutils to wk to simplify
the dependency structure of both packages (#80, #76).
- Added wk_polygon(),wk_linestring(), andwk_collection()to construct polygons, lines, and
collections. For advanced users,wk_polygon_filter(),wk_linestring_filter(), andwk_collection_filter()can be used as part of a pipeline
(#77, #84).
- Added a C-level transform struct that can be used to simplify the
the common pattern of transforming coordinates. These structs can be
created by other packages; however, the wk_trans_affine()andwk_trans_set()transforms are also built using this
feature. These are run using the newwk_transform()function and power the newwk_set_z(),wk_set_m(),wk_drop_z(),wk_drop_m(), functions (#87, #88, #89).
wk 0.4.1
- Fix LTO and MacOS 3.6.2 check errors (#61).
wk 0.4.0
- Removed wksxp()in favour of improvedsf::st_sfc()support (#21).
- Rewrite existing readers, writers, and handlers, using a new C API
(#13).
- Use new C API in favour of header-only approach for all wk functions
(#19, #22).
- Use cpp11 to manage safe use of callables that may longjmp from
C++.
- Vector classes now propagate attr(, "crs"), and check
that operations that involve more than one vector have compatable CRS
objects as determined bywk_crs_equal().
- Added an R-level framework for other packages to implement wk
readers and handlers: wk_handle(),wk_translate(), andwk_writer()(#37).
- Added a native reader and writer for sf::st_sfc()objects and implemented R-level generics for sfc, sfg, sf, and bbox
objects (#28, #29, #38, #45).
- Implement crc()vector class to represent circles
(#40).
- Added a 2D cartesian bounding box handler (wk_bbox())
(#42).
- Refactored unit tests reflecting use of the new API and for improved
test coverage (#44, #45, #46).
- Added wk_meta(),wk_vector_meta(), andwk_count()to inspect properties of vectors (#53).
- Modified all internal handlers such that they work with vectors of
unknown length (#54).
wk 0.3.4
- Fixed reference to wkutils::plot.wk_wksxp(), which no
longer exists.
wk 0.3.3
- Fixed WKB import of ZM geometries that do not use EWKB.
- Added xy(),xyz(),xym()andxyzm()classes to efficiently store point geometries.
- Added the rct()vector class to efficiently store
two-dimensional rectangles.
- Fixed the CRAN check failure caused by a circular dependency with
the wkutils package.
- Added S3 methods to coerce sf objects to and from
wkt(),wkb()andwksxp().
wk 0.3.2
- Fixed EWKB output for collections and multi-geometries that included
SRID (#3).
- Fixed CRAN check errors related to exception handling on MacOS/R
3.6.2.
wk 0.3.1
- Added a NEWS.mdfile to track changes to the
package.