Acknowledgements¶
RustGIS stands on the work of many projects and their authors. Thank you to all of them. If your work is missing here, please open an issue.
Disclaimer
RustGIS is primarily built with Claude Opus 5.5, an AI model by Anthropic, working under human direction and review. Its results are tested, but check them for your own use, and please report anything that looks wrong.
The GIS that came before¶
QGIS and ArcGIS Pro set the expectations of a desktop GIS that RustGIS is measured against, and GDAL those of reading geospatial formats. MapLibre defines the style specification RustGIS implements a subset of for vector tiles, and PROJ the coordinate operations it follows. Zarr defines the chunked-array format read by RustGIS's raster provider.
Geoprocessing¶
The optional GeoLibre tool suite (geolibre-rust, built on whitebox-wasm) brings more than 1,000 raster, vector, LiDAR and hydrology tools, after John Lindsay's WhiteboxTools.
The suite runs separately from RustGIS: through an optional downloaded geolibre program on
the desktop and command line, or a WebAssembly runner loaded on demand in the browser.
Data¶
- Natural Earth (public domain) for the sample data.
- The EPSG Geodetic Parameter Dataset of IOGP, PROJ's database and Esri's projection-engine-db-doc for coordinate systems.
- OpenFreeMap, whose free vector tiles and styles (such as Liberty) draw RustGIS's vector basemaps.
- OpenStreetMap and its contributors, Overture Maps and Protomaps for basemaps and open map data.
- The scientific colour ramps of matplotlib (Viridis and family, Cividis), Google (Turbo), Fabio Crameri's Scientific colour maps and cmocean.
ATTRIBUTION.md lists every asset with its source and licence.
Rust crates¶
RustGIS is written in Rust, built on these crates, among others:
| Crate | For |
|---|---|
| egui and eframe, wgpu | The interface, natively and in the browser, and the GPU map |
| tiny-skia, lyon, ab_glyph, image, epaint_default_fonts | CPU drawing, tessellation, text, images and fallback interface fonts |
| geo, geozero, shapefile, a5 | Geometry, formats and the A5 grid |
| proj4rs, crs-definitions | Coordinate systems |
| tiff, laz | GeoTIFF and LAZ |
| Apache Parquet and Arrow, flatgeobuf, rusqlite (SQLite), calamine, csv, roxmltree | GeoParquet (Arrow writes test fixtures), FlatGeobuf, GeoPackage, spreadsheets, CSV and XML |
| postgres, mysql, tiberius, rustls | PostgreSQL/PostGIS, MySQL/MariaDB, SQL Server and TLS |
| miniz_oxide, brotli-decompressor, ruzstd, zstd, lz4_flex, weezl, zip | Compression for rasters, Zarr chunks, map tiles, GeoParquet and plugin packages |
| wasmi | Sandboxed WebAssembly plugins |
| ureq, serde | HTTP and JSON |
| PyO3, wasm-bindgen, rfd | The Python package, the web app and file dialogs |
The full dependency list is in Cargo.toml, the crate and application manifests, and Cargo.lock. Dependency licences and copyright notices are collected in THIRD-PARTY-LICENSES.txt, with a separate list for Python.