Skip to content

DHI.Services.USGS for Time Series — Internal Developer Guide (Summary)

USGS is a read-only Time Series provider for Daily Values (DV). Full details live here: DHI.Services.USGS — Provider Guide.


When to use

  • You need observed hydrologic DV data (e.g., discharge, stage, temp) from USGS.
  • You want the data in the DHI TimeSeries model, with qualifiers and EUM metadata.

Quick start

using DHI.Services.Provider.USGS;

var repo = new TimeSeriesRepository(
  "https://waterservices.usgs.gov/nwis/dv/?startDT=2024-01-01&endDT=2024-12-31");

var id = "USGS:11458000:00060:00003";

var tsMaybe = repo.Get(id);
if (!tsMaybe.HasValue) return;

var ts    = (UsgsTimeSeries)tsMaybe.Value;
var data  = ts.Data;             // ITimeSeriesData<double>
var flags = ts.DataWFlag.Flags;  // USGS qualifiers

ID format {AgencyCode}:{SiteNumber}:{ParameterCode}:{StatisticsCode} Example: USGS:01100000:00060:00003

Notes

  • Optional default date window comes from the repository base URL (startDT/endDT).
  • Values include qualifiers; human-readable qualifier texts are in metadata.
  • EUM fields (Quantity, Unit, DataType, Dimension) are auto-mapped; convert numeric values with UsgsToEum only if you need them in EUM units.

Exposing via Web API

Add a connection like:

{
  "$type": "DHI.Services.TimeSeries.WebApi.TimeSeriesServiceConnection, DHI.Services.TimeSeries.WebApi",
  "ConnectionString": "https://waterservices.usgs.gov/nwis/dv/?startDT=2024-01-01&endDT=2024-12-31",
  "RepositoryType": "DHI.Services.Provider.USGS.TimeSeriesRepository, DHI.Services.Provider.USGS",
  "Name": "USGS Daily Values",
  "Id": "usgs-dv"
}

Then call (URL-encode :):

GET /api/timeseries/usgs-dv/USGS%3A11458000%3A00060%3A00003/values

Need details?

  • ID validation rules, metadata keys, EUM mapping, conversion helpers, custom query building, and troubleshooting are all in the USGS Provider Guide.