Skip to content

Add interactive UNR grid web viewer + 0.3 grid data layer - #45

Merged
mgovorcin merged 4 commits into
mainfrom
viewer-clean
Jul 13, 2026
Merged

mgovorcin merged 4 commits into
mainfrom
viewer-clean

Conversation

@mgovorcin

Copy link
Copy Markdown
Contributor

Adds a self-contained MapLibre GL viewer for UNR gridded GPS time series, deployed to GitHub Pages at https://opera-adt.github.io/geepers/, plus the 0.3 grid data layer its exporter depends on.

Viewer (scripts/browse_unr_grid.html)

Single self-contained file (MapLibre GL v5, uPlot, hyparquet inlined):

  • Globe (default) / Mercator, 3D terrain, tectonic plate boundaries (Bird 2003), theme-aware light/dark UI
  • Per-point E/N/U time series with ±σ band, Shift+click comparison chart, CSV export
  • Velocity (mm/yr) mode; horizontal (E+N) / vertical (Up) quiver overlays with scale legend
  • Find-by-id, date-stride subsampling + memory guard, runtime dataset load (local file / URL)
  • ETag-keyed fetch so a regenerated parquet can't serve stale cached byte ranges

Deployed via scripts/deploy-pages.sh (rebuilds a lean gh-pages branch).

Data pipeline

  • create-geoparquet.py: --source grid|stations, --gridded-type, --zero-by mean|start|none, --clear-cache; UTC-aware start_date
  • UnrGridSource 0.3 (constant/variable gridded products); fix: grid sigma_* columns converted mm→m like E/N/U
  • BaseGpsSource: zero_by="none" passthrough; _filter_by_date accepts tz-aware date strings

Validation

  • pre-commit (black, ruff, end-of-file, etc.) pass; mypy clean (checked in a numpy-2.4 env)
  • import geepers, create-geoparquet.py --help, and tests/gps_sources all pass

Supersedes the viewer portion of #44 (which also bundled the WIP analysis toolbox).

🤖 Generated with Claude Code

mgovorcin and others added 2 commits July 13, 2026 11:53
Self-contained MapLibre GL viewer (scripts/browse_unr_grid.html) for UNR
gridded GPS time series, deployed to GitHub Pages via scripts/deploy-pages.sh
(https://opera-adt.github.io/geepers/):
- globe (default) / Mercator, 3D terrain, plate boundaries (Bird 2003),
  theme-aware modern UI (light/dark)
- per-point E/N/U time series with +/-sigma band, comparison chart, CSV
  export; velocity (mm/yr) mode; E+N / Up quiver overlays with scale legend
- find-by-id, date-stride subsampling + memory guard, runtime dataset load
  (file / URL), ETag-keyed fetch to avoid stale cached byte ranges

Data pipeline:
- create-geoparquet.py: --source grid|stations, --gridded-type,
  --zero-by mean|start|none, --clear-cache; UTC-aware start_date
- UnrGridSource 0.3 (constant/variable gridded products); grid sigma
  columns converted mm->m like E/N/U
- BaseGpsSource: zero_by="none" passthrough; _filter_by_date accepts
  tz-aware date strings

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The spatial-filter method (cx bbox-slice) changes station block order in
combined_data.csv, so HLNA's row is no longer at index 0. Compare row
content with check_names=False instead of asserting the absolute label.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
mgovorcin and others added 2 commits July 13, 2026 15:18
deploy-pages.sh now builds the mkdocs site into docs/ (viewer stays at the
Pages root); .nojekyll at root covers the docs assets. Viewer links to Docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…cally)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mgovorcin
mgovorcin merged commit 10d5786 into main Jul 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant