|
| 1 | +# BGS SensorThings Publisher Completion Report |
| 2 | + |
| 3 | +Date: 2026-05-26 |
| 4 | + |
| 5 | +## Summary |
| 6 | + |
| 7 | +Implemented the third new publisher: BGS SensorThings telemetry. This publisher uses the public British Geological Survey Sensor Data Service OGC SensorThings API and publishes a curated UKGEOS Glasgow groundwater/geothermal telemetry subset into OSH/CSAPI. |
| 8 | + |
| 9 | +The chosen branch was BGS SensorThings telemetry, not BGS earthquake GeoRSS, because it adds a standards-rich SensorThings-to-CSAPI interoperability story and avoids overlapping the existing USGS earthquake publisher. |
| 10 | + |
| 11 | +## Implemented Files |
| 12 | + |
| 13 | +- `publishers/bgs_sensorthings/stations.json` |
| 14 | +- `publishers/bgs_sensorthings/bootstrap_bgs_sensorthings.py` |
| 15 | +- `publishers/bgs_sensorthings/bgs_sensorthings_publisher.py` |
| 16 | +- `publishers/bgs_sensorthings/README.md` |
| 17 | +- `docs/research/new-publisher-source-planning/BGS_SensorThings_Publisher_Implementation_Plan_2026-05-26.md` |
| 18 | +- `publishers/README.md` updated with fleet entry and bootstrap command |
| 19 | + |
| 20 | +Explorer production polish was implemented separately in the Explorer repository: |
| 21 | + |
| 22 | +- BGS role inference: `Groundwater Telemetry Site` |
| 23 | +- BGS symbol rule: fixed Sensor Emplaced style |
| 24 | +- latest-reading label fix for `Water Level maOD` |
| 25 | + |
| 26 | +## Source |
| 27 | + |
| 28 | +- BGS Sensor Data Service: https://sensors.bgs.ac.uk/ |
| 29 | +- SensorThings API root: https://sensors.bgs.ac.uk/FROST-Server/v1.1 |
| 30 | +- API docs: https://sensors.bgs.ac.uk/api.html |
| 31 | +- Interactive docs: https://sensors-docs.bgs.ac.uk/ |
| 32 | + |
| 33 | +Curated datastreams were selected from BGS records reporting unrestricted access and Open Government Licence / UKRI acknowledgement data usage language. |
| 34 | + |
| 35 | +## Curated Systems |
| 36 | + |
| 37 | +| Curated site | SensorThings Thing ID | Name | Coordinates | |
| 38 | +| --- | --- | --- | --- | |
| 39 | +| `gga01-03` | `195` | Downhole hydro logger GGA01 | -4.200163, 55.839415 | |
| 40 | +| `gga05-03` | `197` | Downhole hydro logger GGA05 | -4.199619, 55.837690 | |
| 41 | +| `gga07-03` | `200` | Downhole hydro logger GGA07 | -4.201172, 55.838337 | |
| 42 | + |
| 43 | +Each system has three datastreams: |
| 44 | + |
| 45 | +- Water Temperature |
| 46 | +- Conductivity |
| 47 | +- Water Level maOD |
| 48 | + |
| 49 | +## Live Bootstrap |
| 50 | + |
| 51 | +Command run: |
| 52 | + |
| 53 | +```bash |
| 54 | +py -m publishers.bgs_sensorthings.bootstrap_bgs_sensorthings --force-sml |
| 55 | +``` |
| 56 | + |
| 57 | +Created live resources: |
| 58 | + |
| 59 | +- Procedure: `urn:os4csapi:procedure:bgs-sensorthings:v1`, server ID `04e0` |
| 60 | +- Deployments: |
| 61 | + - root `05ig` |
| 62 | + - group `05j0` |
| 63 | + - `gga01-03` deployment `05jg` |
| 64 | + - `gga05-03` deployment `05k0` |
| 65 | + - `gga07-03` deployment `05kg` |
| 66 | +- Systems: |
| 67 | + - `gga01-03` system `05n0` |
| 68 | + - `gga05-03` system `05ng` |
| 69 | + - `gga07-03` system `05o0` |
| 70 | +- Datastreams: |
| 71 | + - `gga01-03`: `05mg`, `05n0`, `05ng` |
| 72 | + - `gga05-03`: `05o0`, `05og`, `05p0` |
| 73 | + - `gga07-03`: `05pg`, `05q0`, `05qg` |
| 74 | + |
| 75 | +## Server Compatibility Notes |
| 76 | + |
| 77 | +The live OSH server repeated a known behavior seen in earlier publisher work: some system POST requests returned HTTP 500 after the resource had actually been created. The bootstrap recovered those system IDs by UID and continued successfully. |
| 78 | + |
| 79 | +SensorML PUT for the recovered BGS systems returned HTTP 500. The GeoJSON stubs, datastreams, deployments, and observations were still created successfully, and Explorer was able to render BGS deployed-system cards using the available deployment/system/datastream metadata. Rich SensorML system metadata should be treated as a follow-up compatibility item rather than a blocker for the live demo path. |
| 80 | + |
| 81 | +## Live Publish |
| 82 | + |
| 83 | +Command run: |
| 84 | + |
| 85 | +```bash |
| 86 | +py -m publishers.bgs_sensorthings.bgs_sensorthings_publisher --once |
| 87 | +``` |
| 88 | + |
| 89 | +The first live cycle published eight readings before output ended; `gga07-03` was rerun explicitly to confirm the final station end-to-end: |
| 90 | + |
| 91 | +```bash |
| 92 | +py -m publishers.bgs_sensorthings.bgs_sensorthings_publisher --once --stations gga07-03 |
| 93 | +``` |
| 94 | + |
| 95 | +The `gga07-03` rerun published 3 observations, 0 skipped, 0 errors. |
| 96 | + |
| 97 | +## CSAPI Read-Back |
| 98 | + |
| 99 | +Latest observation read-back succeeded for all nine BGS datastreams. |
| 100 | + |
| 101 | +Representative values: |
| 102 | + |
| 103 | +| Site | Datastream | Value | Phenomenon time | |
| 104 | +| --- | --- | ---: | --- | |
| 105 | +| `gga01-03` | Water Temperature | 12.4466 C | 2026-04-13T00:00:00Z | |
| 106 | +| `gga01-03` | Conductivity | 1689.2874 uS/cm | 2026-04-13T00:00:00Z | |
| 107 | +| `gga01-03` | Water Level maOD | 9.5584026158 m | 2026-04-13T00:00:00Z | |
| 108 | +| `gga05-03` | Water Temperature | 11.5819 C | 2026-04-13T00:00:00Z | |
| 109 | +| `gga05-03` | Conductivity | 1693.9048 uS/cm | 2026-04-13T00:00:00Z | |
| 110 | +| `gga05-03` | Water Level maOD | 10.0791145586 m | 2026-04-13T00:00:00Z | |
| 111 | +| `gga07-03` | Water Temperature | 11.454 C | 2026-04-13T00:00:00Z | |
| 112 | +| `gga07-03` | Conductivity | 1669.0203 uS/cm | 2026-04-13T00:00:00Z | |
| 113 | +| `gga07-03` | Water Level maOD | 9.5070321891 m | 2026-04-13T00:00:00Z | |
| 114 | + |
| 115 | +## Explorer Verification |
| 116 | + |
| 117 | +Production Explorer found the BGS deployments after filtering by `BGS` and narrowing visible layers to deployments/systems. |
| 118 | + |
| 119 | +Verified card before Explorer polish deployment: |
| 120 | + |
| 121 | +- `BGS GGA07 UKGEOS Deployment` |
| 122 | +- system subtitle: `BGS GGA07 Downhole Hydro Logger` |
| 123 | +- outputs: Conductivity, Water Level maOD, Water Temperature |
| 124 | +- latest readings: Conductivity, water level, water temperature |
| 125 | +- source links: BGS SensorThings Thing, BGS SensorThings API Docs, Open Government Licence v3.0 |
| 126 | + |
| 127 | +Explorer polish was pushed to improve the card from generic `Deployed System` to `Groundwater Telemetry Site` and to keep `Water Level maOD` as the latest-reading label. |
| 128 | + |
| 129 | +## Remaining Follow-Up |
| 130 | + |
| 131 | +- Recheck Cloudflare after Explorer deploy completes and confirm the production bundle includes `Groundwater Telemetry Site`. |
| 132 | +- Investigate the live OSH SensorML PUT 500 for BGS systems if richer system metadata becomes necessary. |
| 133 | +- Consider representative BGS/UKGEOS imagery only after separate licensing research; no image was added in this pass. |
0 commit comments