Repository navigation
Releases: opengeos/terrio
Release list
v0.3.2
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-cliHighlights
The command line without Rust
pip install terrioinstalls theterriocommand (andpython -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-readerfix 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
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,warpandmosaic(#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
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
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 rejectedterrioas too similar toerrno), 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
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/vsiprefixes. - 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.