12  Notes and limitations

12.1 Source notes

12.1.1 National Inventory of Dams

There is a useful, simple overview at https://nid.sec.usace.army.mil/#/dam-basics/what-is-a-dam. See also https://nid.sec.usace.army.mil/#/about-the-nid/data and https://nid.sec.usace.army.mil/#/about-the-nid/faq

There is a glossary of terms and a brief description of each field on the developer page which also summarizes additional information available via API. The NID data dictionary was last updated in December 2021.

I downloaded the National Inventory of Dams on 2025-05-15.

Notes:

  • latitude and longitude are at dam centerline expressed as a single value in decimal degrees, NAD83.
  • “nid” in the name refers to a value created for this database. In many cases these are conveniences for analysis and plotting. For example, nidHeight combines is the “maximum value of dam height, structural height, and hydraulic height. Accepted as the general height of the dam”.


https://nid.sec.usace.army.mil/#/

National Inventory of Dams
More than 90,000 dams nation-wide

Disclaimer You must agree to the following terms to continue to the site.

You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only. By using this IS (which includes any device attached to this IS), you consent to the following conditions:

The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations. At any time, the USG may inspect and seize data stored on this IS. Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose. This IS includes security measures (e.g., authentication and access controls) to protect USG interests–not for your personal benefit or privacy.

Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.

https://nid.sec.usace.army.mil/#/downloads

Data last updated 2025-05-07 downloaded on 2025-05-15

  • nation.csv
  • nation.gpkg

There is a brief description of each field at https://nid.sec.usace.army.mil/api/developer which also summarizes additional information available via API.

The National Inventory of Dams (NID) API is a complete, programmable interface to all NID functionality. The NID API is a RESTful web service, using standard technologies like HTTP verbs, headers, and status codes.

The NID website is built on this API, and all of its services are available for integration into your application. To get started, we recommend exploring the website to learn about the functionality that is available.

Currently, you can develop your application with the public API. If you need assistance, please email us at NID@usace.army.mil with any questions.

See also https://nid.sec.usace.army.mil/#/about-the-nid/data and https://nid.sec.usace.army.mil/#/about-the-nid/faq

Useful, simple overview: https://nid.sec.usace.army.mil/#/dam-basics/what-is-a-dam

There is also a glossary of terms: https://www.fema.gov/sites/default/files/2020-08/fema_dam-safety_glossary_P-148.pdf

National Inventory of Dams. Data Dictionary. December 2021 https://usace-cwbi-prod-il2-nld2-docs.s3-us-gov-west-1.amazonaws.com/ec51e2ba-daff-4dbe-95eb-af13b91066ba/NID%20Data%20Dictionary%202021-12-14.pdf

Notes:

  • latitude and longitude are at dam centerline expressed as a single value in decimal degrees, NAD83.
  • volume refers to the dam; storage refers to the capacity of the dam to store water.

12.1.2 Other sources of data

See river and hydrology data at the end of this chapter and the list in Acknowledgements section of Chapter 1 Introduction.


12.2 Limitations

  • As in any large data set consisting of records provided by many parties over many years…

    • There are some errors and inconsistencies in the data.

    • There are a lot of missing values for some fields. Very few records have data in every field.

    • primaryPurposeId requires someone to pick one reason. Many dams were built for multiple reasons, or at least now serve multiple purposes. Views that look only at primary purpose may present a skewed view.

Show the code
dta_for_plot <- dams_no_geo |>
  slice_max(order_by = dataUpdated,
            n = 1,
            with_ties = FALSE,
            by = state_abb) |>
  mutate(days_since_last_update = as.numeric(difftime(ymd("2025-05-15"), dataUpdated, "days"))) |>
  arrange(days_since_last_update) |>
  mutate(idx = row_number()) 
  • This data set is subject to selection bias. Some state departments may be more diligent in recording information for small dams or have preferences in how categorize purpose or encode data in other fields.

  • Data freshness: While it’s not obvious how often the states provide relevant updates to the NID, it is a good sign that the most recent update occurred only 8 days prior to my download, and half the states updated at least one record in the month before I downloaded it (Figure 12.1 panel B). The longest period since update by any state is 120 days. However, we don’t know for sure that all states provide updates when there is a relevant update–-or how long information may sit in government offices before being sent to the NID. All that said, given every state provided an update within the last 120 days, it seems to me that we can be confided that the data is actively and regularly updated.

Show the code
##| column: page-right

p1 <- dta_for_plot |>
  ggplot() +
  geom_histogram(aes(days_since_last_update),
                 binwidth = 7) +
  scale_y_continuous(breaks = 0:10 * 2,
                     expand = expansion(mult = c(0, 0.04))) +
  labs(
    subtitle = "A: Histogram",
    x = "Days",
    y = "Count"
  )

p2 <- dta_for_plot |>
  ggplot() +
  stat_ecdf(aes(days_since_last_update),
            linewidth = 0.5,
            color = "steelblue") +
  scale_y_continuous(labels = label_percent(),
                     expand = expansion(mult = c(0, 0.04))) +
  labs(
    subtitle = "B: Cumulative distribution",
    x = "Days",
    y = "Percent of states in continental USA"
  )

p1 + p2 +
  plot_annotation(
    title ="States' days since last update to NID", 
    subtitle =  glue("Prior to my download on {nid_download_date}"),
    caption = my_caption
  )
Figure 12.1: NID update frequency


12.3 TODOs and questions

  • DONE: remove stuff in prepare-data.R that is no longer used

  • DONE: Decide whether to keep RMSE in ruggedness.qmd - removed it.

  • DONE: Add commentary above plots that lack it.

  • DONE: Confirm auto-dark is working OK. Including: should I stay with SVGs or move pack to PNGs? The SVGs are much bigger. I went back to cosmo theme + plots as PNGs

  • DONE: confirm “Michigan corrected” wherever surfaceArea and nidStorage are used

  • DONE: Resolve remaining “TODO’ statements in markup (not in code blocks–leave them)

  • DONE: Ensure captions have the right data sources

  • STARTED: Remove “processed” files no longer needed

  • TODO: Remove “raw” files not used

  • TODO: Push to GH

  • TODO: Render to GH Pages

12.3.1 Exclude ancillary dam features. I only want “every main dam”.

Exclude any record with a value in otherStructureID. Data exists in this field only for structures other than the main dams.

12.3.2 Exclude dikes and levees

  • DONE: Multiple dikes and levees around the same water feature all “claim” the water, inflating the nidStorage, surfaceArea, etc. See examples in Table 12.1 below. Since I’m only interested in dams, I exclude them by removing all rows of data that include “[Dd]ike” if not accompanied by “[Dd]am”. This removes about 14K rows (92K to 78K)

    filter(!(str_detect(name, "[Ddike]") & !str_detect(name, "[Dam]"))) |> # no dikes period unless with dam
    • There are other cases of duplicate accounting, for example the following:

      nidId "OH00581", # Grand Lake St. Marys - East Embankment in Ohio (duplicate surface area with West Embankment)
      nidId "WA00266" # North Dam; same surface area and nidStorage as Dry Falls Dam

12.3.3 Address other special cases creating outliers

  • DONE: Remove outliers when it makes sense do to so (especially related to nidStorage and surfaceArea).

    • The most egregious case is the modest MI00650 Soo Locks which “claims” a large portion of the water of Lake Superior as discussed in Chapter 6 Numbers.
Show the code
dams_all |>
  st_drop_geometry() |>
  slice_max(order_by = surfaceArea, n = 20) |>
  arrange(desc(surfaceArea)) |>
  select(state, name, nidId, surfaceArea, nidStorage) |>
  gt() |>
  tab_header(md("**Top 20 NID records with largest surfaceArea**")) |>
  tab_source_note(md("*Source: National Inventory of Dams. Table: Daniel Moul*")) |>
  fmt_number(columns = c(surfaceArea, nidStorage),
             decimals = 0)
Top 20 NID records with largest surfaceArea
state name nidId surfaceArea nidStorage
Michigan Soo Locks MI00650 20,255,000 277,540,000
Florida Herbert Hoover Dike - CIZ G FL36001 467,200 8,519,000
Florida Herbert Hoover Dike - CIZ A FL36001 467,200 8,519,000
Florida Herbert Hoover Dike - CIZ F FL36001 467,200 8,519,000
Florida Herbert Hoover Dike - CIZ C FL36001 467,200 8,519,000
Florida Herbert Hoover Dike - CIZ B FL36001 467,200 8,519,000
Florida Herbert Hoover Dike - CIZ D FL36001 467,200 8,519,000
Florida Herbert Hoover Dike - CIZ E FL36001 467,200 8,519,000
Arkansas Bull Shoals Dam AR00160 454,400 5,408,000
Colorado Flatiron Dam CO01654 381,500 1,136
South Dakota Oahe Dam - Fort Yates Flood Protection Project SD01095 376,000 23,600,000
South Dakota Oahe Dam SD01095 376,000 23,600,000
Minnesota Lower Red Lake Dam MN00573 288,640 3,428,000
Texas Toledo Bend Saddle Dike 2 LA00030 182,490 5,097,500
Texas Toledo Bend Saddle Dike 3 LA00030 182,490 5,097,500
Texas Toledo Bend Saddle Dike 1 LA00030 182,490 5,097,500
Louisiana Toledo Bend LA00030 182,490 5,097,500
Wisconsin Menasha Lock and Dam WI00814 173,000 2,430,000
Nevada Hoover Dam NV10122 162,700 30,237,000
Arizona Glen Canyon Dam AZ10307 160,784 25,025,826
Source: National Inventory of Dams. Table: Daniel Moul
Table 12.1: Top 20 NID records with largest surfaceArea

