Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cdsspy

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cdsspy

Provides Python functions for discovering and requesting data from the CDSS REST API.

  • 1.2.691
  • PyPI
  • Socket score

Maintainers
1

cdsspy

Dependencies License:
MIT

« CDSS »
CDSS REST Web Services


The goal of cdsspy is to provide functions that help Python users to navigate, explore, and make requests to the CDSS REST API web service.

The Colorado’s Decision Support Systems (CDSS) is a water management system created and developed by the Colorado Water Conservation Board (CWCB) and the Colorado Division of Water Resources (DWR).

Thank you to those at CWCB and DWR for providing an accessible and well documented REST API!


See cdssr, for the R version of this package




Installation

Install the latest version of cdsspy from PyPI:

pip install cdsspy

Available endpoints

Below is a table of all of the CDSS API endpoints cdsspy provides functions for.

-FunctionDescriptionEndpoint
1get_admin_calls()Returns list of active/historic administrative callsadministrativecalls/active
2get_structures()Returns list of administrative structuresstructures
3get_structures_divrec_ts()Returns list of diversion/release records based on WDIDstructures/divrec/divrec
4get_structures_stage_ts()Returns list of stage/volume records based on WDIDstructures/divrec/stagevolume
5get_climate_stations()Returns Climate Stationsclimatedata/climatestations
6get_climate_ts()Returns Climate Station Time Series (day, month, year)climatedata/climatestationts
7get_climate_frostdates()Returns Climate Station Frost Datesclimatedata/climatestationfrostdates
8get_gw_gplogs_wells()Returns Groundwater GeophysicalLogsWell from filtersgroundwater/geophysicallogs/
9get_gw_gplogs_geologpicks()Returns Groundwater Geophysical Log picks by well IDgroundwater/geophysicallogs/
10get_gw_wl_wells()Returns WaterLevelsWell from filtersgroundwater/waterlevels/wells
11get_gw_wl_wellmeasures()Returns Groundwater Measurementsgroundwater/waterlevels/wellmeasurements
12get_reference_tbl()Returns reference tables listreferencetables/
13get_sw_stations()Returns Surface Water Station infosurfacewater/surfacewaterstations
14get_sw_ts()Returns Surface Water Time Seriessurfacewater/surfacewaterts
15get_telemetry_stations()Returns telemetry stations and their most recent parameter readingtelemetrystations/telemetrystation
16get_telemetry_ts()Returns telemetry time series data (raw, hour, day)telemetrystations/telemetrytimeseries
17get_water_rights_netamount()Returns current status of a water right based on all of its court decreed actionswaterrights/netamount
18get_water_rights_trans()Returns court decreed actions that affect amount and use(s) that can be used by each water rightwaterrights/transaction
19get_call_analysis_wdid()Performs a call analysis that returns a time series showing the percentage of each day that the specified WDID and priority was out of priority and the downstream call in priorityanalysisservices/callanalysisbywdid
20get_source_route_framework()Returns the DWR source route framework reference table for the criteria specifiedanalysisservices/watersourcerouteframework



Identify query inputs using reference tables

The get_reference_tbl() function will return tables that makes it easier to know what information should be supplied to the data retrieval functions in cdsspy. For more information on the source reference tables click here.


# available parameters for telemetry stations
telemetry_params = cdsspy.get_reference_tbl(
    table_name = "telemetryparams"
    )
Parameter
0AIRTEMP
1BAR_P
2BATTERY
3COND
4D1
5D2
6DISCHRG
7DISCHRG1
8DISCHRG2
9DISCHRG3
10DISCHRG4
11ELEV



Locate structures

cdsspy provides functions for locating structures/stations/wells/sites by providing a spatial extent, water district, division, county, designated basin, or management district to the functions in the table below. Site data can also be retrieved by providing the site specific abbreviations, GNIS IDs, USGS IDs, WDIDs, or Well IDs.

-FunctionDescriptionEndpoint
1get_structures()Returns list of administrative structuresstructures
2get_climate_stations()Returns Climate Stationsclimatedata/climatestations
3get_gw_gplogs_wells()Returns Groundwater GeophysicalLogsWell from filtersgroundwater/geophysicallogs/
4get_gw_wl_wells()Returns WaterLevelsWell from filtersgroundwater/waterlevels/wells
5get_sw_stations()Returns Surface Water Station infosurfacewater/surfacewaterstations
6get_telemetry_stations()Returns telemetry stations and their most recent parameter readingtelemetrystations/telemetrystation

Example: Locating telemetry stations by county:

