On How Many Days Did It Rain?

Calculating Raining Days for Use with OpenNSPECT

I am frequently asked by users how to calculate the “Raining Days” parameter, which is required by OpenNSPECT to calculate annual rainfall runoff from an area. The concept of “Raining Days” initially seems quite simple: the number of days on which it rained. However, on many days it may rain only a few hundredths of an inch; on some days it may rain more than that, but less than one inch; and on a few days, it may rain several inches in a day. Do all of these count as raining days?

OpenNSPECT is a free, open-source GIS tool that helps users estimate the impacts on local water quality of potential management decisions, climate change, or other land cover change events. For OpenNSPECT, what we really need to use as a definition of a “raining day” is: a day on which there was enough rain to produce runoff. In order to calculate that, we need to answer two questions: “How much rain does it take to begin getting runoff?” and “On how many days did we get at least that much rain?” Let’s work through an example of answering these questions for an area near Sheboygan, Wisconsin.

How Much Rain Is Needed to Begin Getting Runoff?

Before any surface runoff occurs during a rainfall event, some of that water is taken up by the vegetation and lost as evaporation and transpiration and some of it percolates into the soil. Therefore the amount of rainfall needed to produce surface runoff in an area depends on a large part on two factors: the imperviousness of the soil in the area and the vegetation covering that soil. OpenNSPECT uses the Soil Conservation Service Curve Number method (USDA, 1986) for calculating runoff. In this method, there is a parameter, the initial abstraction, Ia, that represents all losses before runoff begins. The initial abstraction depends on the Curve Number for an area, which we can find. Therefore, we can calculate the initial abstraction and use that as the answer to our “How much rain is needed?” question.

The SCS Curve Number method uses a Curve Number, CN, which is the proportion of precipitation that runs off that area, e.g., for an area with a CN = 84, 84% of the rainfall on that area runs off. Curve numbers, in turn, depend on the land cover and the Hydrologic Soils Group for a particular soil, which is a rough measure of imperviousness. For the United States, we can use soils data from the US Department of Agriculture/Natural Resources Conservation Service. You can get soils data from custom-shaped areas less than 100,000 acres from the Web Soil Survey or download by county boundaries through the Geospatial Data Gateway.

[OpenNSPECT specific aside: CNs are typically given over the range of 0 to 100, however, for OpenNSPECT, we scale them from 0 to 1.0. At one point, that saved us some time in behind-the-scenes calculations, now we are stuck with that convention in our database. Be sure to mentally adjust as you use CN values from OpenNSPECT’s data files.]

Before proceeding onto the following steps, I downloaded the soils data for Sheboygan County, WI and some C-CAP land cover data for the area. I also defined my area of interest by drawing a small polygon around a watershed.

1. Look at the Hydrologic Soils Groups for the soils in your area. See if one soil group predominates. For our sample area near Sheboygan, it looks Hydrologic Soils Group C is the most common (Figure 1).

Figure 1: Hydrologic Soils Groups for area of interest in Sheboygan County, Wisconsin, USA.
Figure 1: Hydrologic Soils Groups for area of interest in Sheboygan County, Wisconsin, USA.

2. Look at the land cover classes in your area. This is easiest to do if you clip your land cover to your area of interest. See if only a few dominate. Again, for our test area, we have a couple of dominant groups: approximately 80% of the land is classified as cultivated lands and pasture (Figures 2, 3).

Figure 2: Land cover in Area of interest and table from Identify tool.
Figure 2: Land cover in Area of interest and table from Identify tool.
Figure 3: Histogram of land cover generated using the Grid Analysis Tools in MapWindow. See Figure 2 for color key.
Figure 3: Histogram of land cover generated using the Grid Analysis Tools in MapWindow. See Figure 2 for color key.

3. Since there is not too much variability, we could just use the dominant land cover/hydrologic group combination to get your curve number. In our sample case, we could just pick the soils type CN-C value (See Figure 4) for Cultivated or Pasture/Hay: either 0.85 or 0.74, or even just average the two, 0.805.

Figure 4: Curve Numbers by land cover type.
Figure 4: Curve Numbers by land cover type.

4. If we want to account for the entire range of land covers in our area, then we can do a weighted average of curve numbers to get an average CN. Here I’ve taken the distribution of land cover classes by using the Identify tool and selecting the entire raster, see Figure 1. Then I copied the Identify results to the clipboard and pasted them into a spreadsheet program. After cleaning it up and copying the Land Cover Curve Number values for Hydrologic Class C used in OpenNSPECT (see Figure 4, also found in C:NSPECTcoefficientsccap2001landcover_ccap2001.txt), I was able to calculate a weighted average Curve Number as shown in Figure 5.

Figure 5. Spreadsheet showing cell counts in our area, curve numbers and the average weighted curve number and Initial Abstraction.
Figure 5. Spreadsheet showing cell counts in our area, curve numbers and the average weighted curve number and Initial Abstraction.

Here, the weighted average of 0.67 includes the water classes, which doesn’t make sense (there is no runoff from them), so the lower blue line gives the weighted averages without the water classes: CN = 0.793 or 79.3 in the usual way of expressing a Curve Number.

5. Once we have an average CN, we can calculate the Initial Abstraction, which is the amount of precipitation that must fall before runoff begins. From Equations 2-2 and 2-4 in TR-55 (USDA, 1986), Ia is given by:

Ia = 0.2 * ((1000/CN) – 10) where,

Ia = runoff in inches,
CN = SCS Curve Number, scaled 0 to 100,
0.2 = an empirically derived constant*.

