Skip to content

Releases: paleolimbot/wk

wk 0.9.2

09 Jul 06:02
Compare
Choose a tag to compare
  • Add wk_crs() and wk_set_crs() methods for bbox (#213)
  • Fix wk_trans inconsistent meta flags handling (#217)
  • Ensure package builds on arm64 for Windows (#220)

wk 0.9.1

29 Nov 17:59
Compare
Choose a tag to compare
  • Fix format strings/arguments for R-devel (#209).

wk 0.9.0

22 Oct 12:15
Compare
Choose a tag to compare

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 TRUE
    for 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 the classes attribute to
    sfc output with mixed geometry types (#195).
  • Function 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).
  • The wk_collection_filter() now correctly increments the part_id when
    calling the child handler (@brownag, #194).

wk 0.8.0

25 Aug 12:07
Compare
Choose a tag to compare
  • Added wkb_to_hex() (@anthonynorth, #183).
  • Implemented vctrs::vec_proxy_equal() for wkb() vctrs
    (@anthonynorth, #183).
  • Fixed sfc_writer(), which had returned NULL for some inputs
    (e.g., via wk_collection()) (@anthonynorth, #182, #186).
  • Added wk_clockwise() and wk_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

07 May 15:21
Compare
Choose a tag to compare
  • Fix tests for updated waldo package (#178).

wk 0.7.2

06 May 01:46
Compare
Choose a tag to compare
  • Fix use-after-free warnings.

wk 0.7.1

09 Dec 19:59
Compare
Choose a tag to compare
  • Fix implicit reliance on error as.data.frame.default(),
    which no longer occurs in r-devel (#166).

wk 0.7.0

13 Oct 10:36
Compare
Choose a tag to compare
  • 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" 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).
  • Added a wk_crs_proj_definition() method for wk_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/NA geometries 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() for xy() 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(), and xy_m()
    (#144, #161).
  • Added rectangle operators rct_intersects(), rct_contains(),
    and rct_intersection() (#161).

wk 0.6.0

05 Jan 01:15
Compare
Choose a tag to compare
  • Fixed wk_affine_rescale() to apply the translate and scale
    operations in the correct order (#94).
  • Add wk_handle_slice() and wk_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 argument geodesic
    in wkt() and wkb() as a flag for objects whose edges must
    be interpolated along a spherical/ellipsoidal trajectory (#112).
  • Added sf::st_geometry() and sf::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() and validate_wk_wkb()
    when called on a very long wkb() vector (#117).
  • Fixed issue with validate_wk_wkb() and validate_wk_wkt(), which failed
    for most valid objects (#119).
  • Added wk_envelope() and wk_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(),
    and wkt_format() (#129).
  • wk_plot() is now an S3 generic (#130).

wk 0.5.0

13 Jul 23:44
Compare
Choose a tag to compare
  • 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() 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).
  • Added 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).
  • Moved implementation of plot methods from wkutils to wk to
    simplify the dependency structure of both packages (#80, #76).
  • Added 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).
  • 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() 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).