A fast, open-source desktop GIS in pure Rust, with a familiar ribbon workflow.
Maps and layers, symbology, labeling, selection, editing, geoprocessing and export: native
egui on the GPU, one codebase for Windows, macOS and Linux, and every action scriptable.
Every screenshot is RustGIS itself, rendered offscreen by cargo run -p rustgis-ui-egui --example ui_shot.
| Area | Highlights |
|---|---|
| Data | GeoJSON, CSV with longitude/latitude, Shapefile in; GeoJSON and CSV out; standalone tables |
| Rasters | GeoTIFF and cloud-optimised GeoTIFF (any pixel type, tiled or striped, compressed), ASCII grids; on-the-fly reprojection from any EPSG code; Stretch, RGB, Classify, Unique Values, Colormap and Shaded Relief symbology; five stretch types, DRA, band combinations, resampling, brightness/contrast/gamma; pixel identify, statistics, GeoTIFF export |
| Map | 3D globe view (drag to turn), Web Mercator or any projection (Robinson, Equal Earth, Winkel Tripel and other world, polar and regional presets, or an EPSG code); smooth pan/zoom, five basemaps, graticule, bookmarks, previous/next extent, Go To XY, scale box, multiple maps per project |
| Symbology | Single symbol, unique values, graduated colours (natural breaks, equal interval, quantile), proportional symbols, eight colour schemes, marker shapes, outlines, transparency, visibility ranges |
| Labeling | Per-layer labels with field, size, colour, bold and halo; collision-free placement |
| Selection | Click and box select (add/remove), Select By Attributes with live SQL validation, Select By Location, switch/clear/zoom to selection, layer from selection |
| Editing | Create points, lines and polygons; delete; edit cells in the attribute table; add, delete and calculate fields; undo/redo for everything |
| Analysis | Buffer, Clip, Erase, Dissolve, Minimum Bounding Geometry, Feature To Point, Simplify, Summarize Within, Calculate Geometry, Summary Statistics, Export Features; plus 1,000+ raster, vector, LiDAR, hydrology and terrain tools from the GeoLibre suite (an optional download: desktop, command line and web app) |
| Inquiry | Identify pop-ups, geodesic distance and area measurement, live coordinates (DD or DMS) |
| Share | PNG export with labels and a scale bar at any DPI; export layers to GeoJSON/CSV |
| Productivity | Command search (Ctrl+K), keyboard shortcuts, dark mode, Catalog pane with folder browsing |
| Languages | The interface in 15 languages (English, German, Spanish, French, Italian, Dutch, Portuguese, Russian, Turkish, Azerbaijani, Indonesian, Vietnamese, Chinese, Japanese, Korean), following the system language or chosen under View › Language |
The honest picture is in ROADMAP.md and the generated coverage report.
RustGIS also runs as a WebAssembly app at web.rustgis.app: the same ribbon and tools, with the browser's file picker for GeoJSON, CSV and projects, and downloads for Save and Export.
Download the desktop app for Windows, macOS or Linux from the latest release (see Installation for the files and first-run notes).
cargo run --release -p rustgis # the desktop app with the World Atlas sample
cargo run --release -p rustgis -- data.geojson # open data (or a .rgisx project)Command line: every ribbon action is a command with an id.
rustgis-cli commands # all command ids and parameters
rustgis-cli render countries.geojson map.png --basemap ocean
rustgis-cli run --sample \
--cmd 'gp.run={"tool":"countPoints","params":{"polygons":"Countries","points":"Cities"}}' \
--cmd 'layer.symbology={"layer":"Countries_Summarize","type":"graduated","field":"point_count"}' \
--cmd 'share.exportMap={"path":"out.png","dpi":192}' --save atlas.rgisx
rustgis-cli parity # ribbon feature coverage checklistLayered crates, each depending only on the ones below it:
| Layer | Crate | Job |
|---|---|---|
| L0 | rustgis-geom |
coordinates, extents, Web Mercator, geodesic distance/area, scale |
| L1 | rustgis-data |
features and typed attributes; GeoJSON, CSV, Shapefile; SQL where clauses |
| L2 | rustgis-map, rustgis-analysis |
layers, symbology, labeling, camera, basemaps; geoprocessing (on geo) |
| L3 | rustgis-render |
tiny-skia renderer, label placement, PNG export |
| L4 | rustgis-engine |
session, undo, command registry, parity catalog, sample project |
| L6 | rustgis-ui-egui |
the ribbon front end (swappable) |
| apps | rustgis, rustgis-cli, rustgis-web |
desktop, command line, browser (WebAssembly) |
cargo xtask ci runs formatting,
clippy, the tests and the layering check. Contributor and agent notes: AGENTS.md.
Licensed under the Apache License 2.0. Sample data from Natural Earth (public domain).




