Skip to main content

pygndc

Geographic Neural Data Cube — a Python SDK for reading and analyzing .gndc compressed geospatial time-series data.

GeoNDC

What is GeoNDC?

GeoNDC is a continuous-time, AI-ready representation of Earth observation archives. Unlike traditional Analysis-Ready Data (cloud-corrected raster files) or geospatial foundation model embeddings (abstract feature vectors), GeoNDC preserves the original physical observables — surface reflectance, vegetation indices, biophysical variables — while enabling millisecond-level random-access queries at any (x, y, t) coordinate.

Each archive (MODIS, Sentinel-2, Landsat, HiGLASS, …) is encoded into a single self-contained .gndc file (typically 0.5–2 GB) that runs on a laptop, a server, or directly in a browser via WebGPU. Data providers train the model once and publish the file; users download it and run inference locally — the compressed form is the analysis-ready form. No hosted runtime, no API quota, no vendor lock-in.

Key Capabilities

  • Continuous-time reconstruction — query data at any moment, not just original observation times
  • Millisecond random access — point time series in ~7 ms, full-frame reconstruction in ~2 s on a consumer GPU
  • Analytic gradients — compute spatial/temporal derivatives directly from the neural network
  • Compact storage — typically ~100:1 versus Int16 raster baselines, up to ~400:1 versus raw float archives
  • Portable Native encoder and decoder — the default CPU/WGPU path needs no PyTorch, Numba, CUDA toolkit, or runtime JIT; WGPU targets Vulkan, DX12, and Metal, with an optional PyTorch/tiny-cuda-nn integration
  • Implicit gap-filling — cloud-occluded surfaces are reconstructed from the learned spatiotemporal field
  • Multi-sensor support — Sentinel-2, Landsat, MODIS, HiGLASS, and more

Online Viewer & Sample Data

  • Web Viewer: Browse .gndc files directly in the browser via WebGPU at geondc.org/viewer — no installation required, GPU-accelerated, runs entirely client-side.
  • Sample Data: Download .gndc datasets from Hugging Face.

Querying a Collection

Many independently encoded geographic products can be exposed as one logical cube without repacking their neural payloads:

from pygndc import GNDCCollection

collection = GNDCCollection(mode="native_wgpu")
collection.add(r"Y:\HiGLASS\*.gndc")
collection.save("higlass_china.gndc-collection.json")

collection = GNDCCollection.load("higlass_china.gndc-collection.json")
values = collection.query(
    points=[(116.4, 39.9), (118.2, 36.5)],
    time="2023-07-15",
    bands=[0, 1],
)

The collection index loads without opening its members. Queries are grouped by member and decoded through the existing GNDCDataset runtime with a bounded LRU cache. Spatiotemporal windows support in-memory results, stream=True, or direct output to a NumPy .npy file.

Documentation

  • TUTORIAL.md — Installation, quick-start, CLI commands, end-to-end usage examples.
  • API_Reference.md — Full Python API for pygndc.open(), GNDCDataset, GNDCReader, analysis functions.

Installation Extras

Prebuilt packages support Python 3.10–3.13 on Windows x86-64 and Linux x86-64 (glibc 2.28 or newer). They include the encoder, CPU/GPU decoder, GeoTIFF I/O, and Python API. GPU acceleration requires a compatible graphics driver; CPU decoding is available without a GPU. The desktop viewer is optional:

pip install pygndc[viewer]

The desktop viewer caches up to nine chunk readers by default, enough for a 3×3 HiGLASS product, and keeps up to nine model slots resident on WGPU. Set PYGNDC_VIEWER_MAX_CACHED_CHUNKS to tune the host-side LRU and PYGNDC_VIEWER_WGPU_SLOTS to tune device-resident model slots, or change the reader limit at runtime from Tools > Chunk Cache.

Encoding large datasets

GPU training reuses data already loaded into device memory across training rounds. Set train.train_dtype: float16 to store training targets in half precision, or float32 to retain full-precision targets. Model calculations use float32 in either case. The default training-data budget is 4096 MB; set PYGNDC_NATIVE_PERSISTENT_MAX_MB to adjust it for your GPU.

For tiled inputs, the encoder can read the next tile while training the current one. Set tiled.prefetch_chunks: false when available RAM is limited.

Reading large archives

Masks and frame-indexed residual corrections are loaded for requested dates. Repeated queries to the same date reuse recently loaded data. Existing .gndc files can use these improvements without being re-encoded. Older residual formats without a date index continue to use their existing decoding behavior.

GPU loading transfers supported quantized weights directly and restores them on the device. This reduces work during model loading; it does not reduce the memory required by the loaded float32 model. CPU decoding remains available when GPU loading is unavailable.

For applications that process many chunks in sequence, GNDCDataset provides optional prefetch budgets. See the API reference for the parameters and memory limits. Ordinary read() calls do not enable background prefetch automatically.

Changes in 1.0.14

