Skip to main content

AOI public-geodata acquisition + SceneBundle fusion and meshing core for 3D area reconstruction

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geoscena-0.1.0.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geoscena-0.1.0-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

File details

Details for the file geoscena-0.1.0.tar.gz.

File metadata

  • Download URL: geoscena-0.1.0.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for geoscena-0.1.0.tar.gz
Algorithm Hash digest
SHA256 54769ed54823876f685cfd3d09f15b1f4e65f5e7d0c5b41dfa1ef19b6916d2b4
MD5 a9a05eca3713fd7f2856d1ae3a703891
BLAKE2b-256 fcc970caa3708f5e9453e2f98f071dcceb06f8853d8daa21fc56d4e4854212e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoscena-0.1.0.tar.gz:

Publisher: publish-pypi.yml on fsantibanezleal/CAOS_GeoScena

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoscena-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: geoscena-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for geoscena-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ed1c41194c61411489773cabc7aded4c9d4b203de37617b83a18ab06cd083f49
MD5 a3546a021636dbed6eaf294884dbf216
BLAKE2b-256 17a7a48dda1419141314de041deef6477fe9e0edeb1e528cbf0c9bbc34445524

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoscena-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on fsantibanezleal/CAOS_GeoScena

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page