Skip to main content

Run the GeoLibre / whitebox_next_gen geospatial tool suite (WASM/WASI) from Python.

Project description

geolibre-wasm (Python)

Run the geolibre-rust geospatial tool suite (the whitebox_next_gen tools plus GeoLibre's own) from Python. The tools are a single WebAssembly (WASI) module executed in-process via wasmtime, so there is no native install, no GDAL, and no server — just pip install.

This mirrors the JavaScript geolibre-wasm/tools API (list_tools, list_manifests, run_tool), so the two stay in sync.

The import package is geolibre_wasm (the distribution is geolibre-wasm), matching the npm package name and avoiding a clash with the separate geolibre application package.

Install

pip install geolibre-wasm

On first use the runtime (geolibre-cli.wasm, ~20 MB) is downloaded from the matching GitHub release and cached under ~/.cache/geolibre/. To use a local copy instead, set GEOLIBRE_WASM=/path/to/geolibre-cli.wasm or pass wasm_path= to any call.

Usage

Inputs are passed as bytes under /work; the tool reads/writes there and any new files come back as bytes.

import geolibre_wasm as gl

# Discover tools (each manifest carries a "source": "geolibre" | "whitebox")
tools = gl.list_tools()
manifests = gl.list_manifests()

# Raster: compute slope from a DEM
dem = open("dem.tif", "rb").read()
res = gl.run_tool(
    "slope",
    args=["--input=/work/dem.tif", "--output=/work/slope.tif", "--units=degrees"],
    input={"dem.tif": dem},
)
assert res.exit_code == 0
open("slope.tif", "wb").write(res.files["slope.tif"])

# Reproject (warp) to a target EPSG
res = gl.run_tool(
    "reproject_raster",
    args=["--input=/work/dem.tif", "--output=/work/wgs84.tif", "--epsg=4326"],
    input={"dem.tif": dem},
)

# Vector: GeoJSON -> GeoParquet (Hilbert-sorted, bbox covering, ZSTD by default)
gj = open("cities.geojson", "rb").read()
res = gl.run_tool(
    "write_geoparquet",
    args=["--input=/work/in.geojson", "--output=/work/out.parquet"],
    input={"in.geojson": gj},
)
open("cities.parquet", "wb").write(res.files["out.parquet"])

Tools that write a directory tree (e.g. raster_to_tiles) return nested keys:

res = gl.run_tool(
    "raster_to_tiles",
    args=["--input=/work/dem.tif", "--output_dir=/work/tiles", "--min_zoom=16", "--max_zoom=18"],
    input={"dem.tif": dem},
)
for path, data in res.files.items():
    # e.g. "tiles/16/9559/32767.png"
    ...

API

  • list_tools(wasm_path=None) -> list[str]
  • list_manifests(wasm_path=None) -> list[dict]
  • run_tool(tool, args=None, input=None, wasm_path=None) -> ToolResult
  • ToolResult(exit_code: int, stdout: list[str], files: dict[str, bytes])
  • runtime_path(wasm_path=None) -> str — resolve the runtime (explicit > GEOLIBRE_WASM > cached download)
  • download_runtime(dest=None) -> str — fetch the runtime ahead of time

License

MIT

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

geolibre_wasm-0.4.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

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

geolibre_wasm-0.4.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file geolibre_wasm-0.4.0.tar.gz.

File metadata

  • Download URL: geolibre_wasm-0.4.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for geolibre_wasm-0.4.0.tar.gz
Algorithm Hash digest
SHA256 c1f1f661154b088f1fd35e21eae9b90564c3974de84ea67e7652fed8a4d5d7f0
MD5 b413c7fe08bbe90e8f7fcf7d1bd44787
BLAKE2b-256 0b689088ff7925fe15f51d5ca432e8da23bcc4a379756db64504670a64ea550b

See more details on using hashes here.

File details

Details for the file geolibre_wasm-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: geolibre_wasm-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for geolibre_wasm-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2dd9a0c5c8b183c8e5742070ceac0c4b2a8f80064eebd36756579d69c4cc775c
MD5 85a89d8f659a266382e7dd06be3f7660
BLAKE2b-256 eea346c0091e1f730d08c87bb304f1ac08a46a31c55ebe3a6b4a9665d87677b5

See more details on using hashes here.

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