3RWW Rainways API

The 3RWW Rainways API provides a central location for documenting access to the data and processing resources from 3 Rivers Wet Weather and other organizations that are useful for sewer and stormwater modeling in Allegheny County, PA.

The goal of the Rainways API is to provide a shortcut around a lot of the otherwise tedious work of downloading and prepping the environmental, infrastructure, and geophysical data used in sewer and stormwater modeling. It doesn't represent a new database or central repository, only a quicker and more direct way to access existing datastores that are relevant to this kind of work. To that end, it is designed to:

  • use and evolve to use the best available data
  • be used for locations that you are specifically interested in; it is not meant to be a general purpose data download portal (you can go elsewhere to get the underlying data)

This site should absolutely be considered beta; the underlying API specs will almost certainly change.

We've grouped available resources into two categories:

Data Resources: These endpoints provide ways to get to geographic and temporal data for points or areas of interest quickly.

Analysis Resources: These endpoints derive new information from data resources through further geospatial analysis

Rainfall API

Note: This API is currently under development; headings and addresses below represent planned endpoints.

3 Rivers Wet Weather, with support from Vieux Associates, uses calibrated data from the NEXRAD radar located in Moon Township, PA with rain gauge measurements collected during the same time period and rain event for every square kilometer in Allegheny County. The resulting rainfall data is equivalent in accuracy to having 2,276 rain gauges placed across the County. 3RWW has a massive repository of this high resolution spatiotemporal calibrated radar rainfall data for Allegheny County dating back to 2000 and including nearly 2 billion data points. This data is explorable on 3RWW's Calibrated Radar Rainfall website.

The 3RWW Rainfall API provides seamless access to current and "historic" rainfall data (older than 60 days from today) for the physical rain gauge data and calibrated pixel virtual rain gauge data (i.e., gauge-adjusted radar rainfall data, or GARRD).

Get Gauage Adjusted Radar Rainfall Data

Get rainfall totals for a point or area of interest, at a point in time or over time. This data comes from from 3RWW's virtual rain gauge system.

In addition to rainfall values (as inches), each virtual gauge includes a metadata which indicates the source for the data. This column includes the codes:

Metadata Source Code Description
R Calibrated radar rainfall data
G-0 No gauge or calibrated radar rainfall data is available, but not for the reasons given for N/D below
G-1 Derived from inverse distance squared weighting based on one rain gauge
G-2 Derived from inverse distance squared weighting based on two rain gauges
G-3 Derived from inverse distance squared weighting based on three rain gauges
N/D No data was collected for this data point. This may be because no data was collected at the time or the pixel may be outside of the data collection boundary.

The data is by default returned as JSON. optionally return GeoJSON, a CSV table, or a MD (markdown) table.

Request Parameter Description
location An address, point of interest, or place name, (search via Esri) for which to get rainfall; alternatively, provide valid GeoJSON here to get rainfall for a specific area of interest.
start The start date and time for which to get rainfall.
For best results, use the ISO-8601 convention for your date/time string (e.g., 2013-02-04T22:44:30.652Z; most scripting languages have ways to generate one of these); alternatively we'll attempt to parse whatever you provide (we're using the python-dateutil parser on the backend, so something like "June 18 2010 1:00PM will work").
If end is provided and this is set after that, end will be ignored.
end (optional) The end date and time for which to get rainfall. If not provided, then this script will just return rainfall for the point in time specified by the start parameter.
For best results, use the ISO-8601 convention for your date/time string (e.g., 2013-02-04T22:44:30.652Z; most scripting languages have ways to generate one of these); alternatively we'll attempt to parse whatever you provide (we're using the python-dateutil parser on the backend, so something like "June 19 2010 1:00AM will work").
If this is set before start, it will be ignored.
interval (optional) Specify interval for which rainfall totals will be provided: 5-minute, 15-minute (default), Hourly or Daily. Note that 5-minute data is not available for all timeframes; in the absence of this data this endpoint will return 15-minute data instead.
zerofill (optional) Include time intervals with no rafinall (default); Set to false to omit those from the response
f (optional) format of the response. JSON (default), GEOJSON, CSV, or MD (markdown table).
geo (optional, defaults to false) include the pixel geometry in the response. If JSON, CSV, or MD are selected for parameter f, this will be provided in the WKT format in an additional property or column. If the GEOJSON format is selected for parameter f, then this parameter will be ignored and geometry will be returned according to the GeoJSON spec.
GET
http://3rww-api.civicmapper.com/rainfall/v2/pixel

Get Rain Gauge Data

The data is by default returned as JSON. optionally return GeoJSON, a CSV table, or a MD (markdown) table.

Request Parameter Description
gauges A comma-separated list of gauge numbers in the range [1-34]
location (optional) An address, point of interest, or place name, (search via Esri) for which to search for the closest gauge; alternatively, provide valid GeoJSON here and you'll get data back for return the closest gauge.
start The start date and time for which to get rainfall.
For best results, use the ISO-8601 convention for your date/time string (e.g., 2013-02-04T22:44:30.652Z; most scripting languages have ways to generate one of these); alternatively we'll attempt to parse whatever you provide (we're using the python-dateutil parser on the backend, so something like "June 18 2010 1:00PM will work").
If end is provided and this is set after that, end will be ignored.
end (optional) The end date and time for which to get rainfall. If not provided, then this script will just return rainfall for the point in time specified by the start parameter.
For best results, use the ISO-8601 convention for your date/time string (e.g., 2013-02-04T22:44:30.652Z; most scripting languages have ways to generate one of these); alternatively we'll attempt to parse whatever you provide (we're using the python-dateutil parser on the backend, so something like "June 19 2010 1:00AM will work").
If this is set before start, it will be ignored.
interval (optional) Specify interval for which rainfall totals will be provided: 5-minute, 15-minute (default), Hourly or Daily. Note that 5-minute data is not available for all timeframes; in the absence of this data this endpoint will return 15-minute data instead.
zerofill (optional) Include time intervals with no rafinall (default); Set to false to omit those from the response
f (optional) format of the response. JSON (default), GEOJSON, CSV, or MD (markdown table).
geo (optional, defaults to false) include the pixel geometry in the response. If JSON, CSV, or MD are selected for parameter f, this will be provided in the WKT format in an additional property or column. If the GEOJSON format is selected for parameter f, then this parameter will be ignored and geometry will be returned according to the GeoJSON spec.
GET
http://3rww-api.civicmapper.com/rainfall/v2/raingauge

Get Rainfall Events

Get a list of rainfall events. By default, returns a list of all rainfall events catalogued by Vieux Associates. Each event is represented by its start and end datetime following the ISO-8601 convention.

Property Description
year (optional) Search for events within a specific year.
month (optional) Search for events within a specific month. If this argument is specified and the year argument is not, the endpoint will return events for same month over all years.
POST
http://3rww-api.civicmapper.com/rainfall/v2/events

Rainfall API (legacy)

3 Rivers Wet Weather, with support from Vieux Associates, uses calibrated data from the NEXRAD radar located in Moon Township, PA with rain gauge measurements collected during the same time period and rain event for every square kilometer in Allegheny County. The resulting rainfall data is equivalent in accuracy to having 2,276 rain gauges placed across the County. 3RWW has a massive repository of this high resolution spatiotemporal calibrated radar rainfall data for Allegheny County dating back to 2000 and including nearly 2 billion data points. This data is explorable on 3RWW's Calibrated Radar Rainfall website.

This API provides direct access to the "historic" rainfall data (older than 60 days from today) for the physical rain gauge and calibrated "pixel" virtual rain gauge data. There are two RPC calls that allow access to each respective dataset.

NOTE: this particular version of the API is intended to mimic the request and response formats of the legacy Teragon API; you'll see below that the URLs include "v1" in their path. This version of the API is maintained for backwards compatibility. For the latest version of the API, see the documentation for Rainfall API.

Get Calibrated Radar Rainfall Data

Get virtual rain gauge (gauge-adjusted / calibrated radar) data for radar pixels.

The pixels are 1 square kilometer grid cells covering Allegheny County. You can view them on a map or download them for use with geospatial analysis tools.

