Skip to content

duckspatial 1.0.0

Choose a tag to compare

@Cidree Cidree released this 30 Mar 18:43

MAJOR CHANGES

  • duckspatial_df becomes the main class of duckspatial. It represents a lazy, table-like object whose data is not loaded into memory until explicitly materialized (with ddbs_collect() or st_as_sf()). Every function now accepts this class as input, and it's the returned class by default. If the user wants to materialize the result in the same way sf would do, that can be done with mode = "sf" (#55, #63).

  • ddbs_buffer(): now has four new arguments: num_triangles, cap_style, join_style, and mitre_limit (#72).

  • ddbs_union(): is split into two new functions depending on the desired behavior: ddbs_union() and ddbs_union_agg() (#77).

  • ddbs_length(), ddbs_area() and ddbs_distance(): now use by default the best DuckDB function (e.g. ST_Area() or ST_Area_Spheroid()) depending on the input's CRS. They also return a duckspatial_df object by default rather than a materialized vector. In the case of ddbs_distance(), it returns a tbl_duckdb_connection (#80, #82, #103).

  • ddbs_simplify(): tolerance defaults to 0; gains a new argument preserve_topology specified before conn (#86).

  • ddbs_is_simple(), ddbs_is_valid(), ddbs_area(), ddbs_length(), ddbs_distance(): the new_column argument now defaults to a column name, as we now encourage the users to keep most of the work inside DuckDB, rather than materialize the result. For materializing a vector in R, use mode = "sf". This argument is also moved before conn argument (#83).

  • ddbs_predicate() and colleagues: they gain new arguments: name, mode, overwrite, and quiet. When mode = "duckspatial", they return a lazy tbl backed by DuckDB. When mode = "sf", they return a list/matrix (#105).

NEW FEATURES

  • ddbs_as_points(): converts a table with coordinates into a spatial object (#75).

  • ddbs_geometry_type(): returns the geometry type of an object (#76).

  • ddbs_as_geojson(): converts the geometry to geojson format (#84).

  • ddbs_perimeter(): calculates the perimeter of polygons (#89).

  • New geometry validation/check functions: ddbs_is_empty(), ddbs_is_ring() and ddbs_is_closed() (#91).

  • ddbs_sym_difference(): performs symmetric difference between pairs of geometries (#91).

  • ddbs_force_2d(), ddbs_force_3d(), ddbs_force_4d(): force the geometries to have specfic dimensions (#91).

  • ddbs_has_z() and ddbs_has_m(): check if the geometry has the dimension (#91).

  • ddbs_polygonize(), ddbs_build_area(): generates polygons from lines (#91).

  • ddbs_voronoi(): generates Voronoi diagrams from point geometries (#91).

  • ddbs_endpoint() and ddbs_start_point(): extracts the start/end point of a linestring geometry (#91).

  • ddbs_flip_coordinates(): swaps X and Y coordinates (#91).

  • ddbs_register_vector(), ddbs_write_vector() and ddbs_read_vector() deprecated in favour of ddbs_register_table(), ddbs_write_table() and ddbs_read_table() (#100).

  • ddbs_x() and ddbs_y(): extract the x and y coordinates of points (#108).

  • ddbs_drop_geometry(): drops the geometry column of a duckspatial_df object.

  • ddbs_options(): to set some duckspatial default options.

  • ddbs_join(): dwithin is now implemented for spatial join.

MINOR CHANGES

  • Improve the documentation of the functions (#85).

  • ddbs_buffer(): warns if the input CRS is not a projected CRS, as the distance uses its units.

  • ddbs_quadkey(): can aggregate by field when output is polygon and tilexy (#78).

  • ddbs_crs(): accepts CRS codes and crs objects as inputs. It returns NULL when the input doesn't have a geometry (e.g. a data.frame) (#87).

  • ddbs_create_conn(): now has ... that are paseed to dbConnect() for extra configuration.

BUG FIXES

  • ddbs_length(), ddbs_area() and ddbs_distance() were calculating the wrong measure when the CRS was geographic (#82).

  • ddbs_filter(predicate = "dwithin") and ddbs_is_within_distance were calculating wrong distances for geographic CRS (#88).