Sfnetworks Versions Save

Tidy Geospatial Networks in R

v0.6.3

1 year ago

Bug fixes

  • Argument names of sfnetwork S3 methods for sf::st_geometry(), sf::st_bbox(), sf::st_m_range() and sf::st_set_precision() are updated to be consistent with their corresponding generic functions in sf.
  • Arguments active and ... are removed from the sfnetwork S3 method for sf::st_precision() to be consistent with its corresponding generic function in sf.

Refactoring

  • Argument active is removed from the sfnetwork S3 method for sf::st_crs() to be consistent with the above-mentioned change regarding sf::st_precision() (since both CRS and precision can not differ between nodes and edges).

v0.6.2

1 year ago

Bug fixes

  • The to_spatial_contracted() morpher now correctly handles cases for undirected networks in which only loop edges are created after contraction. Refs #237.

Refactoring

  • The to_spatial_contracted() morpher now directly returns the original network when none of the contraction groups contain more than one node.

Other

  • Umbrella packages tidyverse and spatstat are no longer suggested packages. Only individual members of these packages are now suggested packages.
  • Updated unit tests.

v0.6.1

1 year ago

Bug fixes

  • Unit tests in test_join.R now successfully run also on R-devel.

Refactoring

  • Updated plot algorithm to be faster and more efficient. Refs #226.

v0.6.0

1 year ago

New features

  • Updates to to_spatial_smooth() morpher:
    • Argument summarise_attributes added to summarise attribute values of concatenated edges. Refs #120.
    • Argument require_equal added to specify if and which attributes should be checked for equality before removing a pseudo node. Refs #124.
    • Argument protect added to specify nodes that should never be removed, even if they are a pseudo node. Refs #177.
    • Concatenated edges after smoothing are now allowed to cross themselves. Refs #117.
  • Updates to st_network_cost():
    • Duplicated nodes are now accepted in the to argument. Refs #183.
    • Cost matrix output now contains units. Refs #119.
    • Argument direction added to specify if outbound, inbound or all edges should be considered. This replaces the argument mode from igraph::distances(). The default is "out", while before it was "all". For undirected networks this argument is ignored.
  • Edge measure function gained an argument degrees which can be set to TRUE to return angles in degrees instead of radians.
  • By default st_network_paths() now encodes nodes by their name, whenever a name attribute is present in the nodes table. This can be disabled by setting use_names = FALSE. Refs #154.
  • Functions sf::st_precision() and sf::st_set_precision() now have a method for sfnetwork objects, such that coordinate precision can be queried and set. Refs #209.
  • Functions sf::st_intersection() and sf::st_difference() now have a method for sfnetwork objects, such that networks can be spatially clipped. The method for sf::st_crop() now uses the same workflow. These functions do not work yet on edges of undirected networks. Refs #133.
  • Function sf::st_drop_geometry() is now a generic and therefore got an sfnetwork method.
  • Several other sf functions got an sfnetwork method, merely to be consistent in the type of functions we provide a method for. Only those functions that mutate the geometry column of an sf object in such a way that would break the valid spatial network structure are not supported.
  • Methods for sf::st_coordinates(), sf::st_bbox() and sf::st_crs() gained an active argument such that this information can be extracted from any network element without first activating it. Refs #215.

Bug fixes

  • Rd files do not contain code anymore that is incompatible with HTML5. Refs #221.
  • Print methods now return x invisibly. Refs #217.

Refactoring

  • Error messages when edge measure or query functions are applied to a network with active nodes, or when node measure or query functions are applied to a network with active edges, are now more informative. Refs #216.
  • Calculating straight-line distances of edges is now more performant. Refs #180.
  • Edge measure function edge_circuity() does not return units objects anymore, since circuity is unitless.

Community

  • Vignettes updated to showcase new features.
  • Code of conduct updated according to newer template.
  • Contributing guidelines extended with templates for commit messages.
  • Master branch renamed to main, and protected from directed pushes.

v0.5.5

2 years ago
  • Adjusted the code used to check the version of PROJ on attach. In particular, the new approach tests only sf::sf_extSoftVersion()["proj.4"] since sf::sf_extSoftVersion()["PROJ"] might not be defined for sf < 1.0. Refs #198 and #200.
  • Adjusted one of the vignettes following the changes in dplyr 1.0.8. Ref #202. Thanks @romainfrancois.
  • Removed conflicting URL from package documentation spatial_edge_measures

v0.5.4

2 years ago

Changelog

  • A startup message is included to urge users of PROJ <= 6 to recreate the CRS for the Roxel dataset. Refs #190 and fixed with #193
  • Example using GraphML in vignette 1 has been removed provisionally to address #194

v0.5.3

2 years ago