Encoding and decoding APIs now include type declarations for editor completion, parameter hints, and static type checking. Implementation source code is not included in the prebuilt packages.

  • Faster encoder startup by reusing hardware identification within a process.
  • More efficient reuse of GPU training data across epochs.
  • Lower memory use for queries with frame-indexed residual corrections.
  • Faster loading of supported quantized models and repeated queries to a date.
  • Clear errors when a file declares residual corrections that cannot be read.

Existing file formats remain supported. See release notes.

License

GeoNDC is proprietary binary software. Reading and decoding do not require an encoder license. Creating .gndc files requires a valid encoder license. Contact jianboqi@126.com for evaluation or commercial use. See LICENSE for the complete terms.

The GeoNDC file-format specification is published separately to support interoperability. Previously released copies remain governed by the license that accompanied those copies.

Citation

@misc{qi2026geondcqueryableneuraldata,
  title={GeoNDC: A Queryable Neural Data Cube for Planetary-Scale Earth Observation},
  author={Jianbo Qi and Mengyao Li and Baogui Jiang and Yidan Chen and Qiao Wang},
  year={2026},
  eprint={2603.25037},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2603.25037},
}

Contact

Metadata

Release files for pygndc 1.0.14

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

Built distributions (wheels)

Table of built distributions (wheels) for pygndc 1.0.14
File
pygndc-1.0.14-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pygndc-1.0.14-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
pygndc-1.0.14-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pygndc-1.0.14-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
pygndc-1.0.14-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pygndc-1.0.14-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
pygndc-1.0.14-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pygndc-1.0.14-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details

Total release size: 180.4 MB

Release files / pygndc-1.0.14-cp313-cp313-win_amd64.whl

Download URL pygndc-1.0.14-cp313-cp313-win_amd64.whl
Size 7.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
7c1b6af1e20760ab5be25d44510b116ae4c8de1243a8c2d7dc17b0e5556b7fcc
BLAKE2b-256 checksum
How to use checksums
a8b200c29324085fd5f68a186768f58f4e165479f3181a4d759b3fd6dc656a14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pygndc-1.0.14-cp313-cp313-manylinux_2_28_x86_64.whl
Size 37.8 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a1b8c8ff35f77f899d10e9d13dffa43cbae12e87bec6d725a5989177fc8d0530
BLAKE2b-256 checksum
How to use checksums
a432774bb81c4bb9ab16a2eab8ca22fe5e70ef3bcbc4eb81878b462e12631092
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp312-cp312-win_amd64.whl

Download URL pygndc-1.0.14-cp312-cp312-win_amd64.whl
Size 7.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c105d4729113b3ea3caba7c6da208b498700568dc14e5d00ecaf55cd2a2ee186
BLAKE2b-256 checksum
How to use checksums
c26cc8e77f4e085d76913d7d30e448334f1c9566fd35e42db340a715fa45d577
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pygndc-1.0.14-cp312-cp312-manylinux_2_28_x86_64.whl
Size 38.2 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4ab5aab5ac11c47d4129c10e985483b1de04ebe323f62745a34e47870f254d2c
BLAKE2b-256 checksum
How to use checksums
b2548ffc2be34585b0a44547399a8b4f03bd74b3827fc0759c935322ef974d2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp311-cp311-win_amd64.whl

Download URL pygndc-1.0.14-cp311-cp311-win_amd64.whl
Size 7.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
6ec31f6d8268365efbedf0737d37aeaf24b9caadd7ff791645ba2e52aa22f891
BLAKE2b-256 checksum
How to use checksums
c44eaa89778602ad97f8d41a357beec84062d2f41c5a16878ee644c43830d16b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pygndc-1.0.14-cp311-cp311-manylinux_2_28_x86_64.whl
Size 38.8 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1d61e1e26579e5ffead142e799c95cdefd8a7205584a36de774e640b324f7be9
BLAKE2b-256 checksum
How to use checksums
d0a539841e8b1baeb3fd073e1049f0c84d23d119ea25992c134dc784cc6a5629
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp310-cp310-win_amd64.whl

Download URL pygndc-1.0.14-cp310-cp310-win_amd64.whl
Size 7.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e64c2c1e8476c556c02acb86b30c7c90e69d52ffb4a4327f2519d871dc2433df
BLAKE2b-256 checksum
How to use checksums
01cbe963bdded3baa1b9a8b1d17c00f7a13abec0022e6f8b0ba1dd08d0ffbd79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / pygndc-1.0.14-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pygndc-1.0.14-cp310-cp310-manylinux_2_28_x86_64.whl
Size 37.2 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cde9753f6848879cd9368d8e89a2fbddf3cb2353f8f55aa9efab712d4e95f642
BLAKE2b-256 checksum
How to use checksums
624977ab460ed33c1f73d8e118ba52fc417cddcaa2c2439b914bbf8088710a17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

1.0.14 This release

8 release files

1.0.12

8 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.1

2 release files

1.0.0

2 release files

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