geoscena
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:
- 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.)
- 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.
- 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.
- Writes a
SceneBundle: one.glbper 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)
| File | Size | Uploaded | |
|---|---|---|---|
| geoscena-0.1.0.tar.gz | 31.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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