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;
vignette("non-dendritic") and
vignette("network_navigation") provide end-to-end
walkthroughs. Package developers should note that returned objects now
carry subclass attributes which are stripped by standard dplyr
operations.
toid is not in id. Canonical reserved values
(0 / ""), NA, implicit absence,
foreign reserved values, and unique-per-outlet ids are all accepted.
Calls that previously errored on NA or orphan
toid now succeed; warnings are narrower
(check_hy_outlets() only on type mismatch,
sort_network() only on zero outlets).add_toids(), sort_network(),
add_levelpaths(), make_node_topology(),
to_flownetwork()); dispatch is on subclass with guided
errors for wrong input. hy_flownetwork is a separate
junction table – it does not inherit from hy.hy_network_type(),
is_dendritic(), hy_capabilities(). Print
methods for hy_topo, hy_node,
hy_flownetwork.hy() gains add_topo to auto-build
toid from fromnode/tonode.add_toids(return_dendritic = FALSE) is deprecated; use
to_flownetwork().add_levelpaths() is faster (data.table
conversion).check_valid() for sf/sfc geometry repair, including
GEOMETRYCOLLECTION artifacts from
sf::st_make_valid(). See ?check_valid.dissolve_polygons() for unioning catchment or
HUC-style polygon coverages, with optional grouping and interior-hole
fill. Uses geos (added to Suggests) for accelerated unions
when installed. See ?dissolve_polygons.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.make_to_dt() dendritic branch on tibble input.hy_topo objects have unique id values
(one row per catchment). Non-dendritic connectivity with duplicated ids
in a toid-based edge list will need to be represented as
hy_flownetwork (via to_flownetwork()).
Developers passing non-dendritic toid tables through hydroloom functions
should migrate to to_flownetwork() or
make_node_topology().Update test tolerances for failing Fedora CRAN tests
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. –
#60accumulate_downstream() now supports “total upstream”
and “divergence routed” accumulation. – #17make_index_ids() has been rewritten. It now uses four
modes (“to”, “from”, and “both”).make_fromids() is deprecated in favor of
make_index_ids() with mode = “from”.format_index_ids() is deprecated. The *_list element of
make_index_ids() can be unnested instead.vignette("network_navigation")navigate_network_dfs()make_index_ids()
and make_fromids().to_flownetwork function.add_toids()navigate_hydro_network() will now navigate from a
diverted path to a main path where it previously only followed
traditional tributaries..hy s3 object handling
hy()navigate_network_dfs()sort_network()add_toids()add_streamorder() and add_streamcalculator()
https://github.com/DOI-USGS/nhdplusTools/issues/188hydroloom_names()index_points_to_lines()make_attribute_topology()vignette("flow-table")add_divergence()check_hy_graph()