12.4 NID data column detais

The NID’s nation.gpkg file has more than 91K rows of data. After partial cleaning and converting appropriate columns from character to numeric type, variables can be grouped by Date, character and numeric type.

Show the code
dta_for_skimr_table <- dams_all |>
  st_drop_geometry() |>
  skimr::skim() |>
  select(-c(character.empty, character.whitespace)) |>
  mutate(idx = row_number()) |>
  relocate(idx)

dta_for_skimr_table |>
  select(idx:complete_rate, starts_with("Date")) |>
  filter(skim_type == "Date") |>
  gt() |>
  tab_options(table.font.size = 10) |>
  tab_header(md("**Date data in the `dams_all` dataframe**")) |>
  fmt_number(columns = c(n_missing, starts_with(c("numeric", "character"))),
             decimals = 0) |>
  fmt_percent(columns = complete_rate,
              decimals = 0) |>
  sub_missing()
Date data in the dams_all dataframe
idx skim_type skim_variable n_missing complete_rate Date.min Date.max Date.median Date.n_unique
1 Date dataUpdated 1 100% 2015-09-30 2025-05-07 2023-07-06 432
2 Date inspectionDate 34,562 63% 1901-01-01 5023-05-25 2019-07-25 7694
3 Date conditionAssessDate 52,375 43% 1965-01-01 2031-06-30 2020-04-22 4435
4 Date eapLastRevDate 74,847 19% 1960-01-17 2025-12-30 2019-06-11 4342
5 Date operationalStatusDate 75,906 18% 1991-06-10 2025-04-29 2022-05-21 1043
Show the code
dta_for_skimr_table |>
  select(idx:complete_rate, starts_with("character")) |>
  filter(skim_type == "character") |>
  gt() |>
  tab_options(table.font.size = 10) |>
  tab_header(md("**Character data in the `dams_all` dataframe**")) |>
  fmt_number(columns = c(n_missing, starts_with(c("numeric", "character"))),
             decimals = 0) |>
  fmt_percent(columns = complete_rate,
              decimals = 0) |>
  sub_missing()
