Skip to content

Releases: opengeos/terrio

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 20 Oct 03:22
a08e7d8

terrio 0.3.2 is the first release whose terrio command line installs without a Rust toolchain.

Install the command line

curl -LsSf https://terrio.opengeos.org/install.sh | sh                                     # Linux, macOS
powershell -ExecutionPolicy ByPass -c "irm https://terrio.opengeos.org/install.ps1 | iex"  # Windows
pip install terrio                                                                         # or uv tool install terrio
cargo binstall terrio-cli

Highlights

The command line without Rust

  • pip install terrio installs the terrio command (and python -m terrio), run from the extension module (#101)
  • Standalone binaries for Linux (static, x86_64 and aarch64), macOS (Intel and Apple silicon) and Windows (x64 and ARM64) attached to this release, with SHA-256 checksums, and found by cargo binstall terrio-cli (#101)
  • One-line installers that pick the binary for the machine, verify its checksum and install it in ~/.local/bin, tested in the release build on every platform (#102, #103)

Formats

  • FlatGeobuf written in one pass, without reading the input first to find the column types: lines to FlatGeobuf was the one large-file benchmark where terrio was slower than GDAL (#100)
  • A GeoPackage with a hot rollback journal next to it is refused rather than rewritten from possibly half-written bytes, on the platforms where SQLite's locks aren't taken (Windows, Emscripten) (#97)
  • Built against the hdf5-reader fix for version 1 and 2 compound datatypes (#98)

Documentation

  • The roadmap is a page of the documentation site, with each item as a checkbox (#104)
  • The playground loads terrio-js 0.3.1 (#96)

Build

  • openjp2 built without overflow checks in debug builds (#99)

Full Changelog: v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 15:53
bf2d97e

terrio 0.3.1 is the first 0.3 release on PyPI. It is 0.3.0 plus a fix for the Pyodide wheel build (#93). 0.3.0 reached crates.io and npm, but its Pyodide wheel failed to build, so it was not published to PyPI or as a GitHub release. The notes below cover everything since 0.2.0.

Highlights

Streaming and large files

  • Stream vector conversions instead of loading layers whole (#73)
  • Stream OpenStreetMap PBF files and multi-layer GeoPackages (#75)
  • Write GeoParquet row groups with parallel column encoding (#76), and without a profile pass for text-only schemas (#91)
  • Compute raster statistics strip by strip (#70), and read and write rasters by strips in dem, warp and mosaic (#87)
  • Decode LZW GeoTIFF chunks whole (#90)
  • Large-file benchmarks documented (#89)

Formats

  • GeoPackages updated in place, as SQLite updates them; remote Zarr stores read in place (#82)
  • GeoPackage info from stored metadata; memory-mapped SQLite reads (#69)
  • HDF-EOS5, COSMO-SkyMed and netCDF georeferencing, complex bands, GDAL vector writing (#81)
  • GeoTIFFs with packed samples (GDAL's NBITS) (#68)
  • Tile archives: invalid polygons repaired as GDAL does, AVIF tiles, archive updates (#78)
  • Point clouds: EPT writing, E57 written in chunks, more PDAL filters (#79)

WebAssembly

  • Raster and vector operations, remote reads with fetch, formats in memory, LERC/JPEG XL/JPEG GeoTIFFs (#83)
  • The playground loads terrio-js 0.2.0, with JPEG 2000 output (#63)

Fixes

  • Raster operations keep values in their type (#77)
  • In-memory Zarr paths kept as they are on Windows (#85)
  • SQLite file locks skipped on Emscripten, so the Pyodide wheel builds again (#93)
  • Review follow-ups for #75 and #78 (#80)

CI

  • macOS and Windows on pushes to main, on demand for pull requests (#71, #74); the real-data job split (#86); a Claude code review workflow (#72); the GeoPackage append test made Unix-only (#84)

Full Changelog: v0.2.0...v0.3.1

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 13:52
af386b0

What's Changed

  • Docs: a Playground page that runs terrio in the browser by @giswqs in #52
  • Docs: a quickstart notebook with an Open in Colab badge by @giswqs in #53
  • Close the remaining non-CRS differences from GDAL by @giswqs in #54
  • netCDF-4 writing, netCDF groups, HDF5 rasters, histograms and color relief VRTs by @giswqs in #55
  • Bump the actions group with 4 updates by @dependabot[bot] in #51
  • Bump lz4_flex from 0.13.1 to 0.14.0 by @dependabot[bot] in #50
  • CRS: datum shift grids, geoid models and coordinate epochs by @giswqs in #56
  • Roadmap: next steps for the Python and WebAssembly bindings by @giswqs in #60
  • terrio.rio: a rasterio-compatible Python API by @giswqs in #59
  • JPEG 2000 in WebAssembly; LERC, JPEG XL, LZMA GeoTIFFs; JPEG decoded as libjpeg by @giswqs in #57
  • Point clouds: EPT, PLY, E57, streaming, waveforms, PDAL filters, TIN gridding by @giswqs in #58
  • terrio.xarray: rioxarray's API on terrio, without GDAL by @giswqs in #61
  • JPEG 2000 by window, terrio.rio gaps (rotation, GCPs, RPCs, masks, shutil, stack, streaming writes), more wheels by @giswqs in #62
  • CI: compare point clouds once in the real-data job by @giswqs in #64
  • Release 0.2.0 by @giswqs in #65
  • CI: a manual release dry run by @giswqs in #66

Full Changelog: v0.1.1...v0.2.0

terrio 0.1.1

Choose a tag to compare

@giswqs giswqs released this 15 Oct 00:19
20de838

The first release on PyPI, and the first published entirely by the release workflow through trusted publishing on PyPI, crates.io and npm.

Install

  • Command line: cargo install terrio-cli
  • Rust: cargo add terrio
  • Python: pip install terrio (wheels for Linux x86_64, aarch64 and musl, macOS Intel and Apple silicon, and Windows; Python 3.10+)
  • JavaScript: npm install terrio-js

Changes since 0.1.0

  • Linux aarch64 wheels are built on manylinux_2_28; 0.1.0's aarch64 build failed, so 0.1.0 never reached PyPI.
  • The npm package is terrio-js (npm rejected terrio as too similar to errno), and now includes the LICENSE file.
  • Dependency updates: osmpbfreader 0.19, weezl 0.2, sha2 0.11 with hmac 0.13.
  • Package badges in the READMEs.

terrio 0.1.0

Choose a tag to compare

@giswqs giswqs released this 14 Oct 23:21
b3004ba

The first release of terrio: pure-Rust geospatial raster, vector and point cloud data I/O, tested file by file against GDAL.

Install

  • Command line: cargo install terrio-cli
  • Rust: cargo add terrio
  • Python: pip install terrio
  • JavaScript (WebAssembly): npm install terrio-js

Highlights

  • Rasters: GeoTIFF/COG (lazy window and overview reads), JPEG 2000, Zarr v2/v3 and GeoZarr, netCDF, HFA, GeoPackage tiles, VRT, PMTiles, MBTiles, STAC items and mosaics, and the Esri, ENVI, SAGA and other grid formats.
  • Vectors: GeoPackage (with R-tree filters and updates), GeoParquet, FlatGeobuf, Shapefile, GeoJSON, CSV, KML/KMZ, GML, GPX, TopoJSON, MapInfo, OpenStreetMap, MVT, and Arrow/GeoArrow conversion.
  • Point clouds: LAS, LAZ and COPC, with remote COPC reads and gridding to DEMs.
  • Remote data: HTTP(S) range requests, s3://, gs://, az://, zip archives and GDAL's /vsi prefixes.
  • Coordinate systems: all 6,354 EPSG geographic and projected CRSs, with GDAL's transformations.
  • Operations: GDAL-style info, convert, translate, warp, mosaic, rasterize, polygonize, terrain tools, raster algebra, proximity and sieve; faster than GDAL on every case in the benchmarks.
  • Bindings: Python (NumPy, type stubs) and WebAssembly for browsers and Node.js.
  • Optional GDAL backend (--features gdal) for formats terrio doesn't read itself.

See the documentation and the conformance report.