The results are returned as plain text, formated as a csv table (MIME-type text\csv').

In addition to rainfall values (as inches), each virtual gauge includes a metadata column which indicates the source for the data. This column includes the codes:

Metadata Column Source Code Description
R Calibrated radar rainfall data
G-0 No gauge or calibrated radar rainfall data is available, but not for the reasons given for N/D below
G-1 Derived from inverse distance squared weighting based on one rain gauge
G-2 Derived from inverse distance squared weighting based on two rain gauges
G-3 Derived from inverse distance squared weighting based on three rain gauges
N/D No data was collected for this data point. This may be because no data was collected at the time or the pixel may be outside of the data collection boundary.

(Note that no metadata is provided for hourly or daily roll-ups, only for 15-minute interval observations.)

Dates and times are returned using in the ISO-8601 standard timstamp format with a timezone offset for local time.

Request Parameter Description
pixels semicolon-separated list of pixel tuples in the format "x,y" - for example: "135,142;135,143;135,144". Please refer to the map to find exact pixel coordinates.
startyear numerical quantity in the range [2000-2030]
startmonth numerical quantity in the range [1-12]
startday numerical quantity in the range [1-31]
starthour (optional) numerical quantity in the range [0-23]
endyear numerical quantity in the range [2000-2030]
endmonth numerical quantity in the range [1-12]
endday numerical quantity in the range [1-31]
endhour (optional) numerical quantity in the range [0-23]
interval (optional) may be specified as Hourly or Daily for summary output. Absence of the parameter or any other specified parameter value will default to the 15-minute individual output
POST
https://3rww-api.civicmapper.com/rainfall/v1/pixel

Example request

curl -d zerofill=yes -d interval=Hourly -d startyear=2004 -d startmonth=9 -d startday=17 -d starthour=3 -d endyear=2004 -d endmonth=9 -d endday=18 -d endhour=0 -d pixels="135,142;135,143;135,144" https://3rww-api.civicmapper.com/rainfall/v1/pixel

Example response

Timestamp,135142,135142-src,135143,135143-src,135144,135144-src
2004-09-17T03:00:00,0.0070,-,0.0080,-,0.0100,-
2004-09-17T04:00:00,0.0460,-,0.0430,-,0.0510,-
2004-09-17T05:00:00,0.0110,-,0.0110,-,0.0100,-
2004-09-17T06:00:00,0.0570,-,0.0490,-,0.0480,-
2004-09-17T07:00:00,0.1970,-,0.1510,-,0.1460,-
2004-09-17T08:00:00,0.1170,-,0.1040,-,0.1140,-
2004-09-17T09:00:00,0.1940,-,0.1790,-,0.1959,-
2004-09-17T10:00:00,0.4080,-,0.3689,-,0.3710,-
2004-09-17T11:00:00,0.2880,-,0.4470,-,0.4020,-
2004-09-17T12:00:00,0.3380,-,0.5070,-,0.5828,-
2004-09-17T13:00:00,0.9820,-,1.1480,-,1.8210,-
2004-09-17T14:00:00,0.8500,-,0.8210,-,0.9450,-
2004-09-17T15:00:00,0.8009,-,0.7909,-,0.7660,-
2004-09-17T16:00:00,0.7270,-,0.7570,-,0.6430,-
2004-09-17T17:00:00,0.3890,-,0.4010,-,0.3740,-
2004-09-17T18:00:00,0.2380,-,0.2319,-,0.2250,-
2004-09-17T19:00:00,0.2210,-,0.1969,-,0.1730,-
2004-09-17T20:00:00,0.0880,-,0.0810,-,0.0720,-
2004-09-17T21:00:00,0.2330,-,0.2269,-,0.2390,-
2004-09-17T22:00:00,0.2850,-,0.2360,-,0.2730,-
2004-09-17T23:00:00,0.3220,-,0.3169,-,0.3249,-

Get Rain Gauge Data

Get rain gauge data from 3RWW's physical gauges. You can view them on a map or download them for use with geospatial analysis tools.

The data is returned as plain text, formated as csv (MIME-type text\csv'). Dates and times are returned using in the ISO-8601 standard timstamp format with a timezone offset for local time.

Request Parameter Description
gauges comma-separated list of gauge numbers in the range [1-34]. Please refer to the map to find gauge IDs.
startyear numerical quantity in the range [2000-2030]
startmonth numerical quantity in the range [1-12]
startday numerical quantity in the range [1-31]
starthour numerical quantity in the range [0-23]
endyear numerical quantity in the range [2000-2030]
endmonth numerical quantity in the range [1-12]
endday numerical quantity in the range [1-31]
endhour numerical quantity in the range [0-23]
interval (optional) may be specified as Hourly or Daily for summary output. Absence of the parameter or any other specified parameter value will default to the 15-minute individual output
POST
https://3rww-api.civicmapper.com/rainfall/v1/raingauge

Example request

curl -d zerofill=yes -d interval=Hourly -d startyear=2004 -d startmonth=9 -d startday=17 -d starthour=3 -d endyear=2004 -d endmonth=9 -d endday=18 -d endhour=0 -d gauges="1,2" https://3rww-api.civicmapper.com/rainfall/v1/raingauge

Example response

Timestamp,1,1-src,2,2-src
2004-09-17T03:00:00,0.0000,-,0.0000,-
2004-09-17T04:00:00,0.0200,-,0.0200,-
2004-09-17T05:00:00,0.0200,-,0.0100,-
2004-09-17T06:00:00,0.0200,-,0.0400,-
2004-09-17T07:00:00,0.1200,-,0.1100,-
2004-09-17T08:00:00,0.1000,-,0.1100,-
2004-09-17T09:00:00,0.1200,-,0.1300,-
2004-09-17T10:00:00,0.3000,-,0.3000,-
2004-09-17T11:00:00,0.3500,-,0.3300,-
2004-09-17T12:00:00,0.5000,-,0.5500,-
2004-09-17T13:00:00,1.0300,-,0.8900,-
2004-09-17T14:00:00,1.0200,-,0.9500,-
2004-09-17T15:00:00,0.6600,-,0.6700,-
2004-09-17T16:00:00,0.5100,-,0.6200,-
2004-09-17T17:00:00,0.2700,-,0.3100,-
2004-09-17T18:00:00,0.1300,-,0.1500,-
2004-09-17T19:00:00,0.1400,-,0.1300,-
2004-09-17T20:00:00,0.0700,-,0.0600,-
2004-09-17T21:00:00,0.1000,-,0.0700,-
2004-09-17T22:00:00,0.2300,-,0.2700,-
2004-09-17T23:00:00,0.1600,-,0.1500,-

Terrain API

Note: This API is currently under development; headings and addresses below represent planned endpoints.

The Terrain API provides summary statistics a high definition, hydrologically-corrected Digitial Elevation Model (DEM) for Allegheny County.

Get Topographic Summary

Elevation and slope statistics (TBD)

POST
http://api.3riverswetweather.org/rainways/v0/terrain/topo

Get Hydrological Summary

Surface flow direction and flow accumulation statistics (TBD)

POST
http://api.3riverswetweather.org/rainways/v0/terrain/hydro

Landcover API

Note: This API is currently under development; headings and addresses below represent planned endpoints.

The Landcover API provides access to landcover characterizations for user-provided areas in Allegheny County—e.g., pervious, impervious. Use in combination with the Delineation API to create basin characterizations.

Get Landcover summary statistics

Landcover summary statistics, including percent impervious/pervious (TBC)

Data Source Description Get
2010 Urban Tree Canopy Allegheny County ... link
POST
http://api.3riverswetweather.org/rainways/v0/landcover/summary

Sub-Surface API

Note: This API is currently under development; headings and addresses below represent planned endpoints.

The Sub-Surface API provides summary information about soils and geology for a point or area of interest.

Soils

Get a soil type and hydrological characteristic summary (TBD)

POST
http://api.3riverswetweather.org/rainways/v0/subsurface/soils

Geology

(TBD)

POST
http://api.3riverswetweather.org/rainways/v0/subsurface/geology

Network Trace API

Note: This API is currently under development; headings and addresses below represent planned endpoints.

The Network Trace API provides straightforward access to the geoprocessing service behind the network trace tool used by the 3RWW Sewer Atlas and 3RWW's Flush-It! map. This API provides a way to run a network trace without having to deal with the underlying ArcGIS REST API; it provides a quick path to data that is ready for system modeling (e.g., SWMM), without the need for post-processing.

Flush-It Trace

This trace endpoint provides summary results similar to those seen in 3RWW's Flush-It! map.

Using a Street Address or X/Y coordinates, get a summary of the sewer network downstream and upstream. Summary results include:

  • downstream: distance, estimated time to plant, municipalities and neighborhoods, and the path of the downstream trace.
  • upstream: distance, inch-miles, municipalities and neighborhoods
GET
http://api.3riverswetweather.org/seweratlas/v0/networktrace/light

Sewer Atlas Trace

Using a Street Address, X/Y coordinates, or a Structure ID from struct_id field of sewerstormwater_nodes feature service on the Sewer Atlas, get a summary of the sewer network downstream and upstream (same as Network Trace Light), as well as the complete geometry of the trace as geojson with pipe and structure attributes key to modeling.

The Sewer Atlas endpoint requires that 3RWW MDS credentials be submitted with the request; as such this endpoint only accepts POST requests.

POST
http://api.3riverswetweather.org/seweratlas/v0/networktrace/heavy

Delineation API

Note: This API is currently under development; headings and addresses below represent planned endpoints.

The Delineation API provides surficial delineation of drainage basins, with coverage for Allegheny County.

Delineate

Delineate the upstream contributing area from a point or area.

GET
http://api.3riverswetweather.org/rainways/v0/delineation/delineate

Delineate and Cross-Tab

Delineate the upstream contributing area from a point or area and cross-tabulate the resulting area with data sets for the area, e.g., landcover, topographic, and sub-surface characteristics.

By default, return the delineation area (as a GeoJSON polygon) with cross-tabulated statistics included as properties.

GET
http://api.3riverswetweather.org/rainways/v0/delineation/delineate-crosstab

Cross-Tab (BYO Delineation)

Bring your own area of interest (presumably representing a delineation you've created on your own, but really you can supply whatever area suits your fancy) and cross-tabulate it with data sets for the area, e.g., landcover, topographic, and sub-surface characteristics.

GET
http://api.3riverswetweather.org/rainways/v0/delineation/crosstab
Show examples in:
3RWW Rainways API Docs