Character data in the dams_all dataframe
idx skim_type skim_variable n_missing complete_rate character.min character.max character.n_unique
6 character name 4,326 95% 1 78 77,549
7 character otherNames 66,025 28% 1 108 23,607
8 character formerNames 82,255 11% 1 152 7,865
9 character nidId 1 100% 7 8 91,498
10 character otherStructureId 91,308 1% 1 23 25
11 character federalId 0 100% 7 12 92,245
12 character ownerNames 7,291 92% 1 586 53,242
13 character ownerTypeIds 9 100% 5 90 26
14 character primaryOwnerTypeId 10 100% 5 17 7
15 character separateStructuresCount 4,028 96% 1 2 15
16 character isAssociatedStructureId 0 100% 2 3 2
17 character designerNames 45,176 51% 1 197 6,531
18 character nonFederalDamOnFederalId 13,556 85% 2 3 2
19 character primaryPurposeId 5,783 94% 5 42 12
20 character purposeIds 5,780 94% 5 153 572
21 character sourceAgency 1 100% 4 43 69
22 character stateFedId 26,456 71% 1 17 63,066
23 character state 0 100% 4 14 52
24 character county 28 100% 3 33 1,793
25 character countyState 33 100% 9 41 3,045
26 character city 27,520 70% 1 93 17,128
27 character riverName 9,001 90% 1 137 34,671
28 character congDist 38 100% 31 41 423
29 character stateRegulatedId 0 100% 2 3 2
30 character jurisdictionAuthorityId 1,205 99% 2 3 2
31 character stateRegulatoryAgency 19,842 78% 1 52 101
32 character permittingAuthorityId 558 99% 2 3 2
33 character inspectionAuthorityId 558 99% 2 3 2
34 character enforcementAuthorityId 559 99% 2 3 2
35 character fedRegulatedId 0 100% 2 3 2
36 character fedOwnerIds 89,383 3% 7 43 18
37 character fedFundingIds 77,980 15% 7 53 17
38 character fedDesignIds 65,092 29% 7 102 30
39 character fedConstructionIds 78,167 15% 7 53 21
40 character fedRegulatoryIds 87,307 5% 7 63 20
41 character fedInspectionIds 75,637 18% 7 75 24
42 character fedOperationIds 89,460 3% 7 53 18
43 character fedOtherIds 90,939 1% 7 41 11
44 character secretaryAgricultureBuiltId 668 99% 2 3 2
45 character nrcsWatershedAuthorizationId 1,946 98% 3 73 5
46 character primaryDamTypeId 7,828 92% 4 25 12
47 character damTypeIds 7,287 92% 4 46 271
48 character coreTypeIds 46,798 49% 5 135 24
49 character foundationTypeIds 47,392 49% 4 21 7
50 character nidHeightId 0 100% 10 21 5
51 character yearCompletedId 0 100% 9 12 13
52 character yearsModified 85,560 7% 2 66 1,208
53 character spillwayTypeId 35,799 61% 4 12 3
54 character spillwayWidth 46,522 50% 1 18 1,452
55 character outletGateTypes 52,817 43% 4 87 541
56 character inspectionFrequency 34,196 63% 1 3 15
57 character hazardId 0 100% 3 12 4
58 character conditionAssessId 17,811 81% 4 14 6
59 character eapId 58 100% 2 12 3
60 character websiteUrl 17 100% 19 115 274
61 character usaceDivision 19 100% 21 40 9
62 character usaceDistrict 19 100% 14 40 39
63 character operationalStatusId 75,893 18% 14 68 5
64 character inundationNidAddedId 1 100% 2 3 3
65 character huc2 36 100% 2 2 22
66 character huc4 36 100% 4 4 215
67 character huc6 36 100% 6 6 353
68 character huc8 36 100% 8 8 2,018
69 character zipcode 1,734 98% 5 5 16,771
70 character nation 0 100% 3 3 1
71 character stateKey 0 100% 2 2 52
72 character femaRegion 20 100% 1 2 10
73 character femaCommunity 42 100% 4 63 9,241
74 character aiannh 86,573 6% 8 74 156
Show the code
dta_for_skimr_table |>
  select(idx:complete_rate, starts_with("numeric")) |>
  filter(skim_type == "numeric") |>
  gt() |>
  tab_options(table.font.size = 10) |>
  tab_header(md("**Numeric data in the `dams_all` dataframe after converting sutable data columns to numeric type**")) |>
  fmt_number(columns = c(n_missing, starts_with(c("numeric", "character"))),
             decimals = 0) |>
  fmt_percent(columns = complete_rate,
              decimals = 0) |>
  sub_missing()
Numeric data in the dams_all dataframe after converting sutable data columns to numeric type
idx skim_type skim_variable n_missing complete_rate numeric.mean numeric.sd numeric.p0 numeric.p25 numeric.p50 numeric.p75 numeric.p100 numeric.hist
75 numeric latitude 2 100% 38 5 13 34 38 41 71 ▁▆▇▁▁
76 numeric longitude 2 100% −92 12 −177 −98 −92 −84 145 ▁▇▁▁▁
77 numeric distance 50,650 45% 11 18 0 2 6 14 2,005 ▇▁▁▁▁
78 numeric damHeight 10,006 89% 28 27 1 16 24 31 789 ▇▁▁▁▁
79 numeric hydraulicHeight 37,754 59% 27 26 1 15 22 30 776 ▇▁▁▁▁
80 numeric structuralHeight 40,050 57% 30 29 1 18 25 33 770 ▇▁▁▁▁
81 numeric nidHeight 497 99% 29 28 1 16 24 32 789 ▇▁▁▁▁
82 numeric damLength 14,667 84% 1,069 3,229 1 334 534 926 470,610 ▇▁▁▁▁
83 numeric volume 65,823 29% 256,545 2,295,080 1 10,400 20,000 55,142 125,628,000 ▇▁▁▁▁
84 numeric yearCompleted 18,776 80% 1,961 29 1,637 1,952 1,965 1,976 2,024 ▁▁▁▂▇
85 numeric nidStorage 1,268 99% 15,629 958,431 0 70 135 427 277,540,000 ▇▁▁▁▁
86 numeric maxStorage 3,380 96% 15,748 969,660 0 70 135 423 277,540,000 ▇▁▁▁▁
87 numeric normalStorage 9,403 90% 11,550 985,247 −48 36 67 176 277,540,000 ▇▁▁▁▁
88 numeric surfaceArea 21,394 77% 669 76,378 0 6 12 31 20,255,000 ▇▁▁▁▁
89 numeric drainageArea 35,227 62% 685 36,015 0 0 2 18 8,300,000 ▇▁▁▁▁
90 numeric maxDischarge 50,041 46% 9,150 61,533 0 194 634 2,100 3,707,516 ▇▁▁▁▁
91 numeric numberOfLocks 92,049 0% 1 1 1 1 1 1 5 ▇▂▁▁▁
92 numeric lengthOfLocks 92,052 0% 574 278 35 400 600 600 1,200 ▂▂▇▁▂
93 numeric widthOfLocks 92,059 0% 88 27 16 65 110 110 110 ▁▂▂▃▇
94 numeric secondaryLengthOfLocks 92,244 0% 600 600 600 600 600 600 ▁▁▇▁▁
95 numeric secondaryWidthOfLocks 92,244 0% 110 110 110 110 110 110 ▁▁▇▁▁


