Skip to content

Tracking: feature parity with GeoLibre #77

Open

Description

@giswqs

Tracking issue for feature parity with GeoLibre v3.4.0. Each item names what GeoLibre offers and where RustGIS stands today (missing or partial). Items already on the RustGIS roadmap's "Next" list are marked (Next). The geolibre-rust / Whitebox geoprocessing suite that RustGIS already embeds is not counted either way.

Sources: GeoLibre docs/features.md, docs/data-formats.md and the other GeoLibre docs named per section; RustGIS ROADMAP.md, docs/, and the command registry (crates/engine/src/cmd). Tick an item, or link its PR or sub-issue, as it lands. Some items may be out of scope for a pure-Rust desktop GIS (noted inline); close those as "won't do" with a reason rather than leaving them open.

Data formats & sources

GeoLibre: docs/data-formats.md, docs/features.md › Adding data, SQL and databases

Map rendering & 3D

GeoLibre: docs/features.md › Map workspace, Rendering engines and 3D globe; docs/*-renderer.md

  • 3D terrain: exaggeration, keyless Terrarium tiles, a custom DEM/COG terrain source, Cesium World Terrain. RustGIS is partial: a globe and 2.5D extrusion (Next)
  • Full 3D scene content: 3D Tiles, I3S, point clouds, splats, CZML time-dynamic scenes, true-Z vectors. RustGIS: missing (Next)
  • MapLibre style fidelity: line labels and road shields, line patterns, hillshade and fill-extrusion in styles. RustGIS is partial
  • Basemap catalog: OpenFreeMap, Protomaps, EOX S2 cloudless, regional basemaps, planetary bodies, thumbnail previews. RustGIS is partial: 5 offline basemaps, custom tile layers and a Basemaps plugin
  • Multi-map grid: N synchronized panes. RustGIS is partial: Side by Side with two maps and linked views and cursors
  • Coordinate grids and readouts: UTM and MGRS/USNG grids, UTM/MGRS/DDM readouts, grid-reference search, pointer elevation. RustGIS is partial: graticule, decimal/DMS and Go To XY
  • Live data overlays: RainViewer radar, a Timelapse of annual cloudless imagery, live feeds (quakes, satellites, fires, AIS). RustGIS: missing
  • Wikipedia cards, Street View/Mapillary, OpenAerialMap, historical imagery: RustGIS: missing
  • On-map right-click menu with quick analysis: copy the coordinate, open it elsewhere, run a buffer, isochrone or viewshed from the point. RustGIS: missing
  • Flight simulator, camera tours, atmosphere: RustGIS is partial: a First-Person walk and animation keyframes
  • Multiple rendering engines (MapLibre, Mapbox, Cesium, ArcGIS): likely out of scope by design; RustGIS has a single native renderer

Cartography & styling

GeoLibre: docs/features.md › Layers, styling, and labels; docs/user-guide/styling.md

  • Layer groups: nested groups with group opacity and visibility, sort, ungroup. RustGIS: missing
  • Rule-based and expression renderers: nested rules with scale ranges. RustGIS: missing (Display Filters are per-scale SQL only)
  • Heatmap and point-clustering renderers: RustGIS is partial: hexagon/square aggregation (Next: heat maps)
  • More classification methods: standard deviation, geometric interval, manual breaks. RustGIS is partial: Jenks, equal interval, quantile
  • Symbol library: a marker library, custom SVG/PNG markers, fill patterns, pie/donut/bar diagrams, arrow lines, inverted-polygon masks, geometry generators. RustGIS is partial: 5 marker shapes
  • Style interchange: import/export SLD, QGIS QML, Mapbox GL JSON. RustGIS is partial: MapLibre style export and .rgisstyle
  • Smart styling: automatic palette on add, one-click style suggestions. RustGIS: missing
  • Label engine depth: expression labels, offset, rotation, wrap, case, priority, de-duplication, number formats. RustGIS is partial: field labels with placement and scale ranges
  • On-map legend and colorbar controls: RustGIS is partial: the legend is in Contents and layouts only
  • Popup and tooltip designer: field picking, formats (date, link, image), an expression title, hover tooltips. RustGIS is partial: popup modes only
  • Raster histogram stretch UI and Raster Attribute Table: RustGIS is partial: stretch types and DRA
  • Colour-ramp library and style presets manager: RustGIS is partial

Attribute data & editing

GeoLibre: docs/features.md › Attribute data and expressions; docs/arcgis-editing.md

  • Vertex editing: move, add and delete vertices. RustGIS: missing (Next)
  • Topological digitizing and CAD dimensions: shared-edge drawing, dimension lines, building massing. RustGIS is partial: snapping, topology validation, traverse
  • Write-back to sources: GeoPackage, GeoJSON, PostGIS, SQL Server, ArcGIS FeatureService. RustGIS: missing (edits stay in the project)
  • Expression builder and engine: one engine shared by filters, labels, styles and Calculate Field, with a function reference. RustGIS is partial: Calculate Field is field op field/number
  • Virtual fields and persistent attribute joins: RustGIS: missing (relationships exist)
  • Attribute form designer: widgets, constraints, conditional visibility. RustGIS is partial: domains, subtypes, attribute rules
  • Editor tracking fields: created/edited by and at. RustGIS is partial: Archiving keeps edit times
  • Table column management: rename, hide and reorder columns, a column explorer. RustGIS is partial: sort, filter, add/delete field
  • Quick filters: per-field checkboxes and range/date controls. RustGIS is partial: a definition query
  • Selection gestures: polygon, freehand, radius. RustGIS is partial: click and box
  • Charts panel and dashboards: histogram, scatter, bar, line, box and pie charts, indicators, cross-filtering. RustGIS is partial: Exploratory Analysis, Infographics, layout/report charts

Analysis

GeoLibre: docs/features.md › Processing and analysis; docs/user-guide/processing.md, model-builder.md, segmentation.md, obia.md

  • Spatial join, intersect, union: RustGIS: missing as built-ins (Next)
  • More built-in vector tools: attribute join, merge, extract vertices, points along lines, fix/check geometry, random extract, buffer options. RustGIS is partial
  • Routing services: isochrones, service areas, OD matrix, multi-stop routing, turn-by-turn (Valhalla/OSRM). RustGIS is partial: shortest path over a line layer
  • Geocoding: forward, batch and reverse, with multiple providers and a place search box. RustGIS is partial: a local locator built from a layer
  • Spatial statistics: Emerging Hot Spot (Getis-Ord Gi*), composite score builder. RustGIS is partial: Suitability Modeler
  • H3 and DGGS grids: H3, A5, DGGRID, DGGAL. RustGIS: missing
  • AI segmentation and detection: SAM/SamGeo, ONNX/YOLO detection, OBIA with eCognition import. RustGIS is partial: pixel classification
  • Visual Model Builder canvas: a node graph with validation and export to code. RustGIS is partial: step lists
  • Re-run or copy history as code; batch runs over a folder: RustGIS is partial: History and models from history
  • Viewshed from public terrain tiles (no DEM needed): RustGIS is partial: needs a loaded elevation raster
  • Conversion: vector to PMTiles/GeoParquet, raster to COG. RustGIS is partial
  • Time Slider: temporal vector, raster and Zarr layers, pixel time series. RustGIS: missing
  • Point cloud annotation: ASPRS classes, 3D boxes. RustGIS: missing
  • Hydrology and elevation downloaders: NLDI navigation, USGS 3DEP and LiDAR, a global DEM downloader. RustGIS: missing

Layouts & printing

GeoLibre: docs/features.md › Map tools, printing, and media; docs/user-guide/print-layout.md

  • SVG layout export: RustGIS is partial: PDF and PNG
  • Atlas along a line, page-filtered tables and charts, copy to clipboard: RustGIS is partial: per-feature map series
  • Map and video recording: canvas recording, a marker along a line to MP4, camera tours. RustGIS is partial: keyframe PNG frames
  • STL 3D export: RustGIS is partial: OBJ and glTF

Sharing, collaboration & publishing

GeoLibre: docs/collaboration.md, docs/server-api.md, docs/user-guide/embedding.md, projects.md, storymaps.md

  • Real-time multi-user collaboration: live sessions, permissions, roster, chat. RustGIS: missing
  • Review comments: anchored, threaded, resolvable. RustGIS: missing
  • Share links, project gallery, accounts: roles, expiry, passwords, a server API. RustGIS: missing (Share As writes static files)
  • Story maps: chapters that fly the live map, a presenter view, HTML export. RustGIS is partial: Presentations
  • Embed API: a postMessage protocol, an npm client, viewer-only and map-only modes, deep links. RustGIS: missing
  • Import QGIS (.qgs/.qgz) and ArcGIS Pro (.aprx/.mapx) projects: RustGIS: missing
  • Autosave, project history, crash recovery, snapshot compare: RustGIS is partial: undo and per-layer archive restore
  • Startup preferences and shareable interface settings: RustGIS is partial: Pane Sets and ribbon/QAT customization
  • Layer metadata with STAC Item export: RustGIS: missing
  • Browser extension ("Open data in …"): RustGIS: missing

Scripting & integrations

GeoLibre: docs/python.md, docs/r.md, docs/notebook.md, docs/mcp.md, docs/plugin-api.md, docs/agent-skill.md

  • Python package / Jupyter widget: two-way sync and a leafmap-style API. RustGIS: missing
  • In-app Python console: RustGIS is partial: the "Python Window" runs command scripts, not Python
  • Live notebook kernel: JupyterLite on the web, JupyterLab on the desktop, driving the live map. RustGIS is partial: built-in command notebooks with .ipynb in and out
  • R package: RStudio, Quarto, Shiny, sf. RustGIS: missing
  • MCP: drive the running desktop app: RustGIS is partial: rustgis-cli mcp (MCP server: rustgis-cli mcp for AI agents, with the docs built in #75) works on its own in-memory project
  • MCP Apps interactive map preview: RustGIS is partial: view_map returns a static PNG
  • A shipped agent skill (SKILL.md): RustGIS: missing
  • Plugin API breadth: side and floating panels, menus, custom layers, map-click tools, assistant tools. RustGIS is partial: commands, tools and a ribbon tab
  • Python FastAPI / GeoPandas processing sidecar: likely out of scope for pure Rust

Platforms & distribution

GeoLibre: docs/android.md, ios.md, mac-app-store.md, downloads.md, self-hosting.md, deployment-capabilities.md, ui-profiles.md

  • Android app: RustGIS: missing
  • iOS/iPadOS app: RustGIS: missing
  • Touch and responsive layout: RustGIS: missing
  • Field data collection: forms, photos, GPS or tap placement. RustGIS: missing
  • GPS: live position, track logs, digitizing from GPS, NMEA receivers. RustGIS: missing
  • PWA and offline basemap tile pre-caching: RustGIS is partial: offline data areas with sync, no PWA
  • Docker self-hosting image with runtime config: RustGIS is partial: the static web build
  • Deployment capabilities, policies and UI profiles: restrict edit, add, run and export per deployment. RustGIS: missing
  • Package-manager and store channels: winget, a Homebrew Cask, the Mac App Store. RustGIS is partial: Microsoft Store MSIX
  • Windows code signing: RustGIS: missing (Windows builds are unsigned)
  • Auto-update: RustGIS: missing
  • Desktop network features: OS trust store, mTLS client certificates, network log, reloading files changed on disk. RustGIS: missing

AI

GeoLibre: docs/user-guide/ai-assistant.md, docs/features.md › AI, Python, and automation

  • Voice commands and spoken answers: RustGIS: missing
  • Provider profiles and per-feature providers; AWS Bedrock, Vercel AI Gateway: RustGIS is partial: one provider and model at a time
  • AI-authored processing models: RustGIS: missing

Other

GeoLibre: docs/features.md › Platforms and interface; docs/i18n.md

  • More languages and right-to-left layout: GeoLibre has 20 languages including Arabic, Persian and Hebrew. RustGIS is partial: 15 languages, no RTL
  • Translated geoprocessing tool names: RustGIS: missing (possibly deliberate)
  • Keyboard-shortcut cheat sheet: RustGIS is partial: Command Search exists

Already at or beyond parity (out of scope here)

  • A native single-binary app, with every action a command shared by the ribbon, CLI, notebooks, models, the assistant and MCP
  • Map projections on the main map (presets and projected EPSG codes)
  • Reports: grouped, with statistics, charts and subreports
  • Data design: domains, subtypes, attribute rules, contingent values, relationships, archiving, topology rules, traverse/COGO
  • Large GeoPackage, GeoParquet and FlatGeobuf files streamed a view at a time
  • Layouts: map frames, grids, extent indicators, map series to PDF
  • Sandboxed WASM plugins with permissions and a hash-pinned registry, the same file on desktop, CLI and web
  • AI Assistant with local models and per-command approval; rustgis-cli ask; an MCP server with built-in docs
  • Imagery: mosaics, mensuration, pixel editor, a trainable classifier, hosted imagery tiles
  • Offline areas with two-way sync of edited features

To verify

  • Shapefile .prj handling: no CRS handling was found in the Shapefile reader, so projected Shapefiles may load unreprojected (needs a test)
  • Whether layer blend modes apply to vector layers
  • Whether raster export writes valid COGs with overviews
  • Accessibility compared with GeoLibre's axe-checked screens
  • Whether offline areas or the tile cache pre-fetch basemap tiles
  • Whether the shortcuts view is a full cheat sheet
  • Some GeoLibre features above are taken from its docs and live in plugins or the Cesium engine only

Activity

  1. added 20 commits that reference this issue on Oct 12, 2026
  2. giswqs commented on Oct 19, 2026

    @giswqs
    MemberAuthor

    GeoLibre's Web Services menu is tracked in #528: a new Home › Web Data button, one alphabetical list of global services plus a submenu per country.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions