
.
Rainplot Instructions - Create Reports
_________________________________________________________________________________________
Topics
- Select a dataset (choose station
and date range and retrieve from your "rainfall" database)
- Quality control the dataset
- Analyze the dataset (fit
data to probability distributions and generate IDF curves)
- Create reports (generate automated reports of your analyses)
- Show summaries (show mean monthly,
mean annual, and other summaries statistics)
- Display data on map
_________________________________________________________________________________________
The RAINPLOT software allows you to generate a variety of pre-formatted,
automated rainfall-intensity reports.
Start by selecting a directory on your hard drive that will store the
reports that you will be generating. To do this click 'Edit Hydrologic
Default Settings'. .

Use the directory tree to select a default directory in which your reports
will be saved. When you have selected a directory click 'Save Settings',
then click 'Return to Main Menu'. The folder you selected will
now automatically receive all report files that you generate, including
the html report files and the corresponding jpg plot files. This will
allow you to retrieve and view your reports at a later date. You may use
Windows Explorer to rename these files as they are created and saved.
This will help you organize those reports that you may wish to print again
at a later time. You may also use Windows Explorer to delete any files
that you will not need again. Note: Report files will accumulate in your
directory unless you manually delete them.
To view a previously created report, click 'Load a Previously Created
Report'.

This will open a window that allows you to select a stored report file
from the directory on your hard drive that you set as the default location
for your reports.
.To open an existing report, locate the report file in the folder, select
the file, and click 'Open'. The report will be displayed in your
internet browser.
To create a new report click the 'Create Report' button on the
main menu.

The report menu will open.

The following reports may be generated by clicking the corresponding
button on the report menu.
Annual Rainfall Summary

The Annual Rainfall Summary Report is a report showing the total depth
of rainfall for each year of record. A plot may be displayed for annual
data collected by a recorder (digitized data that have been summed for
the year). In addition, a plot may be displayed for data collected at
a daily (manual) gage. As the default, annualized recorder data are automatically
displayed when the report is opened.

To display a plot of annualized daily gage data, select a manual gage
from the 'Manual Gage' pull down list at the bottom of the screen, then
click 'Display Gage Data'. The spreadsheet in the top left of the
screen will be populated with manual gage data, in addition to the digitized
data, and the plot will show both sets of data on the same graph.

Several plot options exist. You may order the data by any of the columns
by clicking on the column and clicking the 'Sort' button. Both
the spreadsheet and the plot will reflect this sort order. You may also
right-click inside the spreadsheet to hide or show the data for the year
in which the cursor is placed. The summary statistics at the bottom of
the spreadsheet will be recomputed on the basis of the removed value.
________________________________________________________________________________________________________
Note: A feature common to all reports is the ability to control
the look and feel of the output. Right clicking anywhere on the plot will
bring up a Graph Control Dialog which will allow you to change a large
number of report options including the graph type, labels, fonts, axes,
legend, and many others.
Another feature common to all reports is the ability to display
a printable report in html (internet browser) format. This format is widely
compatible with most computers. To display the printable report click
the 'Display Report' button on any of the reports in RAINPLOT.
The report also may be opened in any word processor (such as MS Word)
for editing; simply make a note of the file name in the address bar of
the browser. The report also may be published to a web site by moving
the file to a web server.
_______________________________________________________________________________________________________
Volume vs Intensity
The Intensity Range Report shows the total depth, % of total depth, accumulated
depth %, duration, % of total duration, and accumulated duration % for
each defined intensity range displayed in the first two columns of the
spreadsheet. Any of the depth and duration columns (the last 6 columns
of the speadsheet) can be plotted simply by highlighting the column and
clicking the 'Plot Column' button.
You also have the option of displaying the graph in a "mixed interval"
format (a skewed x-axis) or a "uniform 1-minute" format. Make
your selection by clicking a button inside the 'Select Interval Option'
in the upper right part of the window.
Diurnal Variation
The Diurnal Variation Report displays the rainfall patterns and intensities
based on the time of day. To build a report you must a) select a time
period to analyze (a month or an entire year), b) select an intensity
threshold above or below which you wish to plot, and c) whether you wish
to calculate rainfall intensity greater than or less than your selected
threshold intensity. After these parameters are selected click 'Populate
Data' to generate a graph of the data.
You may select additional data sets by entering additional data requirements
and clicking 'Populate Data'. The additional plots will appear,
superimposed, on the plot display as shown below.