12.4.1 Dams working set

I did further cleaning to arrive at a working data set called dams

Show the code
dams |>
  # select(idx:complete_rate, starts_with("numeric")) |>
  # filter(skim_type == "numeric") |>
  st_drop_geometry() |>
  skimr::skim() |>
  arrange(skim_type, skim_variable) |>
  mutate(idx = row_number()) |>
  relocate(idx) |>
  gt() |>
  tab_options(table.font.size = 10) |>
  tab_header(md("**`Dams` working data set**")) |>
  fmt_number(columns = c(n_missing, starts_with(c("numeric", "character"))),
             decimals = 0) |>
  fmt_percent(columns = complete_rate,
              decimals = 0) |>
  sub_missing()
Dams working data set
idx skim_type skim_variable n_missing complete_rate Date.min Date.max Date.median Date.n_unique character.min character.max character.empty character.n_unique character.whitespace factor.ordered factor.n_unique factor.top_counts logical.mean logical.count numeric.mean numeric.sd numeric.p0 numeric.p25 numeric.p50 numeric.p75 numeric.p100 numeric.hist
1 Date conditionAssessDate 47,569 45% 1965-01-01 2031-06-30 2020-03-17 4418
2 Date dataUpdated 1 100% 2015-09-30 2025-05-07 2023-05-31 401
3 Date eapLastRevDate 70,150 19% 1960-01-17 2025-12-30 2019-04-23 4285
4 Date inspectionDate 30,458 65% 1901-01-01 5023-05-25 2019-07-02 7561
5 character coreTypeIds 45,901 47% 5 135 0 24 0
6 character county 25 100% 3 17 0 1,740 0
7 character damTypeIds 4,060 95% 4 46 0 268 0
8 character federalId 0 100% 7 11 0 86,351 0
9 character formerNames 76,481 11% 1 152 0 7,761 0
10 character foundationTypeIds 46,481 46% 4 21 0 7 0
11 character inspectionFrequency 29,802 65% 1 3 0 15 0
12 character name 0 100% 1 76 0 75,995 0
13 character nidId 0 100% 7 8 0 86,351 0
14 character otherNames 64,638 25% 1 108 0 19,435 0
15 character ownerNames 7,216 92% 1 586 0 49,305 0
16 character ownerTypeIds 9 100% 5 90 0 25 0
17 character primaryDamTypeId 0 100% 4 25 0 12 0
18 character primaryOwnerTypeId 0 100% 5 22 0 7 0
19 character primaryPurposeId 0 100% 8 42 0 12 0
20 character purposeIds 4,007 95% 5 153 0 561 0
21 character riverName 8,691 90% 1 137 0 33,676 0
22 character state 0 100% 4 14 0 48 0
23 character state_abb 0 100% 2 2 0 48 0
24 character websiteUrl 2 100% 19 115 0 271 0
25 character yearCompletedId 0 100% 9 12 0 13 0
26 character yearsModified 79,829 8% 2 66 0 1,201 0
27 factor conditionAssessId 0 100% FALSE 5 Mis: 53624, Sat: 12307, Fai: 12079, Poo: 7348
28 factor eapId 0 100% FALSE 4 Not: 53434, Yes: 18187, No: 14674, Mis: 56
29 factor hazardId 0 100% FALSE 4 Low: 55567, Hig: 15879, Sig: 11086, Und: 3819
30 factor nidHeightId 0 100% FALSE 5 Les: 43017, 25-: 36295, 51-: 5023, Gre: 1526
31 factor state_div 0 100% FALSE 9 Wes: 19107, Sou: 16089, Wes: 14208, Eas: 10600
32 factor state_region 0 100% FALSE 4 Sou: 40897, Nor: 25179, Wes: 11950, Nor: 8325
33 logical big_dam 490 99% 0.01777291 FAL: 84335, TRU: 1526
34 numeric damHeight 9,834 89% 28 28 1 16 24 31 789 ▇▁▁▁▁
35 numeric damLength 13,953 84% 1,046 3,000 1 325 530 940 470,610 ▇▁▁▁▁
36 numeric drainageArea 31,477 64% 628 36,481 0 0 2 19 8,300,000 ▇▁▁▁▁
37 numeric hydraulicHeight 36,746 57% 27 27 1 15 22 30 776 ▇▁▁▁▁
38 numeric latitude 0 100% 38 5 25 34 38 41 49 ▁▇▇▇▃
39 numeric longitude 0 100% −92 11 −125 −98 −92 −83 −67 ▁▂▇▇▂
40 numeric maxDischarge 47,251 45% 8,972 60,494 0 180 660 2,200 3,707,516 ▇▁▁▁▁
41 numeric maxStorage 3,175 96% 12,561 989,053 0 72 140 435 277,540,000 ▇▁▁▁▁
42 numeric nidHeight 490 99% 29 28 1 16 24 32 789 ▇▁▁▁▁
43 numeric nidStorage 1,145 99% 12,435 977,268 0 72 140 437 277,540,000 ▇▁▁▁▁
44 numeric normalStorage 9,028 90% 9,523 1,012,938 −48 37 70 180 277,540,000 ▇▁▁▁▁
45 numeric state_area 0 100% 80,266 63,825 1,214 47,716 58,876 82,264 267,339 ▆▇▁▁▂
46 numeric structuralHeight 39,077 55% 30 29 1 18 25 33 770 ▇▁▁▁▁
47 numeric surfaceArea 17,764 79% 561 77,449 0 6 12 30 20,255,000 ▇▁▁▁▁
48 numeric volume 63,251 27% 268,114 2,316,641 1 11,300 22,876 62,237 125,628,000 ▇▁▁▁▁
49 numeric yearCompleted 17,048 80% 1,961 29 1,637 1,952 1,965 1,977 2,024 ▁▁▁▂▇


