Skip to main content

geoviewer

A browser-based viewer for geospatial scientific data — netCDF, HDF5, and GRIB — inspired by NASA Panoply.

Browse a whitelisted server directory, pick a variable, and get an interactive lat/lon map with a time/level slider, colormap control, and a metadata panel. It runs as a single Panel app served over the web, with no uploads — files stay on the server.

Features

  • Multi-format readers behind one interface: netCDF (classic and netCDF-4/HDF5-backed), HDF5, and GRIB (via cfgrib/eccodes).
  • Variable list with automatic dimension-role detection (x/y/z/time) via naming heuristics and unit hints.
  • Interactive map rendered with datashader rasterization (falls back to plain rendering when unavailable).
  • Time and vertical-level sliders for N-D variables.
  • Colormap picker and per-dimension role overrides.
  • Metadata panel showing the selected variable's attributes.
  • Directory whitelist with path-traversal protection — server-side browsing only.

Installation

Requires Python 3.11+.

pip install .

For an editable install that includes the test/lint tooling:

pip install -e ".[dev]"

With uv:

uv pip install .

GRIB support needs the eccodes C library; the eccodes wheel bundles it, or install it system-wide (conda install -c conda-forge eccodes).

Usage

Start the server, pointing NC_VIEWER_ROOTS at one or more directories to browse (colon-separated):

NC_VIEWER_ROOTS=/data/mydata:/data/more python -m panel serve app.py --port 5006

Then open http://localhost:5006/app.

To serve on a remote machine, use an SSH tunnel:

ssh -L 5006:127.0.0.1:5006 user@host

Natural Earth feature data (first render)

Coastlines, borders and the graticule come from Natural Earth data, which cartopy downloads on first use and caches in ~/.local/share/cartopy. Behind a blocking proxy the download fails; the map still renders, just without the overlays (a warning names the unavailable features). To pre-seed the cache on a proxied server, clear the proxy variables and render any map once:

env -u http_proxy -u https_proxy python -m panel serve app.py --port 5006

Environment variables

Variable Default Description
NC_VIEWER_ROOTS . Colon-separated whitelisted directories to browse
NUMBA_CACHE_DIR <tmp>/numba_cache Numba JIT cache directory (used by datashader rasterization)

Architecture

readers/   unified Reader abstraction (netCDF / HDF5 / GRIB) -> xarray
services/  catalog whitelist, dimension role model, slice LRU cache
ui/        Panel components (file browser, variable panel, map, controls, metadata)
app.py     Panel entrypoint wiring callbacks

Testing

python -m pytest -q

License

Apache-2.0

Metadata

Release files for geoviewer 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geoviewer 0.3.0
File Size Uploaded Provenance Actions
geoviewer-0.3.0.tar.gz 24.4 kB With provenance Details for geoviewer-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for geoviewer 0.3.0
File Interpreter ABI Platform Actions
geoviewer-0.3.0-py3-none-any.whl Python 3 none any Details for geoviewer-0.3.0-py3-none-any.whl

Total release size: 45.9 kB

Release files / geoviewer-0.3.0.tar.gz

Download URL geoviewer-0.3.0.tar.gz
Size 24.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8f14d4945c675d51ee48586e6a8cfc2a11282d6aab14dff98e735ef9a720fc4d
BLAKE2b-256 checksum
How to use checksums
1d05252b06f359c7aea155438047fcd23bb34c6c68f433a75c74f05ff8206bae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / geoviewer-0.3.0-py3-none-any.whl

Download URL geoviewer-0.3.0-py3-none-any.whl
Size 21.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
56a70069b015423cddf1e79a078c313965b2d2616ca2c568fc298f0a752242de
BLAKE2b-256 checksum
How to use checksums
30d7887fbb20139caffa537a32d2a981e6065f236a393909924aa9fe0109762a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Security for geoviewer 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for geoviewer-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page