Features¶
A feature-by-feature list of what GeoLibre can do today (v2.3). For task-oriented walkthroughs, see the User Guide and the Tutorials; for what is planned next, see the Roadmap.
Platforms and interface¶
- Runs across desktop (Tauri), web (browser), native Android (Tauri v2 mobile), and mobile or small screens, with a responsive, touch-friendly layout that adapts menus, dialogs, and panels (on phones the Layers/Style panels overlay the map as slide-over sheets), plus per-panel visibility through Layout settings
- Command palette (
Ctrl/Cmd+K) that searches and runs menu and toolbar actions across Add Data, Processing, Controls, Plugins, and Help, global keyboard shortcuts for New/Open/Save/Save As and Google Earth-style camera resets (Nnorth up,Utop-down,Rreset view), and a?shortcuts cheat sheet - Customizable UI profiles that tailor which menus, panels, and data sources are visible, so a deployment can present a focused subset of the app to its users. See UI Profiles
- Internationalization framework with react-i18next and 14 complete per-build translation catalogs — including right-to-left Arabic with a fully mirrored interface — plus a
?locale/?langquery parameter to set the embed language - Accessibility pass with axe-checked screens, keyboard navigation, and screen-reader labels
- App-wide, section, and plugin React error boundaries that contain failures and keep the rest of the workspace usable
- Undo/redo for layer and style operations
Map workspace and basemaps¶
- MapLibre map workspace with OpenFreeMap, Protomaps, EOX Sentinel-2 cloudless, and Openbasiskaart basemaps, planetary basemaps for Mars and the Moon (OpenPlanetaryMap) plus Mercury, Venus, the Galilean moons (Io, Europa, Ganymede, Callisto), Titan, Pluto, and Charon (USGS Astrogeology, reprojected to Web Mercator by the tiles Worker) with a per-project ellipsoid whose radius drives distance, area, and scale measurements and a planet switcher in the Layers panel, stacking of multiple raster basemaps, blank background support, double-click to swap the core basemap from the layer panel, a right-click context menu for reading coordinates and quick actions, a Gridlines coordinate-grid overlay with edge labels and a UTM easting/northing grid mode, and toggleable navigation, fullscreen, geolocation, globe, terrain, scale (switchable between metric, imperial, and nautical units), attribution, and logo controls, plus a View menu with viewport history navigation, a reset pitch and bearing control, a distinct north arrow, and View in Google Maps and View in Google Earth actions, and a double-click terrain control for setting vertical exaggeration
- Multi-map grid that splits the workspace into a grid of synchronized map views, so you can compare basemaps, layers, or time steps side by side, with any pane switchable to an optional CesiumJS 3D globe (camera-synced with the 2D maps; requires a Cesium Ion token — see Optional 3D globe credentials)
- Timelapse mode that animates annual cloudless basemaps — EOX Sentinel-2 and NASA GIBS providers (Landsat/WELD and MODIS land cover) — with a provider picker and legend
- Weather menu with live cloud and precipitation radar overlays (RainViewer), a Clouds overlay in the Controls menu, and a Google Earth-style sun position simulation that lights the scene for a given date and time
- Wikipedia knowledge cards: click a place on the map to pull up its Wikipedia summary and info card
Adding data¶
- Load local vector layers supported by DuckDB-WASM Spatial, including common formats such as GeoJSON, GeoParquet, GeoPackage, Shapefile, FlatGeobuf, KML/KMZ (honoring embedded symbology, rendering GroundOverlay images as map overlays that animate through the Time Slider when time-tagged, and displaying embedded Collada
.dae3D models), GML, delimited text (including CSV without coordinates loaded as a standalone attribute table), GPX, and OpenStreetMap PBF extracts (parsed in-browser with osmix) - Reproject vector layers to EPSG:4326 on load, render vector layers that carry Z coordinates in true 3D rather than flattening them onto the ground plane, and split dragged GPX files into named waypoint, track, and route layers
- Large local vector layers render through client-side vector tiling, with a warning before loading very large files
- Add Data menu for XYZ tiles, WMS and WFS (with layers and feature types discovered from the service's GetCapabilities so you pick from a populated dropdown), GeoJSON URLs, GeoRSS feeds (URL or file), vector tiles (including OGC API - Tiles vector tile services), COG and GeoTIFF rasters, Cloud-Optimized NetCDF/HDF (via kerchunk references) plus local HDF5 and NetCDF-4 files, MBTiles, ArcGIS FeatureServer and VectorTileServer layers, PMTiles, Zarr, LiDAR, 3D Tiles (including authenticated tilesets via custom request headers), ArcGIS I3S scene layers (Integrated Mesh and 3D Object layers rendered on deck.gl), multi-layer GeoPackages with a layer picker so only the chosen feature tables load, delimited text with a source CRS field so projected easting/northing columns reproject correctly, CAD drawings (DXF/DWG) with a drawing-layer picker and CRS selector, Esri File Geodatabases (.gdb folders, desktop) with a feature-class picker and automatic reprojection, Gaussian splats, glTF/GLB 3D models placed at coordinates, georeferenced video overlays, and geotagged photos imported as a point layer from their EXIF GPS (with manual placement and drag for photos lacking coordinates, and a true native-resolution photo viewer), with a fully internationalized dialog, comma decimal support, drag-and-dropped CSV coordinate files, sample-data dropdowns on every upstream-backed panel for loading ready-made example datasets, and a saved service library for storing and re-adding frequently used web-service endpoints
- QGIS-style Browser panel (Data Source Manager) for exploring and adding data from one place: browse map Services and Recent items, connect to PostGIS databases and browse their schemas and tables, drill into local files, save and reopen Favorites, add a New connection per service kind, with full keyboard navigation of the tree
- Deck.gl Layer builder for composing deck.gl overlays from uploaded files or remote URLs
- Cloud data integrations through the Planetary Computer and Earth Engine panels, the Overture Maps plugin, and federal Web Services plugins
- Manual and automatic refresh for WFS, GeoJSON URL, and Add Vector Layer URL layers
- Drag and drop vector and GeoTIFF/COG raster files onto the map to add them as layers
Layers, styling, and labels¶
- Layer panel for visibility, opacity, reordering, rename, zoom-to-layer, identify, labels, open attribute table, export, and remove actions, with a per-row symbology swatch (dot, line, square, or image glyph colored from the layer's own styling), copy and paste of a layer's style onto another layer, a metadata dialog that reads a raster's real georeferencing from the GeoTIFF header (CRS and EPSG code, pixel size and extent in CRS units, data type, nodata, compression, tiling, and overviews), collapsible layer groups/folders for organizing the layer stack, and a Search places box in the footer for geocoding to a location — or flying straight to a typed coordinate in decimal degrees, DMS, or DDM — without leaving the panel
- Auto-generated on-map Legend panel derived from the visible layers' symbology, with per-class rows for graduated, categorized, rule-based, and expression styling, gradient bars for heatmaps and continuous raster colormaps, proportional-symbol size ramps, diagram fields, and land-cover labels from a Raster Attribute Table, plus an edit mode for renaming, hiding, and reordering entries, adding a section from a color dictionary, choosing a corner, collapsing sections, resizing the panel, and exporting the rendered legend as JSON — saved with the project and shared with the Print Layout legend
- Live style panel with single, categorized, graduated, expression, and rule-based (filter-driven) symbology (fill, stroke, opacity, circle radius), proportional symbols, fill patterns, a built-in marker library, plus point heatmap and clustering renderers — all including for Add Vector Layer point layers, plus an inline color ramp picker that previews each colormap's gradient on the trigger and beside every option, and a transparent (no fill / no outline) option in the color picker, with vector layer symbology that imports and exports as OGC SLD, QGIS QML, and Mapbox GL style JSON so styles round-trip between GeoLibre, QGIS, and the Mapbox/MapLibre ecosystem; the rule-based renderer carries per-rule symbol properties, scale-dependent visibility, nested rules, and per-rule toggles (and can hide features matching no rule), and the style toolkit adds diagram symbology (pie, donut, and bar charts drawn on features), a symbology pack of inverted-polygon masks, arrow and marker lines, and geometry generators, data-driven proportional sizing for marker icons, and a Style Manager that saves reusable symbol, color-ramp, and label presets to a personal library and applies them across projects
- Data-defined label engine for labeling vector features by any attribute or expression, with ArcGIS-style placement and styling controls (anchor, X/Y offset, rotation, wrap width, letter case), expression-driven label properties, placement priority, a Duplicate labels option, and unique/concatenate modes that collapse points stacked at the same coordinate into a single deduplicated label
- Single-band pseudocolor with classification, reversed and custom color ramps, the full colormap list shown as inline gradient swatches in the Color ramp picker, a Legend populated automatically from a paletted raster's embedded color table, and RGB band combination for styling raster layers, plus COG pixel-value inspection from the Identify icon
Attribute data and expressions¶
- Attribute table with filtering, sorting, resize controls, feature highlighting with Ctrl- and Shift-click multi-row selection, optional zoom to selected features, add-field and field-calculator tools (including geometry length and area calculation), virtual fields (expression-backed computed columns that update with the data), persistent attribute joins configured in layer properties, an attribute form designer with edit widgets, validation constraints, and conditional field visibility, a Charts panel (histogram, scatter, bar, line, box), a field statistics summary panel, column management (rename, delete, hide/show, reorder) with a column explorer for finding and toggling fields in wide tables, virtualized rows for large layers, and export to GeoJSON/GeoParquet/Shapefile/GeoPackage/CSV, plus a Raster Attribute Table for single-band categorical rasters
- Shared Expression Builder with a function reference, searchable field list, live preview, and reusable variables, wired into filters, labels, styling, field calculation, and selection, plus Select by Expression and Select by Location for building feature selections
SQL and databases¶
- SQL Workspace for running DuckDB Spatial SQL against loaded layers, local files, and remote URLs, docked as a resizable panel beside the map with editor autocomplete for tables, columns, and SQL keywords, sample queries, query history, and adding results to the map or exporting them, plus an in-browser PostGIS SQL engine via PGlite and an Apache Sedona spatial SQL engine
- Multiple DuckDB SQL query-result layers with identify, selection, and attribute table support
Map tools, printing, and media¶
- Controls menu with Measure (including terrain-aware 3D measurements), Bookmark, Minimap, View State, and Map annotation tools (draw text, arrows, and highlights on the map, saved with the project), a Search panel, persistent mode banners for the Directions and Reverse Geocode tools, a Camera Tour recorder that captures an animated keyframe tour to video (with per-keyframe recapture, per-keyframe hold and transition duration controls, and saving/loading a named tour setup as JSON), a Dashboard panel of configurable chart widgets that summarize the loaded layers, and a Print menu with a print layout composer (user-editable legend, explicit map-scale input, title block with editable title and footer, page-size controls, a custom print extent, attribute-table and chart blocks, Atlas / map series generation that produces one page per feature or a uniform series of pages along a line, and Copy to Clipboard) that exports the map to PNG or PDF
- Record the map canvas, or a drawn bounding box, to a video file straight from the browser (with an optional title/source caption and on-map panel capture for HTML, legend, and colorbar overlays), and animate a marker along any line layer with 3D track-follow camera controls and MP4 export
- Bookmarks that capture the active layers alongside the camera, organized into folders, with selectable export, a resizable and reorderable panel, and a save-as name prompt
Field data collection¶
- Field Collection tool for capturing point, line, and polygon observations with a per-layer custom form (text/number/date/choice fields and an optional photo), placed by device GPS or by tapping the map, written to a GeoJSON layer that flows into the attribute table, export, and offline use
- Live GPS tracking with a moving position marker, a recorded track log, and digitizing new features directly from the GPS feed
Storytelling and collaboration¶
- Story map builder that composes its chapters directly on the live map, with a presenter view, dedicated start and closing slides, an optional hide-itinerary toggle, a printable PDF handout generator (with subtitle and byline fields), and standalone HTML export
- Real-time multi-user collaboration (MVP; requires the
VITE_GEOLIBRE_COLLAB_URLbuild variable — see Collaboration) so several people can edit the same project together, with per-participant permissions, an in-app chat panel, and an on-canvas session-status badge and roster (live dot, connected-participant count, and an expandable client list) while a session is active
AI, Python, and automation¶
- Natural-language GIS assistant that turns plain-English requests into auditable, undoable GeoLibre operations (Spatial SQL, symbology, add/remove data, and map control), provider-pluggable with your own API key (also read from OS environment variables) and a dedicated AI Providers settings section with per-feature provider dropdowns and multiple named profiles (provider, model, and credentials) that you can switch between from the assistant panel
- In-app Python Console plus a Python automation API for scripting the app
- Notebook panel docked beside the map for running Jupyter against the live map: the web build embeds a self-hosted JupyterLite site (in-browser Pyodide kernel) and the desktop build launches a uv-managed JupyterLab server, with notebook cells driving the map through an auto-loaded
geolibreclient. See Notebook Panel - Python package (
geolibre) that embeds the full app in Jupyter notebooks as an anywidget, with an expanded leafmap-style API (local raster, marker/cluster, and choropleth layers;split_map,add_legend, andadd_colorbarhelpers; typed read-back of selected/drawn features; andto_htmlexport) and two-way project sync. See the Python package guide - Optional Python FastAPI sidecar for heavier processing workflows
Processing and analysis¶
- Conversion menu for Vector to GeoParquet/FlatGeobuf/PMTiles, a generic Vector to Vector converter that translates between any supported vector formats by file extension, CSV to GeoParquet, and Raster to COG; in the browser build every conversion runs client-side on DuckDB-WASM, the pure-JS writers, or
geolibre-wasm(Vector to PMTiles on a background worker), while the desktop app prefers the Python sidecar, whose GDAL/rio-cogeo stack reads more input formats and tiles deeper - Whitebox toolbox that runs entirely in the browser through a WebAssembly runtime with raster I/O (no Python sidecar required), surfacing both Whitebox tools and GeoLibre's own WASM raster tools, browsable by category directly in the Processing menu with nested subcategory submenus and an offline-bundled tool catalog, deep-linkable through a
?tool=URL parameter that preselects a tool and pre-fills its form (with a Copy link button that builds the shareable link), and with batch tools run against a selected input directory - Vector menu with common geometry and analysis tools (buffer, centroids, convex hull, dissolve, bounding box, simplify, clip, intersection, difference, union, spatial join, attribute join, select by value, select by expression, select by location, random extract, movement, space-time, and cell coverage) plus data quality tools (check validity, fix geometries, and check topology rules) that run in the browser with Turf.js, an optional GeoPandas sidecar engine for every tool, and an in-browser GeoPandas engine via Pyodide (no server, same results as the sidecar)
- Raster menu with common raster tools (hillshade, slope, aspect, reproject, resample, clip by extent, clip by mask layer, polygonize, contour, zonal statistics, raster calculator, reclassify, mosaic, focal statistics) backed by a rasterio Python sidecar, with a client-side fallback so core tools also run in the browser when no sidecar is available, plus in-browser extraction of COG, WMS, and XYZ bounding-box subsets and a normalized-difference index builder for any HTTP COG
- Spectral Index toolbox (NDVI, GNDVI, NDWI, NDMI, NDBI, NBR, EVI, SAVI) with Sentinel-2, Landsat 8-9, NAIP, and custom band layouts, evaluated client-side with geotiff.js or on the rasterio sidecar
- Spatial Statistics toolbox, including Emerging Hot Spot Analysis that builds a space-time cube from timestamped points, runs Getis-Ord Gi* per time slice, and classifies each cell as a new, intensifying, persistent, diminishing, sporadic, oscillating, or historical hot or cold spot, plus a Processing batch runner with model/pipeline chaining to run a sequence of tools as one job
- Processing History panel that lists every tool run, re-runs any of them with one click, and copies the equivalent Python code
- Raster Georeferencer (Processing → Georeferencing) that pins a non-georeferenced image to the map with ground control points using a least-squares affine fit, reporting per-GCP and RMS residuals
- Network analysis tools for isochrones, service areas, origin–destination (OD) cost matrices, and sequential routes (directions) through an ordered set of waypoints
- Geocoding tools for forward, batch, and reverse geocoding through a multi-provider abstraction
- AI Segmentation (SamGeo) that turns imagery into vector features with segment-geospatial and Meta's SAM 3 — text prompts ("trees", "buildings") or automatic segmentation, proxied to a separate
samgeo-apimodel server (GPU recommended). See AI Segmentation - In-browser object detection that runs ONNX/YOLO models directly in the webview, with no server or Python required
- H3 tools to create hexagonal grids over an extent and bin point layers into H3 cells
Projects and sharing¶
- Project menu to create, open, save, and Save As
.geolibre.jsonprojects, export a project to a single standalone interactive HTML file that runs offline with no server, and a project gallery for browsing and opening shared projects with one click
Plugins¶
- Plugin system with basemap, layer control, MapLibre components, swipe, street view, Mapillary coverage and street-level image viewer, OpenAerialMap open-aerial-imagery search, Natural Earth and Source Cooperative data browsing (including opening or streaming large GeoParquet from Source Cooperative), a GeoLens catalog browser that connects to a self-hosted GeoLens server and adds datasets as signed vector tiles, OGC API Features GeoJSON, or server-rendered raster tiles (and writes edits to a GeoJSON-loaded dataset back to the GeoLens server, feature by feature, when the server allows it), Historical Imagery, Elevation Profile, Overture Maps, USGS LiDAR, GeoAgent, and GeoEditor integrations (the GeoEditor can pull the vector features currently visible in the map view into the editor for editing without re-importing the source, and write edits back to their origin, including GeoPackage and GeoJSON files and PostGIS database tables), including configurable control positions and external plugin manifests; external plugins can render on the host's shared deck.gl instance via
app.getDeckGL(), use the maplibre-gl-raster stack and the map projection control, register native raster and tile layers, register first-class right-sidebar panels, toolbar menus, and floating panels through the plugin UI host API (including a shared-rail replace-style dock mode), and place their toolbar menus after the Help menu - Time Slider plugin for animating time series raster and vector data, including binding existing vector layers already on the map to the timeline, stepping through mosaic sources (a MosaicJSON or STAC collection of many COGs per date) rendered on either a GPU or a WASM engine, and a pixel time-series chart that plots a sampled pixel's value across a raster stack
- Atmosphere Effects plugin that renders a deep-space backdrop, parallax starfield, comets, and an atmospheric halo around the globe at low zoom (technique adapted from Leonel Dias), with a Spinning Globe panel and customizable atmosphere halo and deep-space colors
- Directions plugin for interactive routing via maplibre-gl-directions: click the map to add waypoints, drag to reposition, and click a waypoint to remove it (uses the public OSRM demo server, driving only)
- Install external plugins from an uploaded zip on both desktop and web, plus external plugin zip loading from the app data plugins directory and local development plugin directories, with the Manage Plugins list sorted alphabetically
- Bundled drop-in plugins under
public/plugins/<id>/that bake into both the web and desktop builds and load automatically with no manifest URL
See the Plugin API to build your own.
Deployment and platform builds¶
- Browser deployment with Docker (with optional HTTP Basic Auth for the web container), embed-friendly URL parameters (including
?url=project deep links that skip the welcome wizard and a?welcome=0param to opt out of onboarding), and amaponlychrome-free mode. See Embedding & Sharing - Versioned
postMessageAPI for a host page that frames the app: load a project, move the camera, highlight features, and open a processing tool at runtime, withready,projectLoaded,selectionChanged,viewChanged,toolCompleted, andserverFileWrittenevents back out. Off unless the deployment names its trusted origins (GEOLIBRE_EMBED_ORIGINS), which are enforced in both directions. See Talking to the map at runtime - Desktop diagnostics panel (capturing native Tauri HTTP requests in the network log and classifying failed
fetch()errors), OS trust store and mTLS client-certificate support for native HTTP, automatic layer reload when local files change on disk, a guided update workflow with a startup update check and update preferences, and MSIX packaging support, with macOS installers signed with an Apple Developer ID certificate and notarized by Apple so they open without a Gatekeeper workaround, plus Windows Package Manager (winget) distribution asOpenGeos.GeoLibreand a Windows portable zip build that runs without installation - Native Android app built from the same codebase with Tauri v2 mobile, producing signed, per-architecture APKs (~40 MB) plus a Google Play-ready universal App Bundle (permanent
org.geolibre.apppackage id, API level 36, 16 KB page-size alignment verified in CI) through a GitHub Actions workflow; tools that depend on a local desktop process (Whitebox, Raster, Conversion, AI Segmentation, PostgreSQL/Martin) are hidden on mobile so nothing is shown that cannot run. See Android - iOS build scaffolding on the same codebase, with Tauri iOS configuration, location permissions, and a CI workflow that signs and exports an
.ipawhen Apple signing secrets are present (bring-up: no iOS build has shipped yet). See iOS - Installable, offline-capable Progressive Web App (PWA) build, plus a Download Offline Area tool that pre-caches the current map view's basemap tiles, and service-worker caching of the CDN-loaded Pyodide and PGlite/PostGIS engines so browser SQL and Python keep working offline after first use