Case study for precipitation on Colorado's Front Range

Doug Nychka, National Center for Atmospheric Research

Overview
The frequency of large amounts of rainfall is important for planning for floods and effects how land and roadways should be developed. Also the frequency of precipitation is important for agriculture and vegetation depending whether it comes in a limited series of intense events or is more evenly distributed over many days. One active area of research is under a changed climate due to global warming how will extreme precipitation events change. This case study is restricted to the Front Range (FR) area of Colorado. This scope is only to keep the datasets small; the methods and questions are appropriate for all of North America. The FR is a combination of relative flat plains with a transition to high mountains. Because of this diversity it is useful study area to test methods. Also the mountain canyons channel runoff and are particularly prone to dramatic floods due to extreme rain events. The variable of interest here is the total amount of precipitation in a 24 hour period during the "summer" ( April - October) and is measured in hundreths of an inch ( e.g. 50 = .5 inch of rain).

See the talk (PDF) for more details about this case study.

Some Scientific Questions to Investigate.
Some basic meteorological questions that can be addreesed by these concern the distribution of precipitation over space and time.

The Datasets:

The data sets havethree main parts: daily weather observations, regional climate model output and a gridded set of climate estimates based on observations.

For some guides to the orignal source of these data see: Primary sources for Front Range project. (These orginal sources may be a useful exercise for students learing how to work a variety of data formats.) However, the easiest way to get started are to download the data and a map as preformated binary files for the R statistical envirnment. FRprecip.Rbin (7.7M) and Frontrange.Rbin (1.7M)

The R binary workspace FRprecip.Rbin can be added to an R session by
 attach( "FRprecip.Rbin")
This workspace contains the objects FRobs, Prism, RegCm ech of these R datasets is a list that has several components in different formats. Recall that a component of a list is accessed by the $ symbol. (E.g. FRobs$loc will refer to the matrix of the the station locations). An additional workspace Frontrange.Rbin is a GIS style map image in the object Frontrange. See the example below how to add to a plot. The workspace FRprecip.Rbin contains:

FRobs: A list of daily precipitation data from a network of 56 stations from the Front Range

List components for FRobs:

Prism : A list containing a climate "data product" that gives the estimated mean total summer precipitation for a grid of locations (PRISM from Chris Daly Oregon State Univ. is part of the methodology used to construct these fields)

List components for Prism:

RegCM: A list of daily Precipitation simulated from a Regional Climate model (Ruby Leung, MM5/PCM, Daily_b06_45). There are 20 simulated years based on current conditions. Note that the goal of this model is a squence of meterology that is consistent with current climate. However, one does not expect that any specific day or year matches the observations. The format for these data is the same as FRobs, although in this case there is no missing data. The full regional model output covers Western North America, however only the 40 grid cells overlapping the Front Range region are included here. Since these are model output there is no missing data.

List components for RegCM:

Frontrange : An map in "R image format"that is a useful background for overlaying other graphical information.

The list Frontrange has components:

To draw see the example below.

Some analysis in R and examples

The fields package will be useful for some of the plotting and analysis if it is not already installed.

library( fields)
attach( "FRprecip.Rbin")
attach( "Frontrange.Rbin")

# station locations with map outlines

US(,xlim=c( -115,-90))
points( FRobs$loc)

#  or ...

image( Frontrange, col=Frontrange$col, xlab="", ylab="", axes=FALSE)
points( FRobs$loc, col="red")


# Station locations, Prism grid centers, and RegCm grid centers. 
# with Prism elevations

plot( Prism$loc, pch=".", col="green")
points( FRobs$loc, pch="o", col="red", cex=2)
points( RegCM$loc, pch="+", col="blue", cex=2)
contour( Prism$lon, Prism$lat, Prism$elev,add=TRUE)

#fancy elevations with the station locations.
# see help file for drape.plot and persp for details. 

drape.plot( Prism$lon, Prism$lat, Prism$elev,expand=.15, 
col=grey(seq(.3,1,,128)),border=NA )-> out.pm

trans3d( FRobs$lon, FRobs$lat, FRobs$elev,out.pm)-> uv1
trans3d( FRobs$lon, FRobs$lat, FRobs$elev+1500,out.pm)-> uv2
segments( uv1$x, uv1$y, uv2$x, uv2$y, col="red",lwd=2)

# another idea
#text( uv2$x, uv2$y, 1:56,cex=1.5,col="red")


# The PRISM mean total precip fields
image.plot( Prism$lon, Prism$lat, Prism$Stot)

# time series plot of first station of observed data
# "h"== "high density plot" vertical lines form axis to point

plot( FRobs$time[[1]],FRobs$precip[[1]], type="h")

# RegCM first grid cell
plot( RegCM$time,RegCM$precip[[1]], type="h")


#find 95 quantile of precip

hold<- lapply( FRobs$precip, quantile, p=.95)
hold<- unlist( hold)

quilt.plot(FRobs$loc, hold)
 
# fit a smooth surface to these data

Tps( FRobs$loc, hold)-> out
predict.surface( out)-> look
image.plot( look)
points( FRobs$loc)