Skip to content

Commit 4a95543

Browse files
authored
docs: add a platform comparison page (#1730)
* docs: add a platform comparison page Add docs/comparison.md, comparing GeoLibre against QGIS, ArcGIS Pro, ArcGIS Online, Felt, and kepler.gl across five tables: platform basics, data and formats, analysis and processing, cartography and layout, and automation/extensibility/sharing. Follow the tables with per-platform guidance on when each one is the right choice, and a section stating plainly where GeoLibre is not the strongest option (large local datasets, GDAL format breadth, specialized Esri toolboxes, enterprise data management, maturity) so the rest of the page is worth trusting. Scope the non-GeoLibre columns to mainstream out-of-the-box behavior as of August 2026, credit separate products as separate (QField, ArcGIS Field Maps, ArcGIS Dashboards/StoryMaps), and invite corrections via GitHub issues. Wire the page into the mkdocs nav after Features, and cross-link it from index.md and features.md. * Address CodeRabbit review feedback - Felt: name the separate Felt Field App for iOS/Android in the Mobile row rather than calling it responsive web, record its offline areas with sync-on-reconnect, and note the single-tenant AWS deployment in the data-residency and self-hosting rows. Verified against felt.com/platform/field-app and help.felt.com/administration/self-hosted-felt. - Felt: the Dashboards row said "—", but Felt ships dashboard components (statistics, bar, histogram, time series). Corrected. - kepler.gl: the analysis, spatial SQL, and AI assistant rows understated it. It ships a DuckDB-backed SQL Data Explorer over loaded data and remote URLs, spatial joins through its assistant, and an AI assistant supporting OpenAI, Gemini, DeepSeek, and local Ollama with a user-supplied key. Verified against the kepler.gl user guides. - OGC services row: GetCapabilities is the WMS/WFS/WMTS discovery mechanism; OGC API Features/Tiles discovers from a landing page, collection, or items URL. Split the two rather than attributing GetCapabilities to both. - Esri row: `.gdb` is a local File Geodatabase format, not a network service. Renamed the row to "Esri services and geodatabases" and labeled the entry accordingly. - Updated the "Choose Felt" and "Choose kepler.gl" paragraphs to match the corrected tables — Felt's self-hosting option and field collection, and kepler.gl's SQL/AI analysis path. * Address review feedback - Real-time collaboration row said "self-hosted server", implying self-hosting is required. Per docs/collaboration.md the default relay is the hosted Cloudflare Durable Object at collab.geolibre.app (workers/collab), with workers/collab-node as the self-hostable option. Now reads "hosted relay, optionally self-hosted". - ArcGIS Pro reads Zarr as a native multidimensional raster type, not "via extensions" — corrected against the Esri multidimensional raster types documentation. - ArcGIS Pro STAC support is built in (STAC connections and the Explore STAC pane, since Pro 3.2), not "via add-ins". - Same row, not flagged but the same error: QGIS reads Zarr through GDAL's built-in Zarr driver (core since GDAL 3.4), so "plugin-assisted" was wrong. - ArcGIS Online AI assistant cell said "—", but it ships the Arcade assistant (beta) across Map Viewer, Field Maps Designer, Experience Builder, and Scene Viewer, plus the wider AI assistants family. * Address CodeRabbit review feedback - QGIS STAC support is built in, not "via plugins": QGIS creates STAC connections from the Browser panel and the Data Source Manager's STAC tab, covering both static catalogs and STAC APIs. Verified against the QGIS user manual's OGC client support page. Left the version unqualified since the page compares current releases. * Address CodeRabbit review feedback - The "Esri services and geodatabases" row left ArcGIS Online as "Native", which after the row was renamed in 03893bb read as direct file geodatabase support. ArcGIS Online serves hosted layers, so the cell now reads "Hosted feature, tile, imagery, and scene layers", matching the documented hosted web layer types. ArcGIS Pro keeps "Native", where it is accurate for both services and geodatabases.
1 parent e895829 commit 4a95543

4 files changed

Lines changed: 161 additions & 3 deletions

File tree

docs/comparison.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# GeoLibre vs. other GIS platforms
2+
3+
How GeoLibre compares to the desktop GIS, cloud GIS, and web-mapping tools people
4+
most often ask about: **QGIS**, **ArcGIS Pro**, **ArcGIS Online**, **Felt**, and
5+
**kepler.gl**.
6+
7+
GeoLibre is not trying to replace any of these outright. It occupies a spot none
8+
of them quite fills: a **free and open-source GIS that runs in a browser tab with
9+
nothing installed**, keeps your data on your own machine, and still ships real
10+
analysis, spatial SQL, cartography, and a project file — then packages the *same*
11+
app as a desktop install, an Android app, and a Jupyter widget.
12+
13+
!!! note "How to read this"
14+
Comparisons like this age quickly and are written by an interested party. The
15+
GeoLibre column reflects [what ships today](features.md); the other columns
16+
describe each product's mainstream, out-of-the-box behavior as of
17+
**August 2026**, not what is reachable with every add-on, extension, or
18+
third-party plugin. Where a capability arrives through a separate product
19+
(QField for QGIS in the field, ArcGIS Field Maps for ArcGIS), the table says
20+
so rather than crediting it to the base product. Found something wrong or
21+
out of date? Please
22+
[open an issue](https://github.com/opengeos/GeoLibre/issues) — corrections
23+
are welcome.
24+
25+
## At a glance
26+
27+
| | **GeoLibre** | **QGIS** | **ArcGIS Pro** | **ArcGIS Online** | **Felt** | **kepler.gl** |
28+
|---|---|---|---|---|---|---|
29+
| **License** | MIT, open source | GPL-2.0+, open source | Proprietary | Proprietary | Proprietary | MIT, open source |
30+
| **Cost** | Free | Free | Paid subscription | Paid subscription (credit-metered analysis) | Paid subscription | Free |
31+
| **Browser** | Full app, nothing to install | No official browser build | No | Yes (the product *is* the browser app) | Yes (the authoring product) | Yes |
32+
| **Desktop** | Windows, macOS, Linux (Tauri) | Windows, macOS, Linux | Windows only ||||
33+
| **Mobile** | Native Android app; responsive touch layout | Via QField / Mergin Maps (separate apps) || Via ArcGIS Field Maps (separate app) | Felt Field App for iOS and Android (separate app) | Responsive web |
34+
| **In Jupyter** | Full app as an anywidget, two-way sync | Via `qgis` bindings, not the UI | Notebooks drive `arcpy`, not the UI | ArcGIS API for Python || Yes (widget) |
35+
| **Works offline** | Yes — PWA install, offline area download, desktop build | Yes | Yes | Limited (Field Maps offline areas) | Field App offline areas, syncing on reconnect (higher plans) | Client-side, but assets are hosted |
36+
| **Where your data lives** | Your device — processed client-side in the browser session | Your device | Your device / your enterprise geodatabase | Vendor cloud | Vendor cloud, or a single-tenant instance in your own AWS account (Enterprise) | Your browser |
37+
| **Project file** | `.geolibre.json` (open, documented) | `.qgs` / `.qgz` (open) | `.aprx` (proprietary) | Web map JSON (hosted) | Hosted map (no local file) | Exportable map config JSON |
38+
39+
## Data and formats
40+
41+
| | **GeoLibre** | **QGIS** | **ArcGIS Pro** | **ArcGIS Online** | **Felt** | **kepler.gl** |
42+
|---|---|---|---|---|---|---|
43+
| **Format breadth** | Wide — DuckDB-WASM Spatial plus in-house readers | **Widest** — everything GDAL/OGR reads | Very wide, plus native Esri formats | Common upload formats | Common upload formats | CSV, GeoJSON, Arrow/Parquet |
44+
| **Cloud-native vector** | GeoParquet, FlatGeobuf, PMTiles, streamed over HTTP range requests | GeoParquet, FlatGeobuf, PMTiles (recent GDAL) | GeoParquet (recent), no native PMTiles || Some cloud sources on higher plans | Arrow/Parquet |
45+
| **Cloud-native raster** | COG, Zarr, Cloud-Optimized NetCDF/HDF, kerchunk, MBTiles | COG, Zarr (GDAL's built-in driver) | COG; Zarr as a native multidimensional raster type | Hosted imagery layers | GeoTIFF upload ||
46+
| **STAC** | Built-in catalog browser + STAC Index discovery | Built-in STAC connections (Browser panel and Data Source Manager) | Built-in STAC connections and the Explore STAC pane | Living Atlas (not STAC) |||
47+
| **OGC services** | XYZ; WMS/WFS/WMTS discovered via GetCapabilities; OGC API Features/Tiles from a landing page, collection, or items URL | Full OGC support | Full OGC support | Yes | Limited | XYZ / vector tiles |
48+
| **Esri services and geodatabases** | ArcGIS FeatureServer, VectorTileServer, I3S, plus local `.gdb` File Geodatabase folders (desktop) | Yes | Native | Hosted feature, tile, imagery, and scene layers | Some ArcGIS layers ||
49+
| **Databases** | PostGIS browsing, DuckDB, in-browser PGlite/PostGIS | PostGIS, SpatiaLite, Oracle, SQL Server, SAP HANA | Enterprise geodatabases (SDE) | Hosted only | PostGIS / Snowflake connections (higher plans) ||
50+
| **3D and point clouds** | LiDAR, 3D Tiles, I3S, Gaussian splats, glTF/GLB, Cesium globe pane | Point clouds, 3D map view, tiled scene layers | **Deepest 3D** — scenes, I3S, mesh, LAS | Scene Viewer || Extrusions and hexbins only |
51+
| **Planetary basemaps** | Moon, Mars, Mercury, Venus, Galilean moons, Titan, Pluto, Charon — with a per-project ellipsoid driving measurements | Via plugins | Limited ||||
52+
53+
## Analysis and processing
54+
55+
| | **GeoLibre** | **QGIS** | **ArcGIS Pro** | **ArcGIS Online** | **Felt** | **kepler.gl** |
56+
|---|---|---|---|---|---|---|
57+
| **Geoprocessing tools** | **1,000+** (Whitebox suite + GeoLibre's own), running in the browser on WebAssembly | **1,000+** (native, GDAL, GRASS, SAGA) | **Most mature and complete**, plus paid extensions | A useful subset, credit-metered | A small set of common tools | No tool catalog — analysis goes through SQL and the AI assistant |
58+
| **Where analysis runs** | Your browser (WASM), no server required; optional Python sidecar on desktop | Your machine | Your machine, or a server/portal | Vendor cloud | Vendor cloud | Your browser |
59+
| **Vector analysis** | Buffer, overlay, dissolve, joins, selection, topology checks — Turf.js, or GeoPandas via Pyodide/sidecar | Comprehensive | Comprehensive | Common tools | Common tools | Spatial joins via SQL or the AI assistant |
60+
| **Raster analysis** | Hillshade, slope, contour, zonal/focal stats, raster calculator, reclassify, mosaic — rasterio sidecar with a browser fallback | Comprehensive (GDAL/GRASS/SAGA) | Comprehensive; Spatial Analyst extension | Limited |||
61+
| **Spatial SQL** | DuckDB Spatial, PGlite/PostGIS, and Apache Sedona — **all in the browser** | Virtual layers, DB Manager, PostGIS connections | SQL against enterprise geodatabases || SQL on connected sources (higher plans) | DuckDB SQL Data Explorer over loaded data and remote URLs |
62+
| **Model / batch chaining** | Batch runner with model and pipeline chaining | Graphical Model Designer | ModelBuilder ||||
63+
| **Spatial statistics** | Toolbox including Emerging Hot Spot Analysis | Via plugins and processing providers | Full Spatial Statistics toolbox | Some |||
64+
| **Network analysis** | Isochrones, service areas, OD cost matrices, routing | QGIS Network Analysis, plugins (ORS, pgRouting) | Network Analyst extension | Routing services (credits) |||
65+
| **AI / ML** | AI Segmentation (SamGeo/SAM 3), in-browser ONNX/YOLO object detection | Via plugins | `arcgis.learn` deep-learning toolset | Pretrained models (credits) |||
66+
| **Processing history** | Every run listed, re-runnable, with copyable Python | History panel | Geoprocessing history ||||
67+
68+
## Cartography, styling, and layout
69+
70+
| | **GeoLibre** | **QGIS** | **ArcGIS Pro** | **ArcGIS Online** | **Felt** | **kepler.gl** |
71+
|---|---|---|---|---|---|---|
72+
| **Renderers** | Single, categorized, graduated, rule-based, expression, heatmap, cluster, proportional symbols, diagrams | **Richest** — plus every symbol layer type | Very rich | Smart-mapping styles | Simple, well-designed defaults | Visualization-oriented |
73+
| **Data-defined everything** | Expression Builder wired into filters, labels, styling, field calculation, selection | Yes, pervasive | Attribute-driven symbology (Arcade) | Arcade |||
74+
| **Labeling** | Data-defined engine with placement, offset, rotation, wrap, dedup | Best-in-class placement engine | Maplex label engine | Basic | Basic | Basic |
75+
| **Print layout** | Print Layout composer with legend, scale, title block, atlas / map series, PNG and PDF | Full print composer with atlas | Full layout view with map series | Basic print / export | Export to image and PDF | Image export |
76+
| **Style interchange** | Imports and exports **OGC SLD, QGIS QML, and Mapbox GL JSON** | QML, SLD | `.lyrx`, limited SLD ||||
77+
| **Project import** | Reads **QGIS `.qgs`/`.qgz` and ArcGIS Pro `.aprx`/`.mapx`** | Reads its own | Reads its own (and `.mxd`) ||||
78+
| **Story maps** | Built-in story map builder with presenter view and standalone HTML export | Via plugins || ArcGIS StoryMaps (separate product) | Shareable maps, not chaptered stories ||
79+
| **Dashboards** | Dashboard panel of chart and indicator widgets with cross-filtering | Via plugins || ArcGIS Dashboards (separate product) | Dashboard components — statistics, bar, histogram, time series | Charts and filters in-map |
80+
81+
## Automation, extensibility, and sharing
82+
83+
| | **GeoLibre** | **QGIS** | **ArcGIS Pro** | **ArcGIS Online** | **Felt** | **kepler.gl** |
84+
|---|---|---|---|---|---|---|
85+
| **Scripting** | Python Console, `geolibre` Python package, docked Jupyter notebook beside the map | PyQGIS, `qgis_process` headless CLI | `arcpy`, notebooks | ArcGIS API for Python / JavaScript | REST API + Python client | JS library |
86+
| **Notebook integration** | The **whole app** embeds as a Jupyter anywidget with two-way project sync | Bindings, not the UI | Notebooks in Pro drive `arcpy` | Hosted notebooks || Widget |
87+
| **Plugin ecosystem** | TypeScript plugin API, built-ins, zip installs, bundled drop-ins | **Largest** — thousands of Python plugins | .NET add-ins, Python toolboxes | Configurable app templates | None (API only) | Fork the library |
88+
| **AI assistant** | Natural-language assistant that turns plain English into auditable, undoable operations; bring your own API key | Via plugins | Copilot features | Arcade assistant (beta) and the AI assistants family | AI-assisted map making | Yes — OpenAI, Gemini, DeepSeek, or local Ollama; bring your own key |
89+
| **Real-time collaboration** | Yes (MVP) — hosted relay, optionally self-hosted — plus anchored review comments | No (Mergin Maps for sync) | No | Shared editing of hosted layers | **Best-in-class** multiplayer editing and comments ||
90+
| **Embedding** | `maponly` and `layout=viewer` URL modes, a versioned `postMessage` API, and the typed `@geolibre/embed` npm client | QGIS Server / QGIS2Web export || Embeddable web apps | Embeddable maps | Embeddable |
91+
| **Self-hosting** | Docker image, or serve the static build anywhere | QGIS Server | ArcGIS Enterprise (paid) || Single-tenant AWS VPC, Felt-maintained (Enterprise) | Static build |
92+
| **Standalone export** | Whole project to **one offline HTML file**, no server | Via qgis2web plugin |||| HTML export |
93+
94+
## Where each one is the right choice
95+
96+
**Choose GeoLibre when** you want a real GIS in a browser tab with nothing to
97+
install, your data has to stay on your machine, you work with cloud-native
98+
formats (COG, GeoParquet, PMTiles, Zarr, STAC), you want the same app on desktop,
99+
Android, and inside a notebook, or you are embedding a map workspace into your
100+
own product and want an open, documented project format and license.
101+
102+
**Choose QGIS when** you need the widest possible format support through
103+
GDAL/OGR, the deepest desktop cartography and label placement, a mature plugin
104+
for a niche task, or heavy local processing over datasets larger than a browser
105+
can hold.
106+
107+
**Choose ArcGIS Pro when** you are already in the Esri ecosystem, need
108+
enterprise geodatabase editing and versioning, the deepest 3D and imagery
109+
workflows, or a specific specialized toolbox with organizational support behind
110+
it.
111+
112+
**Choose ArcGIS Online when** the priority is hosted layers, organizational
113+
sharing and permissions, and the surrounding Esri app family (Dashboards,
114+
StoryMaps, Field Maps, Experience Builder).
115+
116+
**Choose Felt when** collaborative, low-friction map *making* with a team is the
117+
whole job, and polished multiplayer editing and field data collection matter more
118+
than analysis depth. Enterprise plans can run a single-tenant instance in your own
119+
AWS account if data residency is the blocker.
120+
121+
**Choose kepler.gl when** you want fast, beautiful exploratory visualization of
122+
large point and trip datasets, and DuckDB SQL plus its AI assistant cover the
123+
analysis you need — rather than a geoprocessing toolbox, cartographic output, or
124+
a portable project file.
125+
126+
They also compose. GeoLibre reads QGIS and ArcGIS Pro projects and exchanges
127+
symbology as SLD, QML, and Mapbox GL JSON, so it is reasonable to author in
128+
QGIS or Pro and publish or embed with GeoLibre.
129+
130+
## Where GeoLibre is not the strongest option
131+
132+
Stated plainly, so the table above is worth trusting:
133+
134+
- **Very large local datasets.** Browser memory and WASM are real limits.
135+
Client-side vector tiling and streaming push the ceiling up, but a
136+
multi-gigabyte local processing job still belongs on a desktop GIS. The
137+
desktop build's Python sidecar helps; QGIS or ArcGIS Pro helps more.
138+
- **Format breadth.** GDAL/OGR reads more than DuckDB-WASM Spatial does. Some
139+
formats — notably File Geodatabase — only work in the desktop build.
140+
- **Depth of specialized toolboxes.** ArcGIS Pro's Spatial Analyst, Geostatistical
141+
Analyst, and Network Analyst, and QGIS's twenty years of plugins, cover
142+
workflows GeoLibre has no equivalent for.
143+
- **Enterprise data management.** Versioned editing, replication, and enterprise
144+
geodatabase administration are outside GeoLibre's scope.
145+
- **Maturity.** GeoLibre is stable and in active development, but it is far
146+
younger than QGIS or ArcGIS. Some capabilities listed as shipping are recent —
147+
see [Recently added](index.md#recently-added).
148+
149+
## See also
150+
151+
- [Features](features.md) — the complete, current inventory of what GeoLibre does
152+
- [Roadmap](roadmap.md) — release history and what is planned next
153+
- [Getting Started](getting-started.md) — install the app or open GeoLibre Web
154+
- [Importing a QGIS project](user-guide/projects.md#importing-a-qgis-project) and
155+
[an ArcGIS Pro project](user-guide/projects.md#importing-an-arcgis-pro-project)

docs/features.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ A feature-by-feature list of what GeoLibre can do today — the latest release p
44
what has landed on `main` since (see [Recently added](index.md#recently-added)).
55
For task-oriented walkthroughs, see the [User Guide](user-guide/interface.md) and
66
the [Tutorials](tutorials/index.md); for what is planned next, see the
7-
[Roadmap](roadmap.md).
7+
[Roadmap](roadmap.md). For how this stacks up against QGIS, ArcGIS, Felt, and
8+
kepler.gl, see the [Comparison](comparison.md).
89

910
## Platforms and interface
1011

docs/index.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,9 @@ Other parameters control the toolbar, panels, and theme. See [Embedding & Sharin
167167

168168
GeoLibre is **stable and in active development**, with regular releases on
169169
[GitHub](https://github.com/opengeos/GeoLibre/releases). For the complete,
170-
current inventory see [Features](features.md); for the full release history and
171-
what comes next, see the [Roadmap](roadmap.md).
170+
current inventory see [Features](features.md); for how GeoLibre compares to
171+
QGIS, ArcGIS, Felt, and kepler.gl, see the [Comparison](comparison.md); for the
172+
full release history and what comes next, see the [Roadmap](roadmap.md).
172173

173174
### What ships today
174175

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ nav:
4141
- Home: index.md
4242
- Getting Started: getting-started.md
4343
- Features: features.md
44+
- Comparison: comparison.md
4445
- Demos: demos.md
4546
- Downloads: downloads.md
4647
- Launch GeoLibre Web: /demo/

0 commit comments

Comments
 (0)