# identify telemetry stations in Boulder County
stations  = cdsspy.get_telemetry_stations(
    county = "Boulder"
    )



Example: Locating telemetry stations around a point

# identify telemetry stations within a 15 mile radius of the center point of Boulder County
stations  = cdsspy.get_telemetry_stations(
    aoi    = [-105.358164, 40.092608],
    radius = 15
    )



Example: Locating telemetry stations within a spatial extent

A masking operation is performed when a location search is done using a polygon. This ensures that the function only returns points that are within the given polygon.

# identify telemetry stations 15 miles around the centroid of a polygon
stations  = cdsspy.get_telemetry_stations(
    aoi    = geopandas.read_file("https://cdsspy-images.s3.us-west-1.amazonaws.com/boulder_county.gpkg")
    radius = 15
    )

This gif highlights the masking process that happens when the aoi argument is given a polygon





Retrieve time series data

The functions in the table below retrieve time series data from the various time series related CDSS API endpoints.

-FunctionDescriptionEndpoint
1get_structures_divrec_ts()Returns list of diversion/release records based on WDIDstructures/divrec/divrec
2get_structures_stage_ts()Returns list of stage/volume records based on WDIDstructures/divrec/stagevolume
3get_climate_ts()Returns Climate Station Time Series (day, month, year)climatedata/climatestationts
4get_gw_wl_wellmeasures()Returns Groundwater Measurementsgroundwater/waterlevels/wellmeasurements
5get_sw_ts()Returns Surface Water Time Seriessurfacewater/surfacewaterts
6get_telemetry_ts()Returns telemetry time series data (raw, hour, day)telemetrystations/telemetrytimeseries


Example: Daily discharge at a telemetry station

We can then take a station abbreviations from the get_telemetry_stations() call, a parameter from the get_reference_tbl() call, and use this information as inputs into the get_telemetry_ts() function.


The function below returns a dataframe of daily discharge for the "ANDDITCO" site between 2015-2022.

# Daily discharge at "ANDDITCO" telemetry station
discharge_ts   = cdsspy.get_telemetry_ts(
    abbrev         = "ANDDITCO",     # Site abbreviation from the outputs of get_telemetry_stations()
    parameter      = "DISCHRG",      # Desired parameter, identified by the get_reference_tbl()
    start_date     = "2015-01-01",   # Starting date
    end_date       = "2022-01-01",   # Ending date
    timescale      = "day"           # select daily timescale
    )



Example: Retrieve Diversion records for multiple structures

Some of the CDSS API endpoints allow users to request data from multiple structures if you provide a list of IDs. If we want to get diversion data from multiple structure locations, we'll need to get a list of WDIDs. We can get a list WDIDs within a given area by:

  1. Executing a spatial search using get_structures()
  2. Selecting the WDIDs of interest from the search results
  3. Providing the WDIDs as a vector to get_structures_divrec_ts()
# 1. Executing a spatial search
structures = cdsspy.get_structures(
    aoi    = [-105.3578, 40.09244],
    radius = 5
    )

# 2. Selecting the WDID's of interest from search results and putting WDIDs into a list
ditch_wdids = structures[(structures["ciuCode"] == "A") & (structures["structureType"] == "DITCH")]
ditch_wdids = list(ditch_wdids['wdid'])

# 3. Providing the WDID's as a list to get_structures_divrec_ts()
diversion_rec  = cdsspy.get_structures_divrec_ts(
    wdid           = ditch_wdids,
    wc_identifier  = "diversion",
    timescale      = "month"
    )

Note: Data availability can vary between structures (i.e. Missing data, not all structures have every data type/temporal resolution available, etc.)





Retrieve groundwater data

The get_gw_() set of functions lets users retrieve data from the various groundwater related API endpoints shown in the table below:

-FunctionEndpoint
1get_gw_wl_wellmeasures()api/v2/groundwater/waterlevels/wellmeasurements
2get_gw_wl_wells()api/v2/groundwater/waterlevels/wells
3get_gw_gplogs_wells()api/v2/groundwater/geophysicallogs/wells
4get_gw_gplogs_geologpicks()api/v2/groundwater/geophysicallogs/geoplogpicks

Here we will retrieve groundwater well measurement data for Well ID 1274 between 2021-2022.

# Request wellmeasurements endpoint (api/v2/groundwater/waterlevels/wellmeasurements)
well_measure = cdsspy.get_gw_wl_wellmeasures(
    wellid     = "1274",
    start_date = "1990-01-01",
    end_date   = "2022-01-01"
    )

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc