{
  "_id": "6a103068acfb0bcc41c9567f",
  "Package": "hydrofabric3D",
  "Title": "hydrofabric3D",
  "Version": "0.1.98",
  "Authors@R": "c(person(\"Mike\", \"Johnson\", role = c(\"aut\"), email = \"mike.johnson@noaa.gov\"),\nperson(\"Angus\", \"Watters\",  role = c(\"aut\", \"cre\"), email = \"anguswatters@gmail.com\"),\nperson(\"Arash\", \"Modaresi\",  role = \"ctb\"),\nperson(\"NOAA\", role = \"fnd\"),\nperson(\"Lynker\", role = \"fnd\"))",
  "Description": "Cuts terrain based cross sections for a river network.",
  "License": "Apache License (>= 2)",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.2",
  "Remotes": [
    "mikejohnson51/AHGestimation"
  ],
  "LazyData": "true",
  "Config/Needs/website": "rmarkdown",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Config/pak/sysreqs": "libabsl-dev cmake libgdal-dev gdal-bin libgeos-dev\nmake libicu-dev libpng-dev libuv1-dev libxml2-dev libssl-dev\nlibproj-dev libsqlite3-dev libudunits2-dev libnode-dev\nlibx11-dev zlib1g-dev",
  "Repository": "https://owp-spatial.r-universe.dev",
  "Date/Publication": "2025-01-14 16:50:32 UTC",
  "RemoteUrl": "https://github.com/lynker-spatial/hydrofabric3D",
  "RemoteRef": "HEAD",
  "RemoteSha": "a7b24a23da4020f9716b5b13bd962f141b592e34",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-12 09:31:04 UTC",
    "User": "root"
  },
  "Author": "Mike Johnson [aut],\nAngus Watters [aut, cre],\nArash Modaresi [ctb],\nNOAA [fnd],\nLynker [fnd]",
  "Maintainer": "Angus Watters <anguswatters@gmail.com>",
  "MD5sum": "576e92ee6aaeaa536bbe13c0f1ce9a56",
  "_user": "owp-spatial",
  "_type": "src",
  "_file": "hydrofabric3D_0.1.98.tar.gz",
  "_fileid": "278e153ed63fb14f68d7a3be8760f52870a38d60fcf99c46778d6c82b3a1e447",
  "_filesize": 16588813,
  "_sha256": "278e153ed63fb14f68d7a3be8760f52870a38d60fcf99c46778d6c82b3a1e447",
  "_created": "2026-05-12T09:31:04.000Z",
  "_published": "2026-05-22T10:31:04.777Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77362000016,
      "time": 594,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6940756388"
    },
    {
      "job": 77361999942,
      "time": 622,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6940766607"
    },
    {
      "job": 77362000263,
      "time": 569,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6940836441"
    },
    {
      "job": 77361999913,
      "time": 651,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6940892348"
    },
    {
      "job": 77361999770,
      "time": 1268,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6940543306"
    },
    {
      "job": 77361999490,
      "time": 158,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7158390725"
    },
    {
      "job": 77362000069,
      "time": 723,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6940800687"
    },
    {
      "job": 77362000057,
      "time": 749,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6940810203"
    },
    {
      "job": 77362000082,
      "time": 664,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6940780888"
    }
  ],
  "_buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/lynker-spatial/hydrofabric3D",
  "_commit": {
    "id": "a7b24a23da4020f9716b5b13bd962f141b592e34",
    "author": "anguswg-ucsb <anguswatters@gmail.com>",
    "committer": "anguswg-ucsb <anguswatters@gmail.com>",
    "message": "updated cs_angles and transects_to_polygon_extender functions to use standard cs_pts names, added index variable to global variables in transects_to_polygon_extender to avoid pkg build warning\n",
    "time": 1736873432
  },
  "_maintainer": {
    "name": "Angus Watters",
    "email": "anguswatters@gmail.com",
    "login": "anguswg-ucsb",
    "linkedin": "in/angus-watters",
    "uuid": 66215643
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 2.10",
      "role": "Depends"
    },
    {
      "package": "geos",
      "role": "Imports"
    },
    {
      "package": "wk",
      "role": "Imports"
    },
    {
      "package": "terra",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "vctrs",
      "role": "Imports"
    },
    {
      "package": "sf",
      "role": "Imports"
    },
    {
      "package": "smoothr",
      "role": "Imports"
    },
    {
      "package": "zoo",
      "role": "Imports"
    },
    {
      "package": "nhdplusTools",
      "role": "Imports"
    },
    {
      "package": "hydroloom",
      "role": "Imports"
    },
    {
      "package": "fastmap",
      "role": "Imports"
    },
    {
      "package": "DescTools",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "lwgeom",
      "role": "Imports"
    },
    {
      "package": "rmapshaper",
      "role": "Imports"
    },
    {
      "package": "AHGestimation",
      "role": "Imports"
    },
    {
      "package": "methods",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "distill",
      "role": "Suggests"
    },
    {
      "package": "pals",
      "role": "Suggests"
    },
    {
      "package": "glue",
      "role": "Suggests"
    },
    {
      "package": "patchwork",
      "role": "Suggests"
    }
  ],
  "_owner": "lynker-spatial",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [],
  "_tags": [],
  "_stars": 13,
  "_contributors": [
    {
      "user": "anguswg-ucsb",
      "count": 226,
      "uuid": 66215643
    },
    {
      "user": "mikejohnson51",
      "count": 31,
      "uuid": 30052272
    },
    {
      "user": "arashmodrad",
      "count": 3,
      "uuid": 55070201
    }
  ],
  "_userbio": {
    "uuid": 190552155,
    "type": "organization",
    "name": "OWP Spatial",
    "description": "Open Data, Open Science"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/hydrofabric3D"
  },
  "_devurl": "https://github.com/lynker-spatial/hydrofabric3d",
  "_searchresults": 71,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/hydrofabric3D.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "add_braid_ids",
    "add_cs_area",
    "add_cs_bathymetry",
    "add_cs_id_sequence",
    "add_intersects_ids",
    "add_length_col",
    "add_point_type_counts",
    "add_powerlaw_bankful_width",
    "add_relief",
    "add_tmp_id",
    "adjust_flagged_transects",
    "adjust_transect_lengths",
    "align_banks_and_bottoms",
    "classify_points",
    "compare_cs_validity",
    "cross_section_pts",
    "cs_arrange",
    "cut_cross_sections",
    "cut_transect",
    "diff_overlaps",
    "drop_incomplete_cs_pts",
    "extend_by_percent",
    "extend_transects_by_cs_attributes",
    "extend_transects_sides",
    "extend_transects_to_polygons",
    "find_braids",
    "fix_braided_transects",
    "flag_transects_for_change",
    "geos_extend_line",
    "get_bank_attributes",
    "get_braid_list",
    "get_cs_bottom_length",
    "get_point_type_counts",
    "get_relief",
    "get_start_node",
    "get_transect_extension_distances_to_polygons",
    "get_transects",
    "get_unique_tmp_ids",
    "get_validity_tally",
    "is_braided",
    "plot_cs_pts",
    "prep_flowlines",
    "pts_to_XY",
    "renumber_cs_ids",
    "rm_multi_intersects",
    "rm_multiflowline_intersections",
    "rm_self_intersections",
    "select_cs_pts",
    "select_transects",
    "trim_transects_to_polygons",
    "validate_classified_cs_pts",
    "validate_classified_cs_pts_against_transects",
    "validate_cs_pts",
    "validate_cs_pts_against_transects",
    "validate_transects",
    "validate_transects_against_flowlines"
  ],
  "_datasets": [
    {
      "name": "braided_flowlines",
      "title": "Braided Flowlines",
      "object": "braided_flowlines",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "comid",
        "fromnode",
        "tonode",
        "startflag",
        "streamcalc",
        "divergence",
        "dnminorhyd",
        "tocomid",
        "fcode",
        "lengthkm",
        "reachcode",
        "frommeas",
        "tomeas",
        "areasqkm",
        "arbolatesu",
        "terminalpa",
        "hydroseq",
        "levelpathi",
        "pathlength",
        "dnlevelpat",
        "dnhydroseq",
        "totdasqkm",
        "terminalfl",
        "streamleve",
        "streamorde",
        "vpuin",
        "vpuout",
        "wbareatype",
        "slope",
        "slopelenkm",
        "ftype",
        "gnis_name",
        "gnis_id",
        "wbareacomi",
        "hwnodesqkm",
        "rpuid",
        "vpuid",
        "roughness",
        "geom"
      ],
      "rows": 508,
      "table": true,
      "tojson": true
    },
    {
      "name": "flowlines",
      "title": "Flowlines",
      "object": "flowlines",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "lengthkm",
        "mainstem",
        "tot_drainage_areasqkm",
        "geom"
      ],
      "rows": 10,
      "table": false,
      "tojson": true
    },
    {
      "name": "flowlines_missing_depth",
      "title": "Flowlines Missing Depth",
      "object": "flowlines_missing_depth",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "lengthkm",
        "mainstem",
        "tot_drainage_areasqkm",
        "geom"
      ],
      "rows": 1,
      "table": false,
      "tojson": true
    },
    {
      "name": "invalid_flowlines",
      "title": "Invalid Flowlines",
      "object": "invalid_flowlines",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "lengthkm",
        "mainstem",
        "tot_drainage_areasqkm",
        "geom"
      ],
      "rows": 2,
      "table": false,
      "tojson": true
    },
    {
      "name": "junction_flowlines",
      "title": "Junction Flowlines",
      "object": "junction_flowlines",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "lengthkm",
        "mainstem",
        "tot_drainage_areasqkm",
        "geom"
      ],
      "rows": 5,
      "table": false,
      "tojson": true
    },
    {
      "name": "linestring",
      "title": "Flowlines linestring",
      "object": "linestring",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "nhdplus_comid",
        "geometry",
        "comid",
        "totdasqkm",
        "dist_m"
      ],
      "rows": 325,
      "table": true,
      "tojson": true
    },
    {
      "name": "nextgen_braided_flowlines",
      "title": "NextGen Braided Flowlines",
      "object": "nextgen_braided_flowlines",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "toid",
        "mainstem",
        "order",
        "hydroseq",
        "lengthkm",
        "areasqkm",
        "tot_drainage_areasqkm",
        "has_divide",
        "divide_id",
        "geom"
      ],
      "rows": 183,
      "table": false,
      "tojson": true
    },
    {
      "name": "transects_missing_depth",
      "title": "Transects Missing Depth",
      "object": "transects_missing_depth",
      "class": [
        "sf",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "hy_id",
        "cs_id",
        "cs_lengthm",
        "cs_measure",
        "ds_distance",
        "lengthm",
        "sinuosity",
        "geom"
      ],
      "rows": 5,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "add_bank_attributes",
      "title": "Adds attributes about the banks of each cross section in a dataframe of cross section points Function adds \"bottom\", \"left_bank\", \"right_bank\" columns that are the Z values of the \"lowest\" bottom point, and the \"highest\" left and right bank Z values, respectively. If there are And also a \"valid_banks\" column is added that is TRUE if the hy_id/cs_id set of cross section point has at least 1 bottom point with at least 1 left bank point AND 1 right bank point that are above the lowest \"bottom\" point.",
      "topics": [
        "add_bank_attributes"
      ]
    },
    {
      "page": "add_braid_ids",
      "title": "Find braids and add to a dataframe/sf dataframe Adds a 'braid_id' and 'is_multibraid' columns to an sf dataframe containing a crosswalk_id and sf linestring geometires",
      "topics": [
        "add_braid_ids"
      ]
    },
    {
      "page": "add_cs_area",
      "title": "Adds a cs_area column to a set of cross section points",
      "topics": [
        "add_cs_area"
      ]
    },
    {
      "page": "add_cs_bathymetry",
      "title": "Given provide inchannel widths and depths to a set of cross section points and derive estimated shapes",
      "topics": [
        "add_cs_bathymetry"
      ]
    },
    {
      "page": "add_cs_id_sequence",
      "title": "Add a 1:number of cross sections 'cs_id' for each crosswalk_id by cs_measure",
      "topics": [
        "add_cs_id_sequence"
      ]
    },
    {
      "page": "add_intersects_ids",
      "title": "Add an ID column from 'y' if it intersects with 'x'",
      "topics": [
        "add_intersects_ids"
      ]
    },
    {
      "page": "add_length_col",
      "title": "Add a length column to a sf geometry dataframe",
      "topics": [
        "add_length_col"
      ]
    },
    {
      "page": "add_point_type_counts",
      "title": "Add the count of each point type as a column to a dataframe of section points",
      "topics": [
        "add_point_type_counts"
      ]
    },
    {
      "page": "add_points_per_cs",
      "title": "Add a points per cross section column to an sf dataframe of linestrings given a DEM and min points value",
      "topics": [
        "add_points_per_cs"
      ]
    },
    {
      "page": "add_powerlaw_bankful_width",
      "title": "Add powerlaw_bankful_width column",
      "topics": [
        "add_powerlaw_bankful_width"
      ]
    },
    {
      "page": "add_relief",
      "title": "Add relief attributes to a dataframe of cross sections points Given a set of cross section points (derived from hydrofabric3D::cross_section_pts() and hydrofabric3D::classify_points()) add a \"has_relief\" logical value to data. The \"has_relief\" value is indicating whether a cross section \"has relief\". Relief is determined by checking each set of cross section points have a left OR right bank that has a depth difference from the bottom that isgreater than or equal to a percentage of the cross section length (e.g. Assuming a 'pct_of_length_for_relief' of 0.01 (1%) of a 100m cross section would have a relief depth threshold of 1m)",
      "topics": [
        "add_relief"
      ]
    },
    {
      "page": "add_tmp_id",
      "title": "Function to add a new \"tmp_id\" column to a dataframe from 2 other columns",
      "topics": [
        "add_tmp_id"
      ]
    },
    {
      "page": "adjust_flagged_transects",
      "title": "Update a flagged set of transects by shortening them by the given left_distance and right_distance Requires 'left_distance' and 'right_distance' columns to specify how much to adjust flagged transects by",
      "topics": [
        "adjust_flagged_transects"
      ]
    },
    {
      "page": "adjust_transect_lengths",
      "title": "Extend/shrink an sf linestring dataframe by a specified lengths vector",
      "topics": [
        "adjust_transect_lengths"
      ]
    },
    {
      "page": "align_banks_and_bottoms",
      "title": "Align banks and smooth bottoms of cross section points",
      "topics": [
        "align_banks_and_bottoms"
      ]
    },
    {
      "page": "braided_flowlines",
      "title": "Braided Flowlines",
      "topics": [
        "braided_flowlines"
      ]
    },
    {
      "page": "classify_points",
      "title": "Classify Cross Section Points (version 3) with NA removal Version 2 of cross section point classifier function, uses 1st and 2nd derivative of the depths to better classify channel points",
      "topics": [
        "classify_points"
      ]
    },
    {
      "page": "compare_cs_validity",
      "title": "Compare valid_banks and has_relief between 2 sets of cross section points",
      "topics": [
        "compare_cs_validity"
      ]
    },
    {
      "page": "cross_section_pts",
      "title": "Get Points across transects with elevation values",
      "topics": [
        "cross_section_pts"
      ]
    },
    {
      "page": "cs_arrange",
      "title": "Rearrange transects / cross sections in order from upstream to downstream",
      "topics": [
        "cs_arrange"
      ]
    },
    {
      "page": "cut_cross_sections",
      "title": "Generate Cross Sections Across Hydrographic Network",
      "topics": [
        "cut_cross_sections"
      ]
    },
    {
      "page": "cut_transect",
      "title": "Generate a Perpendicular Linestring of a Given Width",
      "topics": [
        "cut_transect"
      ]
    },
    {
      "page": "dem_based_points_per_cs",
      "title": "Calculate the points per cross section based off length relative to a DEM Given the length of cross sections and a DEM, approximate the appropriate number of points for each cross section length",
      "topics": [
        "dem_based_points_per_cs"
      ]
    },
    {
      "page": "diff_overlaps",
      "title": "Use sf::st_difference to resolve overlaps in polygons based on intersections with other polygons",
      "topics": [
        "diff_overlaps"
      ]
    },
    {
      "page": "drop_incomplete_cs_pts",
      "title": "Remove entire cross sections that have any NA Z (depth) values",
      "topics": [
        "drop_incomplete_cs_pts"
      ]
    },
    {
      "page": "extend_by_percent",
      "title": "Extend an sf linestring dataframe by a percent of the lines length",
      "topics": [
        "extend_by_percent"
      ]
    },
    {
      "page": "extend_transects_by_cs_attributes",
      "title": "Extend transects for any transects with invalid cross section attributes",
      "topics": [
        "extend_transects_by_cs_attributes"
      ]
    },
    {
      "page": "extend_transects_sides",
      "title": "Given a set of transect lines, a flowline network, extend the transect lines out given distances from the left and right Flowlines are required to ensure valid transect intersection relationship is maintained",
      "topics": [
        "extend_transects_sides"
      ]
    },
    {
      "page": "extend_transects_to_polygons",
      "title": "Give a set of transecct linestrings and poylgons and get the minimum distance to extend each transect line (from both directions, to try and reach the edge of a \"polygons\") Superseces old version of function (now named extend_transects_to_polygons2())",
      "topics": [
        "extend_transects_to_polygons"
      ]
    },
    {
      "page": "extract_dem_values",
      "title": "Given a set of linestrings, extract DEM values at points along the linestring",
      "topics": [
        "extract_dem_values"
      ]
    },
    {
      "page": "find_braids",
      "title": "Find braided sections of a network and return the unique crosswalk_ids for each idenfied braid",
      "topics": [
        "find_braids"
      ]
    },
    {
      "page": "fix_braided_transects",
      "title": "Fix transects found on braided river sections (latest)",
      "topics": [
        "fix_braided_transects"
      ]
    },
    {
      "page": "flag_transects_for_change",
      "title": "Add a flagged and extension distance columns to set of transects with CS attributes based on new cross section points data",
      "topics": [
        "flag_transects_for_change"
      ]
    },
    {
      "page": "flowlines",
      "title": "Flowlines",
      "topics": [
        "flowlines"
      ]
    },
    {
      "page": "flowlines_missing_depth",
      "title": "Flowlines Missing Depth",
      "topics": [
        "flowlines_missing_depth"
      ]
    },
    {
      "page": "geos_extend_line",
      "title": "Extend a geos_geometry linestring from, one or both ends, by a given distance (meters)",
      "topics": [
        "geos_extend_line"
      ]
    },
    {
      "page": "get_bank_attributes",
      "title": "Get attributes about the banks of each cross section in a dataframe of cross section points Given a set of cross section points with point_type column, return a dataframe of the unique hy_id/cs_ids with the following calculated columns: \"bottom\", \"left_bank\", \"right_bank\" columns which are the Z values of the \"lowest\" bottom point, and the \"highest\" left and right bank Z values, respectively. And a \"valid_banks\" column indicating whether the hy_id/cs_id set of cross section point has at least a signle bottom point with at least 1 left bank point AND 1 right bank point that are above the lowest \"bottom\" point.",
      "topics": [
        "get_bank_attributes"
      ]
    },
    {
      "page": "get_braid_list",
      "title": "Create a list of braid IDs containing crosswalk_ids in each braid",
      "topics": [
        "get_braid_list"
      ]
    },
    {
      "page": "get_cs_bottom_length",
      "title": "Calculate the length between the leftmost and rightmost bottom point in each cross section",
      "topics": [
        "get_cs_bottom_length"
      ]
    },
    {
      "page": "get_point_type_counts",
      "title": "Get the count of each point type in a set of cross section points",
      "topics": [
        "get_point_type_counts"
      ]
    },
    {
      "page": "get_points_per_cs",
      "title": "Calculate the points per cross section based off length",
      "topics": [
        "get_points_per_cs"
      ]
    },
    {
      "page": "get_relief",
      "title": "Get relief attributes from a dataframe of cross sections points Generate a dataframe from a set of classified cross section points indicating whether a cross section \"has relief\". Relief is determined by checking each set of cross section points have a left OR right bank that has a depth difference from the bottom that is greater than or equal to a percentage of the cross section length (e.g. Assuming a 'pct_of_length_for_relief' of 0.01 (1%) of a 100m cross section would have a relief depth threshold of 1m)",
      "topics": [
        "get_relief"
      ]
    },
    {
      "page": "get_start_node",
      "title": "Get a valid starting node from a graph",
      "topics": [
        "get_start_node"
      ]
    },
    {
      "page": "get_transect_extension_distances_to_polygons",
      "title": "Get the left and right extension distances for a set of transects out to a set of polygons",
      "topics": [
        "get_transect_extension_distances_to_polygons"
      ]
    },
    {
      "page": "get_transects",
      "title": "Generate Multiple cross section along a linestring",
      "topics": [
        "get_transects"
      ]
    },
    {
      "page": "get_unique_tmp_ids",
      "title": "Get a list of unique tmp_ids in a dataframe",
      "topics": [
        "get_unique_tmp_ids"
      ]
    },
    {
      "page": "get_validity_tally",
      "title": "Get a total count of the validity attributes",
      "topics": [
        "get_validity_tally"
      ]
    },
    {
      "page": "invalid_flowlines",
      "title": "Invalid Flowlines",
      "topics": [
        "invalid_flowlines"
      ]
    },
    {
      "page": "is_braided",
      "title": "Detect whether a braid exists in a hydrologic network Check if if a hydrologic network dataset contains any braids. If multiple discontinuous networks are within the 'network' data. The function will try to infer the distinct networks and then check for braids in each component (using find_connected_components()).",
      "topics": [
        "is_braided"
      ]
    },
    {
      "page": "junction_flowlines",
      "title": "Junction Flowlines",
      "topics": [
        "junction_flowlines"
      ]
    },
    {
      "page": "linestring",
      "title": "Flowlines linestring",
      "topics": [
        "linestring"
      ]
    },
    {
      "page": "nextgen_braided_flowlines",
      "title": "NextGen Braided Flowlines",
      "topics": [
        "nextgen_braided_flowlines"
      ]
    },
    {
      "page": "plot_cs_pts",
      "title": "Plots an X-Y scatter plot of cross section points",
      "topics": [
        "plot_cs_pts"
      ]
    },
    {
      "page": "prep_flowlines",
      "title": "Prepare flowlines have a more dense and/or smoother surface for cutting transects",
      "topics": [
        "prep_flowlines"
      ]
    },
    {
      "page": "pts_to_XY",
      "title": "Convert an sf dataframe with a point geometry column to non spatial with XY columns",
      "topics": [
        "pts_to_XY"
      ]
    },
    {
      "page": "renumber_cs_ids",
      "title": "Fix IDs in a dataframe",
      "topics": [
        "renumber_cs_ids"
      ]
    },
    {
      "page": "rm_multi_intersects",
      "title": "Selectively removes intersecting transect lines Attempts to remove transects intersecting other transects by first removing transects that interesect the most other transects, then re checking intersection condition, and doing this until there are no multi intersections this gives the benefit of removing a transect line that intersects many other transects, potentially leaving those other transects with no extraneous intersections ONCE the MULTI intersecting transect is removed",
      "topics": [
        "rm_multi_intersects"
      ]
    },
    {
      "page": "rm_multiflowline_intersections",
      "title": "Remove transect lines that intersect with more than one flowline",
      "topics": [
        "rm_multiflowline_intersections"
      ]
    },
    {
      "page": "rm_self_intersections",
      "title": "Remove Self-Intersections",
      "topics": [
        "rm_self_intersections"
      ]
    },
    {
      "page": "select_cs_pts",
      "title": "Select standard cross section point columns Internal helper function for selecting cross section point columns aligning with standard data model for cross section points",
      "topics": [
        "select_cs_pts"
      ]
    },
    {
      "page": "select_transects",
      "title": "Select standard transect columns Internal helper function for selecting transect columns aligning with standard data model for transect",
      "topics": [
        "select_transects"
      ]
    },
    {
      "page": "shorten_multi_flowline_intersecting_extended_transects",
      "title": "Takes any transects that was extended and with multiple flowline intersections, and shortens them by the distance specified in the \"extension_distance\" column",
      "topics": [
        "shorten_multi_flowline_intersecting_extended_transects"
      ]
    },
    {
      "page": "shorten_multi_transect_intersecting_extended_transects",
      "title": "Takes any transects with multiple intersections that was extended, and shortens them by the distance specified in the \"extension_distance\" column",
      "topics": [
        "shorten_multi_transect_intersecting_extended_transects"
      ]
    },
    {
      "page": "transects_missing_depth",
      "title": "Transects Missing Depth",
      "topics": [
        "transects_missing_depth"
      ]
    },
    {
      "page": "transects_to_cs_pts",
      "title": "Convert SF linestring transect lines into SF points with",
      "topics": [
        "transects_to_cs_pts"
      ]
    },
    {
      "page": "trim_transects_to_polygons",
      "title": "Trim a set of transects to the bounds of polygons",
      "topics": [
        "trim_transects_to_polygons"
      ]
    },
    {
      "page": "validate_classified_cs_pts",
      "title": "Validate Classified Cross Sections Points Ensure all cross section points are valid. This validates the points in the same manner as validate_cs_pts() but also checks that classification columns ('class', 'point_type', 'valid_banks', 'has_relief') exist.",
      "topics": [
        "validate_classified_cs_pts"
      ]
    },
    {
      "page": "validate_classified_cs_pts_against_transects",
      "title": "Validate Classified Cross Section Points Against Transects Ensure all cross section points are valid relative to a set of transects. This validates the points in the same manner as validate_cs_pts_against_transects() but also checks that classification columns ('class', 'point_type', 'valid_banks', 'has_relief') exist.",
      "topics": [
        "validate_classified_cs_pts_against_transects"
      ]
    },
    {
      "page": "validate_cs_pts",
      "title": "Validate Cross Sections Points Ensure all cross section points are valid",
      "topics": [
        "validate_cs_pts"
      ]
    },
    {
      "page": "validate_cs_pts_against_transects",
      "title": "Validate Cross Section Points Against Transects Ensure all cross section points are valid relative to a set of transects",
      "topics": [
        "validate_cs_pts_against_transects"
      ]
    },
    {
      "page": "validate_transects",
      "title": "Validate Transects",
      "topics": [
        "validate_transects"
      ]
    },
    {
      "page": "validate_transects_against_flowlines",
      "title": "Validate Transects Against Flowlines Ensure all transects are valid relative to a set of flowlines",
      "topics": [
        "validate_transects_against_flowlines"
      ]
    }
  ],
  "_pkglogo": "https://github.com/lynker-spatial/hydrofabric3D/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/lynker-spatial/hydrofabric3D/raw/HEAD/README.md",
  "_rundeps": [
    "AHGestimation",
    "arrow",
    "askpass",
    "assertthat",
    "bit",
    "bit64",
    "boot",
    "cachem",
    "cellranger",
    "class",
    "classInt",
    "cli",
    "clipr",
    "cpp11",
    "crayon",
    "curl",
    "data.table",
    "dataRetrieval",
    "DBI",
    "DescTools",
    "digest",
    "dplyr",
    "e1071",
    "Exact",
    "expm",
    "farver",
    "fastmap",
    "forcats",
    "fs",
    "fst",
    "fstcore",
    "generics",
    "geodist",
    "geojsonsf",
    "geometries",
    "geos",
    "ggplot2",
    "gld",
    "glue",
    "gtable",
    "haven",
    "hms",
    "httr",
    "httr2",
    "hydroloom",
    "isoband",
    "jsonify",
    "jsonlite",
    "KernSmooth",
    "labeling",
    "lattice",
    "libgeos",
    "lifecycle",
    "lmom",
    "lubridate",
    "lwgeom",
    "magrittr",
    "maplegend",
    "mapsf",
    "maptiles",
    "MASS",
    "Matrix",
    "mco",
    "memoise",
    "mime",
    "mvtnorm",
    "nhdplusTools",
    "openssl",
    "pbapply",
    "pillar",
    "pkgconfig",
    "png",
    "prettyunits",
    "progress",
    "proxy",
    "purrr",
    "R.methodsS3",
    "R.oo",
    "R.utils",
    "R6",
    "RANN",
    "rapidjsonr",
    "rappdirs",
    "RColorBrewer",
    "Rcpp",
    "readr",
    "readxl",
    "rematch",
    "rlang",
    "rmapshaper",
    "rootSolve",
    "rstudioapi",
    "s2",
    "S7",
    "scales",
    "sf",
    "sfheaders",
    "smoothr",
    "sp",
    "stringi",
    "stringr",
    "sys",
    "terra",
    "tibble",
    "tidyr",
    "tidyselect",
    "timechange",
    "tzdb",
    "units",
    "utf8",
    "V8",
    "vctrs",
    "viridisLite",
    "vroom",
    "whisker",
    "withr",
    "wk",
    "xml2",
    "zip",
    "zoo"
  ],
  "_vignettes": [
    {
      "source": "basic_use.Rmd",
      "filename": "basic_use.html",
      "title": "Basic Use",
      "author": "Mike Johnson",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Installation",
        "Example",
        "Define Network",
        "Cut cross sections",
        "Define Cross section points",
        "Classify Cross section points",
        "Explore!",
        "Time to get r nrow(transects) transects and r nrow(classified_pts) classified points ..."
      ],
      "created": "2023-11-16 00:16:27",
      "modified": "2024-12-05 21:50:23",
      "commits": 5
    },
    {
      "source": "cross_section_generator.Rmd",
      "filename": "cross_section_generator.html",
      "title": "NOAA OWP Cross Section Generator",
      "author": "Mike Johnson",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction",
        "Prep Network",
        "Algorithm Walk Through:",
        "Step 1: Explode Linestring into edges:",
        "Step 2: Define Edge Mid and End Point",
        "Step 3: Define Cross Section at end Point",
        "Define a normal edge",
        "Define the cross sections",
        "Cut a Full Flowline",
        "Flow Network",
        "Transects to 3D channel",
        "Reach Addressing",
        "Channel Classifiction",
        "Channel bottom alignment and bank smoothing"
      ],
      "created": "2023-11-15 20:11:09",
      "modified": "2024-12-06 00:39:18",
      "commits": 5
    }
  ],
  "_score": 5.266231696689894,
  "_indexed": false,
  "_nocasepkg": "hydrofabric3d",
  "_universes": [
    "owp-spatial"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.98",
      "date": "2026-05-12T09:34:50.000Z",
      "distro": "noble",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "be63db5b486baee03d569f8cef9fd3e82e69c891fc6aa503d35b10a701a8dd08",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.98",
      "date": "2026-05-12T09:34:00.000Z",
      "distro": "noble",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "11a3231e72afe714013f40ec52a08910394a92619253c54cc8fbc65fabe48e1b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.98",
      "date": "2026-05-12T09:37:52.000Z",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "f63610c3ebfdfe43538c6575f6bd9acfded5fe937e17c5e57bcfb730214e7e08",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.98",
      "date": "2026-05-12T09:39:12.000Z",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "48d540c79f751725227f61b0da99120d6a73c22ea37647daf3bae83607f9cf3c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.98",
      "date": "2026-05-12T09:33:17.000Z",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "50ae912b2738657236a40f85d8cc9199612a903bf24cee10740b67092e930f2b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.98",
      "date": "2026-05-12T09:33:23.000Z",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "d6b63c8d561bf95108d1e972bb3c7aa60a9ba5d74852ec2b2d744616ebb3e84b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.1.98",
      "date": "2026-05-12T09:32:57.000Z",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "02a5671d2ebf8039e6ea4d20f32055e821bef9fad1958d7a1866b5bd9545cac5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.98",
      "date": "2026-05-22T10:30:39.000Z",
      "commit": "a7b24a23da4020f9716b5b13bd962f141b592e34",
      "fileid": "7328e4758c33c13d2c555e1e1c441247e2d61b1231639d9e2a1adafff0fef2a6",
      "status": "success",
      "buildurl": "https://github.com/r-universe/owp-spatial/actions/runs/25724858417"
    }
  ]
}