[*Note that 0.2 is a common approximation. Recent literature (Hawkins et al., 2002) indicates that values closer to 0.05 may be more accurate. The important thing is to know this is an approximation and, if it worries you, test how sensitive your final results are to it.]

Using this equation, we find that Ia = 0.522, meaning that we will get runoff from our area, on average, for rainfall events when there is slightly more than one-half inch of rainfall. Now we need to find out how many days had at least that much rain.

On How Many Days Did It Rain At Least X Inches?

Calculating the number of days with rainfall above a target threshold is pretty straight forward.  Data from the National Climatic Data Center shows there to be an inverse logarithmic relationship between the number of days with precipitation above a given amount and that amount:

Number of days = -a ln(Rainfall amount) + b

where a and b are constants for any particular area.  They can readily be calculated from data available through the National Climatic Data Center.

To calculate coefficients for your location:

6. Get climate data for that location. You want the “NORMALS – Monthly” product from the Climate Data Online site.  Even though it is labeled as monthly data, this data set also has annual data in it, which is what we really need, so it is a very good resource. We can also look at it to see if there are any seasonal patterns to consider.

7. Use the Map or Search tool to select data for your area. If there are several stations nearby, you can pick multiple stations. The data is free and will be delivered as PDF files, so it might be worth looking at surrounding stations. Get the data by clicking the link in the email sent to you by NCDC, or following any other needed instructions.

8.  Open the PDF, and go to Page 2:  There will be monthly values for the mean number of days with precipitation above a certain level. The bottom line, labeled Summary, is the total annual mean number of days with precipitation above a certain threshold. Figure 6 shows a section of the page for the Sheboygan, WI station. You can see that annually (highlighted in blue) there was an average of 32.66 inches of rain per year and that there were many days with a little rainfall and a few days with a lot of rainfall.  Let’s use this information to calculate how many days had more than 0.522 inches of rainfall, on average.

Figure 6. Monthly Precipitation Normals (1981 - 2010) report for Sheboygan Wisconsin.
Figure 6. Monthly Precipitation Normals (1981 – 2010) report for Sheboygan Wisconsin.

9. Open your favorite spreadsheet program and enter two columns of data: one of the Daily Precipitation thresholds and the other of the number of days at each level. Plotting the data reveals it to appear to have a pretty strong logarithmic relationship, Figure 7.

Figure 7. Thirty-year normals plotted and data values (inset.)
Figure 7. Thirty-year normals plotted and data values (inset.)

10. Using the functions of your spreadsheet program (or any other technique you care to use), find the regression of the Number of Days vs. the Precipitation Threshold, Figure 8. Do this for a logarithmic fit. I used LibreOffice Calc as a spreadsheet program and did this regression as part of its “Insert a Trend Line” analysis, including showing the equation and R2 value. Microsoft Office Excel will do the same, I believe.

Figure 8. Raining Days as function of precipitation, with regression line.
Figure 8. Raining Days as function of precipitation, with regression line.

11. Now we have an equation to calculate the number of days of rainfall exceeding any given rainfall amount:

Number of Days = 25.79 * ln(rainfall amount) + 5.616

This is our raining days equation.

Putting It (Almost) All Together

Now we just need to plug our value for how much rainfall is needed to produce runoff, 0.522 inches, into the raining days equation from step 11.

Number of raining days = -25.79 * ln (0.522) + 5.562.

Doing the math gives Raining Days = 22.4, or, you might use 23, since raining days should be an integer– if it rained part of a day, it rained that day.

What does all this mean?  It means that given the distribution of the 30-year average rainfall for our test location, rainfall will produce runoff over our target area of interest on 23 days.

One last step

But wait! There is one more not-so-subtle adjustment to the value in Figure 6 for the total annual rainfall of 32.66” that needs to be made. Notice that we don’t actually care about how much of that fell as anything below 0.5” of rain. It won’t produce runoff. As a quick, but reasonable, adjustment, we know that of the 69.8 days with rainfall above 0.1”, there were only 20.1 that exceeded 0.5 inches. If we assume the remaining 50 days (yes I rounded) averaged 0.2” of rain, that is 10 inches of rainfall where we know there was no runoff. Similarly, there were about 52 days with rainfall above 0.01” but less than 0.1” (122.5 – 69.8). If we assume an average rainfall amount of 0.02, that is approximately 1 inch of additional rainfall that doesn’t produce runoff. Therefore, we should adjust our total annual rainfall down by a total of 11 inches, or 21.66 inches. Given our last set of corrections, I would just round this to 22 inches to avoid appearing more precise than is warranted.

Therefore, we’ve now used our actual land cover, soils, and climate data to establish that, for this sample area, an annual rainfall event would be 22 inches of rainfall over 23 raining days. That is all you need for an annual analysis! Now give it a try for your area!

Teaser: Hey, there is some seasonal information in the table in Figure 6 as well. What about including that? That will be covered in the next OpenNSPECT blog entry.


Hawkins, R.H.; Jiang, R.; Woodward, D.E.; Hjelmfelt, A.T.; Van Mullem, J.A. (2002). “Runoff Curve Number Method: Examination of the Initial Abstraction Ratio.” Proceedings of the Second Federal Interagency Hydrologic Modeling Conference, Las Vegas, Nevada (U.S. Geological Survey). Retrieved 10 April, 2014. Link: http://onlinelibrary.wiley.com/doi/10.1111/j.1752-1688.2006.tb04481.x/abstract

USDA 1986. Urban Hydrology for Small Watersheds, Technical Release 55. USDA, Natural Resources Conservation Services. Retrieved 10 April, 2014, FTP link: ftp://ftp.wcc.nrcs.usda.gov/wntsc/H&H/other/TR55documentation.pdf

Leave a Reply. Comments are moderated.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.