Skip to content

Commit 87a8f77

Browse files
committed
Add hydrology station thumbnail metadata
1 parent e368de6 commit 87a8f77

5 files changed

Lines changed: 46 additions & 0 deletions

docs/research/new-publisher-source-planning/Environment_Agency_Hydrology_Live_Demo_Verification_2026-05-26.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ EA Hydrology Beggearn Huish
118118
Verified UI behavior:
119119

120120
- The deployed-system card renders an image-backed STANAG symbol element instead of the old blank fallback rectangle.
121+
- A representative hydrometric gauge photograph is available in system SensorML metadata for the deployed-system side-card thumbnail path. It is explicitly labeled as representative imagery, not station-specific imagery.
122+
- Because the current OSH server rejects system SensorML PUTs with HTTP 500, the production Explorer also includes an Environment Agency Hydrology fallback thumbnail using that same representative photograph when SensorML media is unavailable.
121123
- The card includes a `Latest readings` section.
122124
- The card shows both Beggearn Huish readings:
123125
- River flow `0.219 m3/s`
@@ -147,6 +149,8 @@ Confirmed live-demo features:
147149
- correct OSH preset connected,
148150
- EA hydrology resources visible on map,
149151
- STANAG symbol no longer blank fallback,
152+
- representative gauge photo metadata available for side-card thumbnail display,
153+
- Explorer fallback thumbnail available while system SensorML PUTs are blocked server-side,
150154
- deployed-system side card latest readings visible,
151155
- map popup latest-reading content populated,
152156
- backend latest observations available.

docs/research/new-publisher-source-planning/Environment_Agency_Hydrology_Publisher_Completion_Report_2026-05-26.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ CSAPI UIDs sanitize Environment Agency station notation before embedding it in r
5959

6060
Deployment descriptions now explicitly identify the resources as Environment Agency hydrology monitoring stations and water sensor systems. This gives the Explorer symbol classifier enough semantic signal to avoid the generic blank friendly land-unit rectangle fallback.
6161

62+
System SensorML now includes a representative Environment Agency river-gauge station photograph as the first document link. This follows the side-card image pattern used by ISS, CO-OPS, NDBC, and aviation weather publishers, where image-type SensorML documents become deployed-system card thumbnails. Because the Environment Agency station resources do not expose station-specific photos, the image is labeled as representative rather than exact-station imagery and includes source/license attribution: Brian Green / Geograph, CC BY-SA 2.0, via Wikimedia Commons.
63+
64+
The Explorer also includes a defensive Environment Agency Hydrology thumbnail fallback using the same representative photograph. This is needed because the current OSH server still returns HTTP 500 on system SensorML PUTs, so freshly added image metadata may not reach the live side card through the normal SensorML path until that server behavior is fixed.
65+
6266
### Explorer Symbol Classification
6367

6468
Environment Agency Hydrology was aligned with the existing water/weather station publishers for NATO/STANAG display. The closest established symbol family is the friendly emplaced sensor symbol already used for USGS Water, CO-OPS, NDBC, and NWS station resources.
@@ -175,6 +179,8 @@ The server enforces the DataRecord result fields strictly. The runtime was adjus
175179

176180
Procedure SensorML is accepted. System SensorML PUTs currently return HTTP 500 for all Environment Agency station systems on the configured server. This does not block the operational path: systems, datastreams, deployments, and live observations are present and working. The bootstrap logs the skipped SensorML PUTs and continues.
177181

182+
The representative gauge photo was added to system SensorML, but this server-side PUT failure means the live Explorer cannot rely on SensorML metadata alone for the side-card thumbnail. The Explorer fallback supplies the same representative image when Environment Agency Hydrology deployments have no SensorML media link.
183+
178184
## Documentation Updates
179185

180186
Updated `publishers/README.md` to include Environment Agency Hydrology in the publisher fleet and bootstrap command list.

docs/research/new-publisher-source-planning/Environment_Agency_Hydrology_Publisher_Implementation_Plan_2026-05-26.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,11 @@ System metadata should include:
141141
- river/catchment/location metadata if available,
142142
- source station URL,
143143
- available curated measures,
144+
- representative hydrometric gauge photo metadata for Explorer side-card thumbnails,
144145
- licensing and attribution note.
145146