12.4.2 NID data I chose not to use

The NID data includes damLength, however I don’t use it due to the variable nature of what it includes:

  • damLength: Length of the dam, in feet, which is defined as the length along the top of the dam. This also includes the spillway, powerplant, navigation lock, fish pass, etc., where these form part of the length of the dam. If detached from the dam, these structures should not be included.

Nor do I use volume, since in the NID this refers to the volume of the dam, not the water behind the dam:

  • volume: The total space occupied by the materials forming the dam structure computed between abutments and from top to bottom of dam. No deduction is made for small openings such as galleries, adits, tunnels, and operating chambers within the dam structure. Portions of powerplants, locks, spillway, etc., should be included only if they are necessary for the structural stability of the dam.

12.5 River shapefiles available from the NWS

https://www.weather.gov/gis/Rivers

Source: National Weather Service National Operational Hydrologic Remote Sensing Center https://www.nohrsc.noaa.gov/gisdatasets/ The NOHRSC provides and maintains the NWS Integrated Hydrologic Automated Basin Boundary System (IHABBS) GIS database to support river and flood forecasting throughout the nation. Basin boundary data sets and RFC boundaries are provided here in shapefiles that have been tarred and gzipped.

12.6 National Hydrology Dataset - USGS

This provides the detailed stream-level data for the area around Bad River, SD. –Daniel

USGS National Hydrology Database

NHDFlowline FType (Feature type)

  • 460: StreamRiver
  • 336 CanalDitch

NHDArea FType

  • 460: StreamRiver
  • 336” CanalDitch
  • 343: DamWeir
  • 484 Wash (dry portion of stream bed that contains water only during/after rainfall)

NHDWaterbody FType

  • 390: LakePond
  • 436: Reservoir

I downloaded South Dakota state-level data from