[Thumbnail map] Middle East Rainfall Intensity
Middle East Peace Process, Multilateral Working Group on Water Resources
Rainfall Intensity Project Team

Version 2 of the Rainfall Intensity software is now available! It corrects many of the "bugs" reported in the previous version.

Rainfall Intensity Home
EXACT Home


USER'S MANUAL

 

REQUIRED DATABASES

Create a "rainfall" database

Create a "rainfall_stats" database

Set each database as a System DSN to allow connection to the RAIN software


 

RAINSTART

Open the RAIN software

Log On to RAIN software programs


 

RAINDIGITIZER

Getting Started - Things to Do Before You Begin Digitizing

Log On

Link to your "rainfall" database

Digitize a strip chart and save as an x,y ascii file on your hard drive

QC the digitized strip charts

Load digitized ascii file(s) to your "rainfall" database

Convert digitized ascii file(s) to meaningful rainfall data (time-depth series) and store in your "rainfall" database

 

RAINPLOT

Select a dataset (select data to analyze)

Quality control the selected data (view raw rainfall data)

Analyze the selected data using predictive statistical curve fits (includes IDF analysis)

Create a report (automated reports showing various results)

Show monthly and seasonal summaries

Display data on map using RAINMAP

Edit hydrologic default settings (customize program settings such as "months that comprise a water year" and others)

 

RAINSHARE

Log On

Edit, add, or delete data in your "rainfall" database

Export or import your "rainfall" database

Rainplot logo

.

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'. .

Screenshot of Rainplot 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'.

Screenshot of buttons to 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.

Screenshot of window to open a file

.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.

Screenshot or Raimplot opening window

The report menu will open.

Screenshot of Select Report

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

 

Annual Rainfall Summary

Screenshot of Measured and Digitized Annual Volume button

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.

Screenshot of window for Annual Rainfall Summary

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.

Screenshot of window for Annual Rainfall Summary, choosing Manual Gage

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.

Screenshot of window for Graph Control

 

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.

Screenshot of windod for Annual Rainfall Totals

_______________________________________________________________________________________________________

 

Volume vs Intensity

Screenshot of button for Measured Volume with 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.

Screenshot of window for Intensity Ranges

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

Screenshot of button for Measured 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.

Screenshot of window for Diurnal Variations for April

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.

Screenshot of window for Diurnal Variations for September

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

Screenshot of button for Measured Volume above a Given Intensity

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'.

Screenshot of Volume Above Intensity Report

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

Screenshot of button for Predicted Maximum Volume

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.

Screenshot of window for Generate Prediction Above Intensity with an insert asking about data values

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

Screenshot of window for Generate Prediction Above Intensity

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

Screenshot of button for Predicted Maximum Intensity

The Predicted Maximum Intensity Report is used to retrieve, analyze, and graph a series of intensity maxima.

Screenshot of window for Analyze a Dataset of Rainfall Maxima

This report is described in detail in the section titled 'Analyze Dataset'.

 

Intensity-Duration-Frequency Curve Display

Screenshot of button for 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.

Screenshot of window for Change Directory

 

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

 

All content on this site was developed by members of the Rainfall Intensity Project, Middle East Peace Process, Multilateral Working Group on Water Resources. This website was last updated on January21, 2005. Information presented on this website is considered public information and may be distributed or copied. Use of appropriate byline/photo/image credit is requested. EXACT makes every effort to provide accurate and complete information; however, data such as names, telephone numbers, etc., may change frequently. Links are provided as a source of information and do not consitute an endorsement by EXACT of materials presented. EXACT provides no warranty, expressed or implied, as to the accuracy, reliability, or completeness of furnished data.