Skip to main content

geoscena

License: Apache-2.0

AOI public-geodata acquisition + SceneBundle fusion and meshing core for 3D area reconstruction. geoscena turns a geographic Area of Interest into a projected, fused, mesh-ready SceneBundle (Draco/meshopt-ready glTF layers + a provenance manifest) assembled from open public datasets. It is the reusable, product-agnostic core behind Maqueta; nothing enters a bundle without recorded provenance (source, URL, license, fetch date).

What it does

Given an AOI (a centre + half-size, or a bbox), geoscena:

  1. Fetches each available open layer, AOI-scoped, from its authoritative source:
    • Buildings + roads from Overture Maps GeoParquet on S3 (DuckDB spatial pre-filter).
    • Terrain from Copernicus GLO-30 DSM (AWS Open Data, keyless COG windowed reads).
    • Land cover from ESA WorldCover 10 m (AWS Open Data).
    • Water / green / rail context from OpenStreetMap (OSMnx / Overpass).
    • (extendable: Google Open Buildings 2.5D height rasters, GHS-POP, USGS 3DEP lidar.)
  2. Fuses them: the height-provenance ladder assigns every building a height from the best available source (measured -> floors x floor-height -> height raster -> prior) and records which source was used per building, so inference is reported, never hidden.
  3. Meshes in the AOI local metric frame (metres, Y-up on export): adaptive terrain TIN (Delatin-style greedy refinement), extruded building prisms, buffered road/rail ribbons draped on the terrain, flat water/green surfaces.
  4. Writes a SceneBundle: one .glb per layer + manifest.json (the processing->web contract), with per-layer stats, height-provenance mix, and a data-credits list.

Install

pip install geoscena                 # core (numpy/scipy/shapely/geopandas/rasterio/trimesh)
pip install 'geoscena[overture]'     # + DuckDB (buildings/roads)
pip install 'geoscena[osm]'          # + OSMnx (water/green/rail)
pip install 'geoscena[all]'          # everything (incl. lidar, gltf compression helpers)

Python >= 3.11. No native compiler required (the terrain TIN is pure-Python over SciPy).

Use

from geoscena.aoi import AOI
from geoscena.build import BuildConfig, build_scene

aoi = AOI.from_center("Berlin Mitte", lon=13.405, lat=52.517, half_size_m=1200)
bundle = build_scene(aoi, BuildConfig(fetched="2026-07-12"))
bundle.write("out/berlin_mitte")   # -> terrain.glb, buildings.glb, roads.glb, manifest.json

or from the CLI:

geoscena build --name "Berlin Mitte" --lon 13.405 --lat 52.517 --half 1200 \
    --fetched 2026-07-12 --out out/berlin_mitte
geoscena info    # list known sources + licenses

Provenance and licensing

Every layer carries a LayerProvenance (source, URL, license key, fetch date, method). bundle.any_noncommercial() flags AOIs that pulled a non-commercial source. Default sources are all commercial-OK: Overture/OSM (ODbL), GLO-30 (Copernicus free), WorldCover (CC-BY-4.0). See docs/ for the data contracts and per-source cards.

Status

0.x while the SceneBundle contract stabilizes. Consumed by Maqueta via git tag ref until the first PyPI release (ADR-0061 trusted publishing).

Owner: Felipe Santibanez-Leal · fsantibanez@gmail.com · @fsantibanezleal

Metadata

Release files for geoscena 0.1.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 geoscena 0.1.0
File Size Uploaded
geoscena-0.1.0.tar.gz 31.1 kB Details

Built distribution (wheel)

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

Total release size: 66.3 kB

Release files / geoscena-0.1.0.tar.gz

Download URL geoscena-0.1.0.tar.gz
Size 31.1 kB
Tags Source
SHA-256 checksum
How to use checksums
54769ed54823876f685cfd3d09f15b1f4e65f5e7d0c5b41dfa1ef19b6916d2b4
BLAKE2b-256 checksum
How to use checksums
fcc970caa3708f5e9453e2f98f071dcceb06f8853d8daa21fc56d4e4854212e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 13, 2026.

Transparency log

Release files / geoscena-0.1.0-py3-none-any.whl

Download URL geoscena-0.1.0-py3-none-any.whl
Size 35.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed1c41194c61411489773cabc7aded4c9d4b203de37617b83a18ab06cd083f49
BLAKE2b-256 checksum
How to use checksums
17a7a48dda1419141314de041deef6477fe9e0edeb1e528cbf0c9bbc34445524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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