hydroloom 1.3.0
Distances from confluences and subpaths along identified mainstems. Four new functions place and recover positions relative to the confluences of identified mainstems (aggregate_id as a mainstem URI), working kilometer values along each aggregate flowpath axis, built from flowline lengths rather than coordinates. A mainstem is one kind of aggregate flowpath (the flowlines that share an aggregate_id and link end to end), so any aggregate_id whose flowlines form one unbranched path works the same way.
-
get_confluences()returns each confluence of two identified mainstems as a hydro location on the receiving mainstem just below the tributary. -
add_hydro_location_distance()records the signed distance along a mainstem from the nearest hydro location; negative toward the outlet, positive toward the head. -
index_hydro_location_distance()is the inverse, mapping a distance from a hydro location back to a flowlineidandid_measure. -
get_subpath()returns the subpath between two positions on one aggregate flowpath (such as an identified mainstem) as ordered flowline pieces, with piece geometry cut bylwgeom::st_linesubstring()when the input issfandlwgeomis installed. -
index_points_to_lines()returnsid_measureon every call and acceptsaggregate_idsto constrain a point to one mainstem’s flowlines. -
hy_capabilities()reports the four new functions. A new website article, “Distances from confluences along mainstems”, walks a worked example. - The “Indexing points to a network” website article moves over from hydrogeofetch and is rewritten around hydroloom’s indexing functions.
hydroloom 1.2.2
CRAN release: 2026-09-13
Correctness fix on make_node_topology() for dendritic networks. Outlet tonodes were seeded from max(non-outlet tonode) + 1. When the highest fromnodes belonged to outlets (whose tonode is NA and excluded from that max), the seed fell inside the fromnode range and a terminal flowline’s tonode collided with another feature’s fromnode, fabricating a connection that add_toids() would then rediscover. Outlet tonodes are now seeded above every assigned node (max(c(fromnode, tonode))), so terminals keep independent pendant nodes. Observed on the Alaska reference network (2 of 2,122 outlets).
Performance fix on accumulate_downstream(). No user-facing behavior change; output is identical.
Correctness fix on add_pathlength() for networks with character ids. The terminal test was toid != 0, which recognizes only the numeric outlet sentinel. With character ids the sentinel is "", the comparison is made as strings and is TRUE, so terminals took the accumulating branch, indexed with NA, and the NA propagated up every path above them — the whole pathlength_km column came back NA. Now uses get_outlet_value(), as add_streamorder() and add_levelpaths() do. Networks with numeric ids are unaffected.
nhdplusTools has been renamed hydrogeofetch. Examples, tests, and articles that pull sample data now suggest and source from hydrogeofetch, and package URLs point at the new repository.
hydroloom 1.2.1
CRAN release: 2026-08-03
Maintenance release completing the USGS official software release review (#72). No package code changed.
- Cleaned up vignette messages noted in review (#96).
- Web service walkthroughs are now website-only articles at https://doi-usgs.github.io/hydroloom/;
hydroloom.Rmdis the only installed vignette. - Citation updated to the software release DOI, https://doi.org/10.5066/P16RS3UZ.
hydroloom 1.2.0
CRAN release: 2026-05-23
This release introduces an S3 class hierarchy (hy_topo, hy_leveled, hy_node, hy_flownetwork) that lets hydroloom validate input at dispatch time and emit guided error messages. Existing code that passes data.frame or hy objects keeps working – the new classes are assigned automatically by hy() and by producer functions. See ?hy_topo, ?hy_leveled, ?hy_node, and ?hy_flownetwork for representation patterns, required columns, and conversion paths; the non-dendritic networks and network navigation articles at https://doi-usgs.github.io/hydroloom/ provide end-to-end walkthroughs. Package developers should note that returned objects now carry subclass attributes which are stripped by standard dplyr operations.
- Outlet detection is explicit (#85): a row is an outlet when its
toidis not inid. Canonical reserved values (0/""),NA, implicit absence, foreign reserved values, and unique-per-outlet ids are all accepted. Calls that previously errored onNAor orphantoidnow succeed; warnings are narrower (check_hy_outlets()only on type mismatch,sort_network()only on zero outlets). - S3 class hierarchy (#73). Producer functions stamp output classes (
add_toids(),sort_network(),add_levelpaths(),make_node_topology(),to_flownetwork()); dispatch is on subclass with guided errors for wrong input.hy_flownetworkis a separate junction table – it does not inherit fromhy. - New exported helpers:
hy_network_type(),is_dendritic(),hy_capabilities(). Print methods forhy_topo,hy_node,hy_flownetwork. -
hy()gainsadd_topoto auto-buildtoidfromfromnode/tonode. -
add_toids(return_dendritic = FALSE)is deprecated; useto_flownetwork(). -
add_levelpaths()is faster (data.table conversion). - New
check_valid()for sf/sfc geometry repair, includingGEOMETRYCOLLECTIONartifacts fromsf::st_make_valid(). See?check_valid. - New
dissolve_polygons()for unioning catchment or HUC-style polygon coverages, with optional grouping and interior-hole fill. Usesgeos(added to Suggests) for accelerated unions when installed. See?dissolve_polygons. - Fix
get_bridge_flowlines()on networks with independent terminals –make_nondendritic_topology()had collapsed all rows carrying the reserved outlet value into one synthetic node, misclassifying bridges and exhausting memory on continental networks. - Fix
make_to_dt()dendritic branch on tibble input. - Welcome new contributor Andrew Psoras.
-
Deprecation notice: A future release will require that
hy_topoobjects have uniqueidvalues (one row per catchment). Non-dendritic connectivity with duplicated ids in a toid-based edge list will need to be represented ashy_flownetwork(viato_flownetwork()). Developers passing non-dendritic toid tables through hydroloom functions should migrate toto_flownetwork()ormake_node_topology().
hydroloom 1.1.2
CRAN release: 2026-02-20
Hydroloom 1.1.2 introduces new functionality in accumulate_downstream(), reworks the make_index_ids(), and deprecates make_fromids() and format_index_ids() for clarity of package function. Deprecated functions will be removed in the next major version release.
-
subset_network()has been added to support subsetting networks to include all diversions that emanate from the basin. – #60 -
accumulate_downstream()now supports “total upstream” and “divergence routed” accumulation. – #17 -
make_index_ids()has been rewritten. It now uses four modes (“to”, “from”, and “both”). -
make_fromids()is deprecated in favor ofmake_index_ids()with mode = “from”. -
format_index_ids()is deprecated. The *_list element ofmake_index_ids()can be unnested instead.
hydroloom 1.1.0
CRAN release: 2024-08-26
- Add new vignette for network navigation
vignette("network_navigation") - Add support for upmain and downmain navigation in
navigate_network_dfs() - Add support for upmain and downmain in
make_index_ids()andmake_fromids(). - Add function to create a “flownetwork” representation of the network with a
to_flownetworkfunction. - Improved handling / fix bugs with edge cases in
add_toids() - Improved error conditions when missing suggested packages.
-
navigate_hydro_network()will now navigate from a diverted path to a main path where it previously only followed traditional tributaries..
hydroloom 1.0.0
CRAN release: 2023-09-29
- Initialized new project
- Create basic
hys3 object handlinghy() - Ensure tibble is used throughout
- Support generic depth first search navigation
navigate_network_dfs() - Complete migration of nhdplusTools functions to hydroloom. #1
- Support sorting non-dendritic network in
sort_network() - Implemented non-dendritic network support in
add_toids() - Implemented complete stream order / stream calculator attribute
add_streamorder()andadd_streamcalculator()https://github.com/DOI-USGS/hydrogeofetch/issues/188 - Support for both numeric and character identifiers #2
- Support for NHDPlus and NHD 24k naming schemes #5
hydroloom_names() - Support for linear indexing for lines that do not have measure attributes #6
index_points_to_lines() - Implemented creation of an attribute topology from a geometric network
make_attribute_topology() - Added vignette showing how to work with the NHD flow table. https://github.com/DOI-USGS/hydrogeofetch/issues/340
vignette("flow-table") - Implement method to add divergence attribute to a non-dendritic network.
add_divergence() - Implement basic graph and sophisticate loop detection algorithm #7 and #9.
check_hy_graph()