Changelog

  • Addition of the n_active and n_inactive arguments to the print method of an sfnetwork object. The arguments define how many rows are printed for respectively the active and inactive network element. The values of these arguments can also be set globally by running e.g. options(sfn_max_print_active = 1, sfn_max_print_inactive = 2). Refs #157
  • The example dataset Roxel is updated to comply with recent updates on the way a CRS is specified in an sf object. Refs #167
  • GitHub Actions workflows are updated to comply with new developments.
  • Documentation updates:
    • Vignette file names are updated such that the appear in correct order on CRAN. Refs #162
    • Example section of the plot method for sfnetwork objects now includes an example of how to add graticules and axes. Refs #159

v0.5.2

3 years ago

Changelog

  • Compatibility with s2 by adding a s2::as_s2_geography() method for sfnetwork objects. In the new version of sf, the s2 package will be used for geometric operations involving longitude-latitude coordinates, see here.
  • Bug fixes:
    • When setting length_as_weight = TRUE in the sfnetwork construction function, the added weight column now preserves specification of units.
    • st_network_blend() now internally uses sf::st_cast() instead of sfheaders::sfc_cast() to avoid errors with some CRS specifications.
  • Documentation updates:
    • Extended documentation for the shortest paths functions.
    • Clear mention in vignettes that tidygraph behavior regarding the weight attribute settings is sometimes differing from igraph.

v0.5.1

3 years ago

Changelog

  • Compatibility with spatstat v2, which is now splitted into multiple sub-packages. See here for details. In sfnetworks, this affected the functions as_sfnetwork.linnet(), as_sfnetwork.psp() and as.linnet.sfnetwork(). Using this functions now requires spatstat >= 2.0.0 and sf >= 0.9.8.
  • Bug fixes:
    • Usage of match for checking coordinate equality is replaced by a new st_match function specifically designed for this task. This fixes bugs related to numeric approximations of detailed coordinates. See #130
  • Documentation updates:
    • It is now clearly documented that using sf::st_reverse() to reverse edge linestrings is only possible with GEOS versions >= 3.7.

v0.5.0

3 years ago

Changelog

  • Addition of a to_spatial_contracted() morpher, to contract groups of nodes based on given grouping variables. Refs #104
  • Addition of a to_spatial_neighborhood() morpher, to limit a network to the neighborhood of a given node, based on a given cost threshold. Refs #90
  • New implementation of st_network_blend(), which is faster and more reliable. The sort argument is deprecated, since the returned network is now always sorted.
  • Addition of an summarise_attributes argument to the to_spatial_simple() morpher, allowing to specify on a per-attribute basis how attribute values of merged multiple edges should be inferred from the original ones. Refs #113. The same argument is also part of the new to_spatial_contracted() morpher, where it can be used to specify on a per-attribute basis how attribute values of contracted groups of nodes should be inferred from the original ones.
  • The argument remove_parallels of the to_spatial_simple() morpher is renamed to remove_multiples to better fit naming conventions in igraph.
  • The argument store_orig_data of the to_spatial_smooth() morpher is renamed to store_original_data to be better interpretable. This argument is also added to the morphers to_spatial_simple() and to_spatial_contracted(), allowing to store original node or edge data in a .orig_data column, matching the design standards of tidygraph.
  • Addition of a Inf_as_NaN argument to st_network_cost(), to store cost values of paths between unconnected edges as NaN instead of Inf. The default value of this argument is FALSE. Refs #111
  • The default of the Inf_as_NaN argument in edge_circuity() is changed from TRUE to FALSE, to better fit with the change mentioned above, and to make sure no changes to R defaults are made without the user explicitly specifying them.
  • Whenever there are multiple matches when spatially joining information to the nodes of a network with sf::st_join(), only the information of the first match is now joined. Before, this used to throw an error. Refs #108
  • Removal of the morphed_sfnetwork method for sf::st_geometry<-, since geometries should not be replaced in a morphed state.
  • The warning '.. assumes attributes are constant over geometries' is now only raised when not all attribute-geometry relationships are set to 'constant'. Refs #123
  • Bug fixes:
    • The attribute-geometry relationships of edge attributes are now preserved during network construction. Fixes #123
    • st_network_blend() now correctly blends points that are very close to the network. Fixes #98
    • st_network_blend() now preserves the directedness of the input network. Fixes #127
    • st_network_blend() now runs even if the network contains edges of length 0. Fixes #125
    • The sfnetwork method for sf::st_crop() now correctly updates the nodes table after cropping the edges. Fixes #109
    • to_spatial_smooth() now returns the original network when no pseudo nodes are present. Fixes #112
    • to_spatial_subdivision() now returns the original network when there are no locations for subdivision.
    • to_spatial_subdivision() now returns correct node indices for undirected networks.
  • Several new examples and applications added to the vignettes.