To reset the plot display click 'Clear Data'. To plot the data
as a percentageof rainfall depth click 'Plot Percent'. To change
the plot back to'Depth versus Time of Day' click 'Plot Volume'.
Depth for Various Intensity Ranges

The Depth for Various Intensity Ranges Report allows you to plot, for
the largest X storms, the depth of rainfall associated with various intensity
ranges. The highest X storms are selected based on those events with rainfall
intensity greater than 10 mm/hr. The largest X storms are generated as
an annual series (one highest storm per year) or as a partial series (using
cutoff threshold values or using a selected number of storms). For example,
if the spreadsheet is generated using an annual series, then the top storm
for each year is selected, corresponding to the storm that has the greatest
depth at a 10 mm/hr intensity, and this storm will be used as the "select"
storm to compute the depths associated with the various intensity-ranges.
This report routine will calculate and plot the total depth accumulated
at intensities above the levels of 5 mm/hr, 10 mm/hr, 15 mm/hr, 20 mm/hr,
30 mm/hr, and 50 mm/hr for the "select" storms.
To populate the spreadsheet with data select either 'Use Partial by
Number', 'Use Annual Series', or 'Use Partial by Cutoff',
then click 'Populate Records'.
The selected data may be fit to various probability distributions according
to a single column (a single duration) or according to the entire spreadsheet
of data (multiple durations). Refer to the section titled 'Analyze
Dataset' for a description of these statistical analysis options.
To remove a column of data from the plot or to order the data according
to a selected column, click the 'Remove Column' or the 'Sort
on Column' button, respectively.
The code used for the 'Use Partial by Cutoff' selection is shown below.
Public Sub populateVolume_Above_Intensity(n_records As Integer, Optional opn As Integer = 1, Optional cutoff As Single = 10)
' opn = 1 use top N_Records
' opn = 2 use Annual Series
' opn = 3 use Partial Cutoff
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim n As Integer
Dim min_index As Integer
Dim min_value As Single
Dim year_found As Boolean
Dim year_index As Integer
Dim c_date As Date
Dim l_date As Date
Dim intensity As Single
Dim duration As Single
Dim volume As Single
Dim vai(500) As Rainfall_Stats.tVolume_Above_Intensity
get_RainplotRecords
' The objective here is to parse each day
'
i = 1: j = 1
For k = 1 To nRP
' Calculate intensity for current date
c_date = rp(k).start_time
duration = rp(k).end_time - rp(k).start_time
volume = rp(k).depth
If duration <> 0 Then
intensity = volume / duration
Else
intensity = 0
End If
'vai(0) hold the current record
' If we are still on the same date
If (day(c_date) = day(l_date) And month(c_date) = month(l_date) And year(c_date) = year(l_date)) Or k = 1 Then
vai(0).date = c_date
vai(0).year = year(c_date)
vai(0).total = vai(0).total + volume
If intensity > 5 Then vai(0).volume_5 = vai(0).volume_5 + volume
If intensity > 10 Then vai(0).volume_10 = vai(0).volume_10 + volume
If intensity > 15 Then vai(0).volume_15 = vai(0).volume_15 + volume
If intensity > 20 Then vai(0).volume_20 = vai(0).volume_20 + volume
If intensity > 30 Then vai(0).volume_30 = vai(0).volume_30 + volume
If intensity > 50 Then vai(0).volume_50 = vai(0).volume_50 + volume
Else ' New day
Select Case opn
Case 1 ' Partial series where to n_records are used
' If fewer records than the current record than the
' target number, increment the counter
If i < n_records Then
i = i + 1 ' increment counter
j = i ' we will use j for new record
Else
' This is kind of like a BubbleSort - only we are keeping the highest
' n_records number of records
' First look at the old records and decide if we are going to keep
' the record or discard it
' Count how many records are HIGHER than the current record
' j is the current record
' i is the total number of used records
' l is just a counter loop variable
min_value = vai(0).volume_10: min_index = 0
For l = 1 To i
' If there are any records below the min record, set min record to
If vai(l).volume_10 < min_value Then
min_value = vai(l).volume_10
min_index = l
End If
Next l
j = min_index ' We replace the minimum with the current record set
' if the current record set is not > any of the existing
If min_index <> 0 Then
vai(j).day = vai(0).day
vai(j).month = vai(0).month
vai(j).year = vai(0).year
vai(j).total = vai(0).total
vai(j).volume_5 = vai(0).volume_5
vai(j).volume_10 = vai(0).volume_10
vai(j).volume_15 = vai(0).volume_15
vai(j).volume_20 = vai(0).volume_20
vai(j).volume_30 = vai(0).volume_30
vai(j).volume_50 = vai(0).volume_50
End If
End If
Case 2 ' Annual series n_records is used to pass back the number of years
year_found = False
For j = 1 To i
If vai(0).year = vai(j).year And vai(0).year <> 0 Then
year_found = True
year_index = j
End If
Next j
If year_found Then
If vai(0).volume_10 > vai(year_index).volume_10 Then
j = year_index
vai(j).day = vai(0).day
vai(j).month = vai(0).month
vai(j).year = vai(0).year
vai(j).total = vai(0).total
vai(j).volume_5 = vai(0).volume_5
vai(j).volume_10 = vai(0).volume_10
vai(j).volume_15 = vai(0).volume_15
vai(j).volume_20 = vai(0).volume_20
vai(j).volume_30 = vai(0).volume_30
vai(j).volume_50 = vai(0).volume_50
End If
Else ' New Year
vai(i).day = vai(0).day
vai(i).month = vai(0).month
vai(i).year = vai(0).year
vai(i).total = vai(0).total
vai(i).volume_5 = vai(0).volume_5
vai(i).volume_10 = vai(0).volume_10
vai(i).volume_15 = vai(0).volume_15
vai(i).volume_20 = vai(0).volume_20
vai(i).volume_30 = vai(0).volume_30
vai(i).volume_50 = vai(0).volume_50
i = i + 1
End If
Case 3 ' Partial series where a cutoff value is used
If vai(0).volume_10 > cutoff Then
vai(i).day = vai(0).day
vai(i).month = vai(0).month
vai(i).year = vai(0).year
vai(i).total = vai(0).total
vai(i).volume_5 = vai(0).volume_5
vai(i).volume_10 = vai(0).volume_10
vai(i).volume_15 = vai(0).volume_15
vai(i).volume_20 = vai(0).volume_20
vai(i).volume_30 = vai(0).volume_30
vai(i).volume_50 = vai(0).volume_50
i = i + 1
End If
End Select
' Starting up the new point - store in slot 0
vai(0).date = c_date
vai(0).day = day(c_date): vai(0).month = month(c_date): vai(0).year = year(c_date)
vai(0).total = volume
If intensity > 5 Then vai(0).volume_5 = volume Else vai(0).volume_5 = 0
If intensity > 10 Then vai(0).volume_10 = volume Else vai(0).volume_10 = 0
If intensity > 15 Then vai(0).volume_15 = volume Else vai(0).volume_15 = 0
If intensity > 20 Then vai(0).volume_20 = volume Else vai(0).volume_20 = 0
If intensity > 30 Then vai(0).volume_30 = volume Else vai(0).volume_30 = 0
If intensity > 50 Then vai(0).volume_50 = volume Else vai(0).volume_50 = 0
End If
l_date = c_date
'If i = UBound(vai) Then Exit Do
Next k
Select Case opn
Case 1: n = i
Case 2 To 3: n = i - 1
End Select
i = Rainfall_Stats.delete_Volume_Above_IntensityData
i = Rainfall_Stats.write_Volume_Above_IntensityData(n, vai())
End Sub
Predicted Maximum Depth

The Predicted Maximum Depth Report generates a Weibull probability and
a predicted depth based on a fit of the data to a selected probability
distribution. Click 'Predicted Maximum Volume', then follow these
steps to populate the spreadsheet with data that will be used in the analysis:
1. Select an intensity on which to base the report. The total rainfall
depth that occurs above this intensity in any given day will be used for
the analysis. Depth maxima are retrieved on the basis of three methods
of query:
Annual Series (type 0) - selects the maximum depth day for a given year,
one per year
Partial Series by Cutoff (type 1) - selects all days above a given user-defined
depth
Partial Series by n (type 2) - selects the top n of all recorded depths
2. After selecting the intensity and query method, select a range of
months over which the data will be queried.
3. Select an upper limit, lower limit, step, and probability distribution.
4. Click 'Exceedence' or 'Cumulative' in the 'Plot Option'
box to adjust the plot type.
5. Click 'Add to Data'. This will generate a series of data values
that will be analyzed. A message box will display these values.
Click 'OK' to produce a prediction and the corresponding Weibull
probability for the data series.

Additional data may be added to the graph by repeating steps 1 to 5 above.

Shown below is the code which generates the depths to be used in the
analysis.
Public Sub prePopulatePrediction_Above_Intensity(o As ProbabilityAboveIntensityOptions, v() As Single)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim duration As Single
Dim volume As Single
Dim intensity As Single
Dim c_date As Date
Dim use_record As Boolean
Dim n As Integer
Dim year_index As Integer
ReDim my_year(UBound(v())) As Integer
ReDim my_day(UBound(v())) As Integer
Dim last_my_year As Integer
Dim last_my_day As Integer
Dim minV As Single
Dim minIndex As Integer
get_RainplotRecords
' The objective here is to parse each day
'
i = 1: j = 1: n = 0
For k = 1 To nRP
use_record = True
c_date = rp(k).start_time
duration = rp(k).end_time - rp(k).start_time
volume = rp(k).depth
If duration <> 0 Then
intensity = volume / duration
Else
intensity = 0
End If
If month(c_date) < o.start_month Then use_record = False
If month(c_date) > o.end_month Then use_record = False
If intensity < o.intensity Then use_record = False
If use_record Then
Select Case o.analysis_type
Case 0 ' Annual Series
my_year(0) = year(c_date)
my_day(0) = day(c_date)
' See if year is used
year_index = 0
For i = 1 To n
If my_year(0) = my_year(i) Then year_index = i
Next i
' If year is not used - add year (new record)
If year_index = 0 Then
n = n + 1: my_year(n) = my_year(0): my_day(n) = my_day(0): year_index = n
v(n) = volume
Else ' Year already exists, if same day as existing year record add volume
If my_day(0) = my_day(year_index) Then
v(year_index) = v(year_index) + volume
Else ' If a new day in a year that exists (must accumulate volume for comparison
v(0) = v(0) + volume
End If
' If day volume exceeds year - then switch data
If v(0) > v(year_index) Then
v(year_index) = v(0): my_day(year_index) = my_day(0): v(0) = 0
End If
End If
Case 1 ' Partial Series by cutoff value
my_year(0) = year(c_date)
my_day(0) = day(c_date)
' If within same day and year, increment volume
If my_year(0) = last_my_year And my_day(0) = last_my_day Then
v(0) = v(0) + volume
Else
If v(0) > o.cutoff Then
n = n + 1
v(n) = v(0)
End If
v(0) = 0
End If
last_my_year = my_year(0)
last_my_day = my_day(0)
Case 2 ' Partial Series by Number of records
my_year(0) = year(c_date)
my_day(0) = day(c_date)
' If within same day increment volume
If my_year(0) = last_my_year And my_day(0) = last_my_day Then
v(0) = v(0) + volume
Else ' if not then new day - find min, if > min then use it
If n < o.number_of_records Then
n = n + 1: v(n) = v(0)
Else
minV = v(1)
For i = 1 To n
If minV < v(i) Then minV = v(i): minIndex = i
Next i
If v(0) > v(minIndex) Then
v(minIndex) = v(0)
End If
End If
v(0) = 0
End If
End Select
End If
Next k
End Sub
Predicted Maximum Intensity

The Predicted Maximum Intensity Report is used to retrieve, analyze,
and graph a series of intensity maxima.
This report is described in detail in the section titled 'Analyze
Dataset'.
Intensity-Duration-Frequency Curve Display

A previously created intensity-duration-frequency (IDF) curve may be
displayed by clicking the 'Intensity-Duration-Frequency Curve Display'
button. The following dialogue will open. Use the directory tree to select
the directory that contains the previously created IDF curve. Once the
file is found, click 'Done'. The IDF curve will be displayed.

Proceed to the next section titled 'Show
Summaries' or return to the main
RAINPLOT instructions page.
|