WEPPcloud

← Back to usersum index

OpenET Climate Engine Mod

Monthly OpenET evapotranspiration time series for WEPPcloud hillslopes. See also: wepppy/nodb/mods/openet/spec-and-plan.md

Overview

This module queries Climate Engine's OPENET_CONUS dataset to retrieve monthly ET for each hillslope polygon. Results are cached per hillslope and assembled into a single parquet for analytics and dashboards.

Usage

from wepppy.nodb.mods.openet import OpenET_TS

openet_ts = OpenET_TS.getInstance(wd)
openet_ts.acquire_timeseries()
openet_ts.analyze()

Outputs

  • openet/individual/<dataset_key>/<topaz_id>.parquet (per-hillslope cache)
  • openet/openet_ts.parquet (combined monthly time series)

Layers

OpenET drives a gl-dashboard map overlay when openet/openet_ts.parquet is present.

  • The Layers control shows an OpenET section only when the parquet exists.
  • Each dataset_key becomes a radio option (for example, ensemble, eemetric).
  • OpenET uses the monthly time slider; the yearly slider is hidden while an OpenET layer is active.

openet/openet_ts.parquet Specification

Combined monthly OpenET time series aggregated at the hillslope level. Per-hillslope cache files use the same schema.

Column Type Units Description
topaz_id string - Hillslope identifier (TopazID) as a string.
year int - Calendar year of the monthly observation.
month int - Calendar month (1-12) of the observation.
dataset_key string - Logical dataset key (currently ensemble, eemetric).
dataset_id string - Climate Engine dataset id (OPENET_CONUS).
value float mm Monthly evapotranspiration depth. Values are rounded to 4 decimals.
units string - Unit label reported by Climate Engine (defaults to mm).
source string - Source label (climateengine).

GL Dashboard Query Payloads

OpenET overlays and graphs in the gl-dashboard issue Query Engine payloads against openet/openet_ts.parquet. The UI always uses the base scenario query engine for OpenET.

Monthly overlay summary (map colors)

Returns a single month of ET values per hillslope for the selected dataset. Source: wepppy/weppcloud/static/js/gl-dashboard/data/openet-data.js.

{
  "datasets": [{ "path": "openet/openet_ts.parquet", "alias": "openet" }],
  "columns": ["openet.topaz_id AS topaz_id", "openet.value AS value"],
  "filters": [
    { "column": "openet.dataset_key", "op": "=", "value": "<dataset_key>" },
    { "column": "openet.year", "op": "=", "value": "<year>" },
    { "column": "openet.month", "op": "=", "value": "<month>" }
  ]
}

Overlay detection (dataset keys)

Discovers which OpenET dataset keys are present in the parquet. Source: wepppy/weppcloud/static/js/gl-dashboard/layers/detector.js.

{
  "datasets": [{ "path": "openet/openet_ts.parquet", "alias": "openet" }],
  "columns": ["DISTINCT openet.dataset_key AS dataset_key"],
  "order_by": ["dataset_key"]
}

Overlay detection (month list)

Discovers available month/year combinations for the month slider. Source: wepppy/weppcloud/static/js/gl-dashboard/layers/detector.js.

{
  "datasets": [{ "path": "openet/openet_ts.parquet", "alias": "openet" }],
  "columns": ["DISTINCT openet.year AS year", "openet.month AS month"],
  "order_by": ["year", "month"]
}

Monthly timeseries graph (per hillslope)

Loads full monthly series per hillslope for the selected dataset. Source: wepppy/weppcloud/static/js/gl-dashboard/graphs/graph-loaders.js.

{
  "datasets": [{ "path": "openet/openet_ts.parquet", "alias": "openet" }],
  "columns": [
    "openet.topaz_id AS topaz_id",
    "openet.year AS year",
    "openet.month AS month",
    "openet.value AS value"
  ],
  "filters": [{ "column": "openet.dataset_key", "op": "=", "value": "<dataset_key>" }],
  "order_by": ["year", "month"]
}

Yearly graph (area-weighted)

Aggregates ET using hillslope area to build water-year or calendar-year curves. Source: wepppy/weppcloud/static/js/gl-dashboard/graphs/graph-loaders.js.

{
  "datasets": [
    { "path": "openet/openet_ts.parquet", "alias": "openet" },
    { "path": "watershed/hillslopes.parquet", "alias": "hill" }
  ],
  "joins": [{ "left": "openet", "right": "hill", "on": "topaz_id", "type": "inner" }],
  "columns": ["openet.year AS year", "openet.month AS month"],
  "aggregations": [{ "expression": "SUM(openet.value * hill.area)", "alias": "area_weighted" }],
  "filters": [{ "column": "openet.dataset_key", "op": "=", "value": "<dataset_key>" }],
  "group_by": ["openet.year", "openet.month"],
  "order_by": ["year", "month"]
}

Notes

  • Requires CLIMATE_ENGINE_API_KEY.
  • Only observed climate modes are supported.