Skip to content
opengeosPublic

About

A fast, open-source desktop GIS in pure Rust with a ribbon workflow

Topics

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

RustGIS logo: a rust-coloured cog framing a segmented globe with an orbit

RustGIS

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.

Written in Rust License: Apache-2.0 Ribbon coverage

Launch the RustGIS web app

RustGIS with the Map tab of the ribbon open. The Contents pane lists Cities, Rivers, Lakes and Countries with their legends; the map shows countries shaded by population, sized city dots and country labels.

A tour

The Feature Layer contextual tab with the Symbology pane showing graduated colours and colour schemes; African countries are selected in cyan on the map and highlighted in the attribute table below

Feature Layer tabs. A contextual tab group appears when a layer is selected: symbology, visibility range, transparency, labeling and data. Selection is synced between the map and the attribute table.

The Analysis tab with a gallery of geoprocessing tools; 300 km dissolved buffers around African cities drawn semi-transparent, and the History pane listing the Buffer run

Analysis. A tool gallery and Geoprocessing pane: buffer, clip, erase, dissolve, summarize within, statistics and more, with a run history.

RustGIS in dark mode with the View tab open over a map of Europe on the Midnight basemap, cities labelled with halos

Dark mode and the View tab: panes, graticule, basemaps.

The Project backstage with cards to start a blank map, the World Atlas sample, or open a project

Project. Start blank, from the World Atlas sample, or open a .rgisx project.

Every screenshot is RustGIS itself, rendered offscreen by cargo run -p rustgis-ui-egui --example ui_shot.

What works today

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.

Try it in the browser

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

Download the desktop app for Windows, macOS or Linux from the latest release (see Installation for the files and first-run notes).

Quick start

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 checklist

Architecture

Layered 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.

License and credits

Licensed under the Apache License 2.0. Sample data from Natural Earth (public domain).

About

A fast, open-source desktop GIS in pure Rust with a ribbon workflow

Topics

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages