Figures showing airborne radar data availability and survey density for Antarctic and Greenland ice sheets, using data from xOPR and BedMap catalogs.
uv syncFor local development with a local xopr checkout, override the source:
uv sync --override ../xoprOr edit pyproject.toml to point xopr at your local path.
All BedMap consumers share bedmap_common.py, which applies the campaign
exclusion list, drops BM2 files superseded by renamed BM3 files, keeps one
version of campaigns present in both BedMap2 and BedMap3, parses temporal
metadata (a missing or year-9999 end date falls back to the start date;
TEMPORAL_OVERRIDES fixes known bad ranges such as the SOAR 1996-2001 file), and
defines the gap rule (MAX_POINT_SPACING_M, 1.5 km) that decides which
consecutive points form a flight line. Per-campaign line-km for the bar
charts come from that rule applied to the point data, stored in
bedmap_campaign_km.csv (rebuild with uv run python bedmap_common.py
after changing the rules; needs the point cache), not from the simplified
catalog geometry. Change those rules there, not in individual plots.
Direct provider sources live in extra_sources.py and are added to every
BedMap-based figure (bar charts, survey density, coastal gaps; --no-extra
disables them in the map scripts):
- AWI ice-sounder tracks (EMR, UWB, UWBM) from the AWI map server WFS
layer
radar:tracks_3031, dated per profile, 1994/95 to date. These replace the AWI BedMap files (EXTERNAL_SOURCE_PREFIXES). The layer lists the 60/600 ns EMR pulses and UWB standard/quicklook products as separate features;load_awi_campaignskeeps one per flight. - KOPRI/UTIG helicopter radar (Amundsen Sea, layers ASE2-ASE6) from the
QIceRadar index (Lindzey 2026, Zenodo 21964546 v0.3.0). Seasons are set in
KOPRI_SEASONS; the raw data are not released. - xOPR substitutes (
opr_tracks.py): collections listed inbedmap_common.OPR_SUBSTITUTIONSare loaded from the CReSIS per-segment CSV flight tracks (real geometry, not the simplified STAC lines) in place of BedMap files that cannot be chained into flight lines (the 2009 Thwaites swath product), or for xOPR-only seasons not in BedMap3 (UTIG COLDEX 2022/23 and 2023/24, GHOST2 2024/25). The institution comes from the STACopr:providerfield.uv run python opr_tracks.py --verifycompares CSV track, STAC and BedMap lengths for the mapped collections.
Downloads are cached under radar_cache/ (gitignored). Dated sources are
placed in their July-June season year; BedMap campaigns keep the calendar-year
spread of their metadata range (campaign_years).
Stacked bar chart comparing data availability across BedMap and xOPR by year (2001–2025). Categorizes data as open access (xOPR), committed to release (AWI, including data released outside xOPR; UTIG 2008+), or not released.
uv run python plot_combined_availability.py
# -> outputs/combined_data_availability.pngGridded survey density maps showing equivalent survey spacing. Supports BedMap and xOPR sources, Antarctica and Greenland regions, and optional zoom to sub-regions.
# BedMap Antarctica (remote catalog)
uv run python plot_survey_density.py --source bedmap_local --region antarctica
# xOPR Greenland
uv run python plot_survey_density.py --source xopr --region greenland
# Zoom to Amundsen Sea Embayment
uv run python plot_survey_density.py --source bedmap_local --region antarctica --zoom aseKey options: --grid-km (cell size, default 30; use 0 for raw survey lines), --zoom (named sub-region: ase, wilkes, aurora), --vmin/--vmax (colorbar limits, default 0.1/10), --target-spacing (target survey spacing in km; switches to diverging PiYG colorscale).
Using --source bedmap_local uses BedMap data with local cache enabled (if not downloaded yet, it will be downloaded). You can also use --source bedmap to ignore any local cache and not create one.
Stacked bar chart of BedMap line-km per year, colored by country of origin.
uv run python plot_bedmap_availability.py
# -> outputs/bedmap_data_availability.png
uv run python plot_bedmap_availability.py --reference-line 153000 --reference-label "Capability of 1 HAPS UAV, 11 week mission"
# -> outputs/bedmap_data_availability_ref.png (with a labelled reference line)Stacked bar chart of xOPR Antarctic line-km per year, colored by institution.
uv run python plot_opr_availability.py
# -> outputs/opr_data_availability.pngCoastal survey density analysis by IMBIE drainage basin, with gap analysis showing additional line-km needed to reach a target resolution.
uv run python coastal_survey_gaps.py --source bedmap_local --coast-dist-km 20 --target-km 2A GitHub Actions workflow (.github/workflows/generate-figures.yml) regenerates the key figures on each push to main and deploys them to GitHub Pages. Enable Pages (source: GitHub Actions) in the repo settings to activate.