147+
Environment Agency station resources do not expose station-specific photos. Use an explicitly labeled representative Environment Agency river-gauge photograph rather than implying that the image is the exact selected station. Preserve attribution and license metadata in SensorML document links.
148+
146149
### Datastreams
147150

148151
Create one datastream per selected Environment Agency measure:

publishers/environment_agency_hydrology/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@ Use `--stations` with comma-separated Environment Agency station notations to pu
4141
- Values can be provisional or revised; result payloads preserve source `quality`, `completeness`, and validation-count fields when present.
4242
- Explorer NATO/STANAG display should use the friendly emplaced sensor symbol family (`SFGPEWRH-------`), matching USGS Water, CO-OPS, NDBC, and NWS station publishers.
4343
- Explorer deployed-system cards and map click popups display latest readings from the station datastreams. Freshness is based on source `phenomenonTime`, so stale groundwater values remain visibly stale even if they were published into CSAPI recently.
44+
- System SensorML includes a representative Environment Agency river-gauge photograph for Explorer side-card thumbnails. The image is a visual proxy, not a curated-station-specific photo: Brian Green / Geograph, CC BY-SA 2.0, via Wikimedia Commons.
45+
- The production Explorer has a matching fallback thumbnail for Environment Agency Hydrology because the current OSH server rejects system SensorML PUTs with HTTP 500.

publishers/environment_agency_hydrology/bootstrap_environment_agency_hydrology.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@
4747
EA_MEASURES = "https://environment.data.gov.uk/hydrology/id/measures.json"
4848
EA_READINGS = "https://environment.data.gov.uk/hydrology/data/readings.json"
4949
OGL3 = "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/"
50+
EA_GAUGE_PHOTO = (
51+
"https://upload.wikimedia.org/wikipedia/commons/f/f0/"
52+
"Environment_Agency_Morton_River_Gauge_Station_-_geograph.org.uk_-_283345.jpg"
53+
)
54+
EA_GAUGE_PHOTO_PAGE = (
55+
"https://commons.wikimedia.org/wiki/"
56+
"File:Environment_Agency_Morton_River_Gauge_Station_-_geograph.org.uk_-_283345.jpg"
57+
)
58+
CC_BY_SA_20 = "https://creativecommons.org/licenses/by-sa/2.0/"
5059

5160

5261
def _load_stations() -> list[dict]:
@@ -169,6 +178,16 @@ def _system_sml(station: dict) -> dict:
169178
notation = station["stationNotation"]
170179
measure_labels = ", ".join(m["label"] for m in station.get("measures", []))
171180
docs = [
181+
{
182+
"role": "http://dbpedia.org/resource/Photograph",
183+
"name": "Representative Hydrometric Gauge Photo",
184+
"description": (
185+
"Representative photograph of an Environment Agency river gauge station. "
186+
"Used as a visual proxy for curated Environment Agency hydrology stations; "
187+
"not a station-specific photograph. Photo: Brian Green / Geograph, CC BY-SA 2.0."
188+
),
189+
"link": {"href": EA_GAUGE_PHOTO, "type": "image/jpeg"},
190+
},
172191
{
173192
"role": "http://dbpedia.org/resource/Web_page",
174193
"name": "Environment Agency Station Resource",
@@ -180,6 +199,18 @@ def _system_sml(station: dict) -> dict:
180199
"name": "Hydrology API Reference",
181200
"link": {"href": EA_API_REFERENCE, "type": "text/html"},
182201
},
202+
{
203+
"role": "http://dbpedia.org/resource/Web_page",
204+
"name": "Representative Gauge Photo Source",
205+
"description": "Wikimedia Commons source page for the representative gauge photo.",
206+
"link": {"href": EA_GAUGE_PHOTO_PAGE, "type": "text/html"},
207+
},
208+
{
209+
"role": "http://dbpedia.org/resource/Web_page",
210+
"name": "Representative Gauge Photo License",
211+
"description": "Creative Commons Attribution-ShareAlike 2.0 license for the representative gauge photo.",
212+
"link": {"href": CC_BY_SA_20, "type": "text/html"},
213+
},
183214
]
184215
for measure in station.get("measures", []):
185216
docs.append({

0 commit comments

Comments
 (0)