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:
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
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 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. |
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 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. |
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 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 |
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
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 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 |
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
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,-
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.
Elevation and slope statistics (TBD)
Surface flow direction and flow accumulation statistics (TBD)
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.
Landcover summary statistics, including percent impervious/pervious (TBC)
Data | Source | Description | Get |
---|---|---|---|
2010 Urban Tree Canopy | Allegheny County | ... | link |
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.
Get a soil type and hydrological characteristic summary (TBD)
(TBD)
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.
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:
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.
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 the upstream contributing area from a point or area.
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.
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.