{"repo":"opengeos/GeoLibre","free":true,"listed":false,"github":"https://github.com/opengeos/GeoLibre","clone":"git clone https://github.com/opengeos/GeoLibre.git","description":"A lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.","language":"TypeScript","stars":6208,"topics":["data-science","duckdb","geolibre","geospatial","gis","maplibre","maplibre-gl-js","tauri-app"],"license":"MIT","category":"gis_platform","readme_excerpt":"# GeoLibre\n\n[![Launch GeoLibre Web](https://img.shields.io/badge/Launch-GeoLibre%20Web-green.svg)](https://web.geolibre.app/)\n[![GeoLibre shared project](https://img.shields.io/badge/GeoLibre-share-green.svg)](https://share.geolibre.app)\n[![GeoLibre plugins](https://img.shields.io/badge/GeoLibre-plugins-green.svg)](https://plugins.geolibre.app)\n[![image](https://img.shields.io/pypi/v/geolibre.svg)](https://pypi.python.org/pypi/geolibre)\n[![R package](https://img.shields.io/badge/R-package-276DC3?logo=r&logoColor=white)](https://r.geolibre.app/)\n[![image](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/opengeos/GeoLibre/blob/main/python/examples/getting-started.ipynb)\n[![image](https://img.shields.io/conda/vn/conda-forge/geolibre.svg)](https://anaconda.org/conda-forge/geolibre)\n[![Conda Recipe](https://img.shields.io/badge/recipe-geolibre-green.svg)](https://github.com/conda-forge/geolibre-feedstock)\n[![Microsoft Store](https://img.shields.io/badge/Microsoft%20Store-GeoLibre-0078D4?logo=windows)](https://apps.microsoft.com/detail/9nwt67rv531x)\n[![Mac App Store](https://img.shields.io/badge/Mac%20App%20Store-GeoLibre-0D96F6?logo=apple&logoColor=white)](https://apps.apple.com/app/geolibre-desktop/id6796848769)\n[![App Store](https://img.shields.io/badge/App%20Store-GeoLibre-0D96F6?logo=appstore&logoColor=white)](https://apps.apple.com/app/geolibre/id6796039674)\n[![Google Play](https://img.shields.io/badge/Google%20Play-GeoLibre-01875F?logo=googleplay&logoColor=white)](https://play.google.com/store/apps/details?id=org.geolibre.app)\n[![AUR version](https://img.shields.io/aur/version/geolibre-bin?logo=archlinux&label=AUR)](https://aur.archlinux.org/packages/geolibre-bin)\n[![FlatPark](https://img.shields.io/badge/FlatPark-GeoLibre-4A90D9?logo=flatpak)](https://flatpark.org/apps/app.geolibre.GeoLibre/)\n[![image](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20785400.svg)](https://doi.org/10.5281/zenodo.20785400)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/opengeos/GeoLibre)\n\nA free and open-source, lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs everywhere you do, in the web browser, on the desktop, on mobile, and inside Jupyter notebooks, all while keeping your data local and private.\n\nIt also ships **1,000+ geoprocessing tools** that run *entirely in your browser* on WebAssembly — terrain, hydrology, LiDAR, remote sensing, and vector analysis with no server, no install, and no data ever leaving your machine.\n\nGeoLibre is built with **Tauri v2**, **React**, **TypeScript**, **MapLibre GL JS**, **DuckDB-WASM Spatial**, and **deck.gl**. The same workspace runs as a native desktop app, native Android and iOS apps, in any modern web browser, and adapts responsively to mobile and small screens.\n\n- **[Launch GeoLibre Web](https://web.geolibre.app/)** — the full app in your browser, nothing to install\n- **[Download the desktop app](https://geolibre.app/downloads/)** — Windows, macOS, and Linux installers\n- **[Get it on the Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769)** — the sandboxed macOS build\n- **[Get it on the App Store](https://apps.apple.com/app/geolibre/id6796039674)** — the native iOS app for iPhone and iPad\n- **[Get it on Google Play](https://play.google.com/store/apps/details?id=org.geolibre.app)** — the native Android app\n- **[Use the Python package](https://geolibre.app/python/)** — embed and control the full app in Jupyter notebooks\n- **[Use the R package](https://r.geolibre.app/)** — build interactive maps in RStudio, Quarto, R Markdown, and Shiny\n- **[1,000+ geoprocessing tools](https://geolibre.app/user-guide/processing/#whitebox-toolbox)** — the full toolbox, in the browser\n- **[Get started](https://geolibre.app/getting-started/)** — install, run from source, and configure\n- **[Features](https://geolibre.app/features/)** — the complete feature list\n\n## Demos\n\n**Click any screenshot to open it at full resolution, or any animation to play the full-quality video.**\n\n### 3D Tiles\n\n[![GeoLibre demo showing 3D Tiles rendered on a MapLibre map](https://assets.geolibre.app/images/GeoLibre-demo.webp)](https://assets.geolibre.app/images/GeoLibre-demo.webp)\n\n[Open the live project](https://share.geolibre.app/giswqs/3d-tiles)\n\n### NYC buildings and subways\n\nManhattan building footprints extruded in 3D and colored by construction era, with the MTA subway lines and stations on top and a legend generated automatically from the layers' symbology.\n\n[![Manhattan buildings extruded in 3D and colored by construction era, with MTA subway lines and stations and an auto-generated legend](https://assets.geolibre.app/images/nyc-buildings.webp)](https://assets.geolibre.app/images/nyc-buildings.webp)\n\nThe animation below runs the Time Slider along the buildings' construction year, from 1850 to 2025, so Manhattan fills in era by era. Click it to play the full-quality video.\n\n[![Animation of Manhattan buildings appearing by construction year as the Time Slider advances from 1850 to 2025](https://assets.geolibre.app/demos/nyc-buildings-gif.gif)](https://assets.geolibre.app/demos/nyc-buildings.webm)\n\n[Open the live project](https://share.geolibre.app/giswqs/nyc-buildings-and-subways)\n\n### Planetary basemaps\n\nGeoLibre is not limited to Earth. Planetary basemaps from OpenPlanetaryMap and USGS Astrogeology cover the Moon, Mars, Mercury, Venus, the Galilean moons (Io, Europa, Ganymede, Callisto), Titan, Pluto, and Charon, with a per-project ellipsoid so distance, area, and scale measurements match the body you are mapping. The deep-space starfield behind each globe comes from the Atmosphere Effects plugin.\n\n<table>\n  <tr>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/earth.webp\"><img src=\"https://assets.geolibre.app/images/earth.webp\" alt=\"GeoLibre globe view of Earth over a starfield backdrop\"></a></td>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/moon.webp\"><img src=\"https://assets.geolibre.app/images/moon.webp\" alt=\"GeoLibre globe view of the Moon over a starfield backdrop\"></a></td>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/mars.webp\"><img src=\"https://assets.geolibre.app/images/mars.webp\" alt=\"GeoLibre globe view of Mars over a starfield backdrop\"></a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><b>Earth</b></td>\n    <td align=\"center\"><b>Moon</b></td>\n    <td align=\"center\"><b>Mars</b></td>\n  </tr>\n  <tr>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/mercury.webp\"><img src=\"https://assets.geolibre.app/images/mercury.webp\" alt=\"GeoLibre globe view of Mercury over a starfield backdrop\"></a></td>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/pluto.webp\"><img src=\"https://assets.geolibre.app/images/pluto.webp\" alt=\"GeoLibre globe view of Pluto over a starfield backdrop\"></a></td>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/venus.webp\"><img src=\"https://assets.geolibre.app/images/venus.webp\" alt=\"GeoLibre globe view of Venus over a starfield backdrop\"></a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><b>Mercury</b></td>\n    <td align=\"center\"><b>Pluto</b></td>\n    <td align=\"center\"><b>Venus</b></td>\n  </tr>\n  <tr>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/europa.webp\"><img src=\"https://assets.geolibre.app/images/europa.webp\" alt=\"GeoLibre globe view of Europa over a starfield backdrop\"></a></td>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/callisto.webp\"><img src=\"https://assets.geolibre.app/images/callisto.webp\" alt=\"GeoLibre globe view of Callisto over a starfield backdrop\"></a></td>\n    <td width=\"33%\"><a href=\"https://assets.geolibre.app/images/charon.webp\"><img src=\"https://assets.geolibre.app/images/charon.webp\" alt=\"GeoLibre globe view of Charon over a starfield backdrop\"></a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><b>Europa</b></td>\n    <td align=\"center\"><b>Callisto</b></td>\n    <td align=\"center\"><b>Charon</b></td>\n  </tr>\n</table>\n\nSwitch bodies from the planet switcher in the Layers panel. See [Demos](https://geolibre.app/demos/) for more.\n\n### Video tutorials\n\n- [GeoLibre 1.0: A Free, Open-Source Cloud-Native GIS That Runs Anywhere (Browser, Desktop & Jupyter)](https://youtu.be/87Cm0QagtxI)\n- [Geoprocessing in the Browser: 700+ Free GIS Tools in GeoLibre, Zero Install](https://youtu.be/W32bIQO_nG8)\n- [GeoLibre + GeoLens: A Modern GIS Stack for Self-Hosting Geospatial Data](https://youtu.be/kQqgrxXGd4o)\n\n## Geoprocessing: 1,000+ tools, zero install\n\n[![The GeoLibre Whitebox toolbox running locally with WebAssembly, listing the full catalog of 1,000+ tools with the Regularize Building Footprints tool selected](https://assets.geolibre.app/images/whitebox.webp)](https://assets.geolibre.app/images/whitebox.webp)\n\n**Processing → Whitebox Toolbox** opens a toolbox of **1,000+ geoprocessing tools** that\nexecute in the browser through a WebAssembly runtime with native raster and\nvector I/O. There is no Python sidecar to install and no server to call — the\ntools, your data, and the results all stay on your machine, so the full toolbox\nis available on [GeoLibre Web](https://web.geolibre.app/), on the desktop app,\nand on Android alike.\n\nThe tools come from the [Whitebox Next Gen](https://github.com/opengeos/Whitebox-Next-Gen-ArcGIS)\nsuite plus GeoLibre's own WASM tools, and are browsable by category straight from\nthe Processing menu:\n\n| Category | Tools | Examples |\n| --- | --- | --- |\n| **Vector** | 313 | overlays, buffers, joins, cleaning, topology, generalization |\n| **Raster** | 256 | algebra, filters, reclassification, zonal and focal statistics |\n| **Remote sensing** | 154 | spectral indices, band math, classification, change detection |\n| **Hydrology** | 100 | flow accumulation, watersheds, stream networks, depression fi","default_branch":"main","files":1658,"tree":[".dockerignore",".gitattributes",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/dependabot.yml",".github/labels.yml",".github/workflows/android.yml",".github/workflows/ci.yml",".github/workflows/claude-code-review.yml",".github/workflows/claude.yml",".github/workflows/deploy-collab.yml",".github/workflows/deploy-tiles.yml",".github/workflows/deploy-viewer.yml",".github/workflows/ios.yml",".github/workflows/labels.yml",".github/workflows/mas-store.yml",".github/workflows/msix-store.yml",".github/workflows/pages.yml",".github/workflows/pr-preview-deploy.yml",".github/workflows/pr-preview.yml",".github/workflows/publish-container.yml",".github/workflows/publish-embed.yml",".github/workflows/publish-python.yml",".github/workflows/release.yml",".github/workflows/studio-deploy.yml",".github/workflows/test-build.yml",".gitignore",".oxfmtrc.json",".pre-commit-config.yaml","CITATION.cff","CLAUDE.md","CONTRIBUTING.md","Dockerfile","LICENSE","README.md","apps/geolibre-desktop/index.html","apps/geolibre-desktop/jupyterlite/jupyter-lite.json","apps/geolibre-desktop/jupyterlite/jupyter_lite_config.json","apps/geolibre-desktop/jupyterlite/requirements.txt","apps/geolibre-desktop/package.json","apps/geolibre-desktop/postcss.config.js","apps/geolibre-desktop/public/admin-profile.json","apps/geolibre-desktop/public/apple-touch-icon.png","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Italic/0-255.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Italic/256-511.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Italic/512-767.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Italic/768-1023.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Medium/0-255.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Medium/256-511.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Medium/512-767.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Medium/768-1023.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Regular/0-255.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Regular/256-511.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Regular/512-767.pbf","apps/geolibre-desktop/public/basemaps-assets/fonts/Noto Sans Regular/768-1023.pbf","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/black.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/black.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/black@2x.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/black@2x.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/dark.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/dark.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/dark@2x.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/dark@2x.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/grayscale.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/grayscale.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/grayscale@2x.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/grayscale@2x.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/light.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/light.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/light@2x.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/light@2x.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/white.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/white.png","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/white@2x.json","apps/geolibre-desktop/public/basemaps-assets/sprites/v4/white@2x.png","apps/geolibre-desktop/public/favicon.ico","apps/geolibre-desktop/public/favicon.png","apps/geolibre-desktop/public/geolibre-runtime-config.js","apps/geolibre-desktop/public/maptoolkit-attribution.png","apps/geolibre-desktop/public/maskable-icon-512x512.png","apps/geolibre-desktop/public/plugins/.gitignore","apps/geolibre-desktop/public/plugins/README.md","apps/geolibre-desktop/public/pwa-192x192.png","apps/geolibre-desktop/public/pwa-512x512.png","apps/geolibre-desktop/public/pyodide/pyodide-worker.js","apps/geolibre-desktop/public/whitebox-catalog-snapshot.json","apps/geolibre-desktop/src-tauri/Cargo.lock","apps/geolibre-desktop/src-tauri/Cargo.toml","apps/geolibre-desktop/src-tauri/Info.ios.plist","apps/geolibre-desktop/src-tauri/Info.plist","apps/geolibre-desktop/src-tauri/build.rs","apps/geolibre-desktop/src-tauri/capabilities/default.json","apps/geolibre-desktop/src-tauri/icons/128x128.png","apps/geolibre-desktop/src-tauri/icons/128x128@2x.png","apps/geolibre-desktop/src-tauri/icons/32x32.png","apps/geolibre-desktop/src-tauri/icons/64x64.png","apps/geolibre-desktop/src-tauri/icons/Square107x107Logo.png","apps/geolibre-desktop/src-tauri/icons/Square142x142Logo.png","apps/geolibre-desktop/src-tauri/icons/Square150x150Logo.png","apps/geolibre-desktop/src-tauri/icons/Square284x284Logo.png","apps/geolibre-desktop/src-tauri/icons/Square30x30Logo.png","apps/geolibre-desktop/src-tauri/icons/Square310x310Logo.png","apps/geolibre-desktop/src-tauri/icons/Square44x44Logo.png","apps/geolibre-desktop/src-tauri/icons/Square71x71Logo.png","apps/geolibre-desktop/src-tauri/icons/Square89x89Logo.png","apps/geolibre-desktop/src-tauri/icons/StoreLogo.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml","apps/geolibre-desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png","apps/geolibre-desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png","apps/geolibre-desktop/src-tauri/icons/android/values/ic_launcher_background.xml","apps/geolibre-desktop/src-tauri/icons/icon.icns","apps/geolibre-desktop/src-tauri/icons/icon.ico","apps/geolibre-desktop/src-tauri/icons/icon.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-20x20@1x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-512@2x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png","apps/geolibre-desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png","apps/geolibre-desktop/src-tauri/mas/Entitlements.mas.plist.template","apps/geolibre-desktop/src-tauri/src/earth_engine_oauth.rs","apps/geolibre-desktop/src-tauri/src/lib.rs","apps/geolibre-desktop/src-tauri/src/main.rs","apps/geolibre-desktop/src-tauri/src/native_duckdb.rs","apps/geolibre-desktop/src-tauri/tauri.android.conf.json","apps/geolibre-desktop/src-tauri/tauri.conf.json","apps/geolibre-desktop/src-tauri/tauri.ios.conf.json","apps/geolibre-desktop/src-tauri/tauri.mas.conf.json","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/.cargo-ok","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/.cargo_vcs_info.json","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/CHANGELOG.md","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/Cargo.lock","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/Cargo.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/Cargo.toml.orig","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/GEOLIBRE_PATCH.md","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/LICENSE.spdx","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/LICENSE_APACHE-2.0","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/LICENSE_MIT","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/README.md","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/SECURITY.md","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/.gitignore","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/build.gradle.kts","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/proguard-rules.pro","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/settings.gradle","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/src/androidTest/java/ExampleInstrumentedTest.kt","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/src/main/AndroidManifest.xml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/src/main/java/Geolocation.kt","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/src/main/java/GeolocationPlugin.kt","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/android/src/test/java/ExampleUnitTest.kt","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/api-iife.js","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/build.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/contributors/crabnebula.svg","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/contributors/rescue.png","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/guest-js/index.ts","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/ios/.gitignore","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/ios/Package.swift","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/ios/README.md","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/ios/Sources/GeolocationPlugin.swift","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/ios/Tests/PluginTests/PluginTests.swift","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/package.json","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/commands/check_permissions.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/commands/clear_permissions.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/commands/clear_watch.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/commands/get_current_position.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/commands/request_permissions.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/commands/watch_position.toml","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/autogenerated/reference.md","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/permissions/schemas/schema.json","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/rollup.config.js","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/src/commands.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/src/desktop.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/src/error.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/src/lib.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/src/mobile.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/src/models.rs","apps/geolibre-desktop/src-tauri/vendor/tauri-plugin-geolocation/tsconfig.json","apps/geolibre-desktop/src/App.tsx","apps/geolibre-desktop/src/components/CollapsibleSection.tsx","apps/geolibre-desktop/src/components/auth/Auth0Gate.tsx","apps/geolibre-desktop/src/components/auth/ClerkGate.tsx","apps/geolibre-desktop/src/components/command/CommandPalette.tsx","apps/geolibre-desktop/src/components/command/KeyboardShortcutsDialog.tsx","apps/geolibre-desktop/src/components/comments/AddCommentDialog.tsx","apps/geolibre-desktop/src/components/comments/CommentMapOverlay.tsx","apps/geolibre-desktop/src/components/comments/CommentThread.tsx","apps/geolibre-desktop/src/components/comments/CommentsPanel.tsx","apps/geolibre-desktop/src/components/comments/useCommentTool.ts","apps/geolibre-desktop/src/components/common/error-boundaries.tsx","apps/geolibre-desktop/src/components/expressions/ExpressionBuilderDialog.tsx","apps/geolibre-desktop/src/components/layout/AboutDialog.tsx","apps/geolibre-desktop/src/components/layout/AddDataDialog.tsx","apps/geolibre-desktop/src/components/layout/AddNetcdfDialog.tsx","apps/geolibre-desktop/src/components/layout/AiSectionContent.tsx","apps/geolibre-desktop/src/components/layout/BasemapExtractPanel.tsx","apps/geolibre-desktop/src/components/layout/BoundsRestrictionIndicator.tsx","apps/geolibre-desktop/src/components/layout/CollaborateDialog.tsx","apps/geolibre-desktop/src/components/layout/CollaborationParticipantRow.tsx","apps/geolibre-desktop/src/components/layout/CollaborationStatusBadge.tsx","apps/geolibre-desktop/src/components/layout/DesktopShell.tsx","apps/geolibre-desktop/src/components/layout/DiagnosticsDialog.tsx","apps/geolibre-desktop/src/components/layout/FieldCollectionDialog.tsx","apps/geolibre-desktop/src/components/layout/FileNamePromptDialog.tsx","apps/geolibre-desktop/src/components/layout/GeoreferencerDialog.tsx","apps/geolibre-desktop/src/components/layout/GpsTrackingDialog.tsx","apps/geolibre-desktop/src/components/layout/KnowledgeCardConsentDialog.tsx","apps/geolibre-desktop/src/components/layout/KnowledgeCardPanel.tsx","apps/geolibre-desktop/src/components/layout/LoadFeaturesIntoEditorDialog.tsx","apps/geolibre-desktop/src/components/layout/ManagePluginsDialog.tsx","apps/geolibre-desktop/src/components/layout/MapContextMenu.tsx","apps/geolibre-desktop/src/components/layout/MapGrid.tsx","apps/geolibre-desktop/src/components/layout/MapModeBanner.tsx","apps/geolibre-desktop/src/components/layout/NetcdfCubeSetupDialog.tsx","apps/geolibre-desktop/src/components/layout/NetcdfCubeWindow.tsx","apps/geolibre-desktop/src/components/layout/NetcdfProfileWindow.tsx","apps/geolibre-desktop/src/components/layout/NetcdfSampleMarkers.tsx","apps/geolibre-desktop/src/components/layout/NewProjectDialog.tsx","apps/geolibre-desktop/src/components/layout/NoServiceWorkerBanner.tsx","apps/geolibre-desktop/src/components/layout/OnboardingDialog.tsx","apps/geolibre-desktop/src/components/layout/PixelTimeSeriesControl.tsx","apps/geolibre-desktop/src/components/layout/PrintLayoutDialog.tsx","apps/geolibre-desktop/src/components/layout/ProjectGalleryDialog.tsx","apps/geolibre-desktop/src/components/layout/ProjectHistoryDialog.tsx","apps/geolibre-desktop/src/components/layout/ProjectPluginTrustDialog.tsx","apps/geolibre-desktop/src/components/layout/ProjectRecoveryDialog.tsx","apps/geolibre-desktop/src/components/layout/QuickAnalysisBanner.tsx","apps/geolibre-desktop/src/components/layout/RasterSubsetPanel.tsx","apps/geolibre-desktop/src/components/layout/RecordTourDialog.tsx","apps/geolibre-desktop/src/components/layout/RecordVideoDialog.tsx","apps/geolibre-desktop/src/components/layout/RegionSelectOverlay.tsx","apps/geolibre-desktop/src/components/layout/ReleaseNotes.tsx","apps/geolibre-desktop/src/components/layout/RemoteCursorsOverlay.tsx","apps/geolibre-desktop/src/components/layout/RoutingConsentDialog.tsx","apps/geolibre-desktop/src/components/layout/SaveTemplateDialog.tsx","apps/geolibre-desktop/src/components/layout/SetViewDialog.tsx","apps/geolibre-desktop/src/components/layout/SettingsDialog.tsx","apps/geolibre-desktop/src/components/layout/ShareProjectDialog.tsx","apps/geolibre-desktop/src/components/layout/StatusBar.tsx","apps/geolibre-desktop/src/components/layout/TerrainSettingsDialog.tsx","apps/geolibre-desktop/src/components/layout/TopToolbar.tsx","apps/geolibre-desktop/src/components/layout/UpdateInstructions.tsx","apps/geolibre-desktop/src/components/layout/UpdateNotificationModal.tsx","apps/geolibre-desktop/src/components/layout/add-data/ServiceLibrarySection.tsx","apps/geolibre-desktop/src/components/layout/add-data/apply-service.ts","apps/geolibre-desktop/src/components/layout/add-data/constants.ts","apps/geolibre-desktop/src/components/layout/add-data/context.tsx","apps/geolibre-desktop/src/components/layout/add-data/helpers.ts","apps/geolibre-desktop/src/components/layout/add-data/martin-source-match.ts","apps/geolibre-desktop/src/components/layout/add-data/open-add-data.ts","apps/geolibre-desktop/src/components/layout/add-data/service-library.ts","apps/geolibre-desktop/src/components/layout/add-data/shared.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/ArcGISSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/CadSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/DeckVizSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/DelimitedTextSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/GdbSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/GeoRssSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/GpxSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/MbtilesSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/OgcFeaturesSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/OgcVectorTilesSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/PhotosSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/PostgresSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/VideoSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/WfsSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/WmsSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/WmtsSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/sources/XyzSource.tsx","apps/geolibre-desktop/src/components/layout/add-data/types.ts","apps/geolibre-desktop/src/components/layout/add-data/useMartinConnection.ts","apps/geolibre-desktop/src/components/layout/toolbar/AddDataMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ConsentNoticeDialogs.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ControlsMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/EditMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/HelpMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ImportWarningList.tsx","apps/geolibre-desktop/src/components/layout/toolbar/OsmPbfDialogs.tsx","apps/geolibre-desktop/src/components/layout/toolbar/PluginToolbarMenus.tsx","apps/geolibre-desktop/src/components/layout/toolbar/PluginsMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ProcessingMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ProjectFileDialogs.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ProjectMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/ViewMenu.tsx","apps/geolibre-desktop/src/components/layout/toolbar/constants.ts","apps/geolibre-desktop/src/components/legend/LegendSwatch.tsx","apps/geolibre-desktop/src/components/legend/MapLegendPanel.tsx","apps/geolibre-desktop/src/components/panels/AssistantPanel.tsx","apps/geolibre-desktop/src/components/panels/AttributeChartDialog.tsx","apps/geolibre-desktop/src/components/panels/AttributeFormSection.tsx","apps/geolibre-desktop/src/components/panels/AttributeStatsDialog.tsx","apps/geolibre-desktop/src/components/panels/AttributeTable.tsx","apps/geolibre-desktop/src/components/panels/BasemapPickerDialog.tsx","apps/geolibre-desktop/src/components/panels/BrowserPanel.tsx","apps/geolibre-desktop/src/components/panels/BrowserTreeNode.tsx","apps/geolibre-desktop/src/components/panels/ColumnExplorerDialog.tsx","apps/geolibre-desktop/src/components/panels/DashboardPanel.tsx","apps/geolibre-desktop/src/components/panels/EditorTrackingSection.tsx","apps/geolibre-desktop/src/components/panels/FlightSimulatorPanel.tsx","apps/geolibre-desktop/src/components/panels/FloatingPanels.tsx","apps/geolibre-desktop/src/components/panels/LayerJoinsSection.tsx","apps/geolibre-desktop/src/components/panels/LayerPanel.tsx","apps/geolibre-desktop/src/components/panels/LayerPanelPlaceSearch.tsx","apps/geolibre-desktop/src/components/panels/LayerSwatchIcon.tsx","apps/geolibre-desktop/src/components/panels/NetcdfCubeView.tsx","apps/geolibre-desktop/src/components/panels/NetcdfProfileChart.tsx","apps/geolibre-desktop/src/components/panels/NetcdfProfilePanel.tsx","apps/geolibre-desktop/src/components/panels/NetcdfSymbologySection.tsx","apps/geolibre-desktop/src/components/panels/NotebookPanel.tsx","apps/geolibre-desktop/src/components/panels/PluginRightPanel.tsx","apps/geolibre-desktop/src/components/panels/PythonConsolePanel.tsx","apps/geolibre-desktop/src/components/panels/PythonEditorPane.tsx","apps/geolibre-desktop/src/components/panels/RasterAttributeTable.tsx","apps/geolibre-desktop/src/components/panels/RasterSymbologySection.tsx","apps/geolibre-desktop/src/components/panels/RegionalBasemapSection.tsx","apps/geolibre-desktop/src/components/panels/RouteAnimationPanel.tsx","apps/geolibre-desktop/src/components/panels/SharedSidebar.tsx","apps/geolibre-desktop/src/components/panels/SqlWorkspacePanel.tsx","apps/geolibre-desktop/src/components/panels/StyleManagerPanel.tsx","apps/geolibre-desktop/src/components/panels/StylePanel.tsx","apps/geolibre-desktop/src/components/panels/SunPanel.tsx","apps/geolibre-desktop/src/components/panels/TimeSliderSymbologySection.tsx","apps/geolibre-desktop/src/components/panels/ViewerLayerPanel.tsx","apps/geolibre-desktop/src/components/panels/VirtualFieldsSection.tsx","apps/geolibre-desktop/src/components/panels/WidgetEditorDialog.tsx","apps/geolibre-desktop/src/components/panels/charts/chart-colors.ts","apps/geolibre-desktop/src/components/panels/charts/chart-spec.ts","apps/geolibre-desktop/src/components/panels/charts/chart-view.tsx","apps/geolibre-desktop/src/components/processing/ConversionDialog.tsx","apps/geolibre-desktop/src/components/processing/CrsPickerInput.tsx","apps/geolibre-desktop/src/components/processing/GeocodeDialog.tsx","apps/geolibre-desktop/src/components/processing/ModelBuilderDialog.tsx","apps/geolibre-desktop/src/components/processing/NetworkToolsDialog.tsx","apps/geolibre-desktop/src/components/processing/ObjectDetectionDialog.tsx","apps/geolibre-desktop/src/components/processing/ParameterField.tsx","apps/geolibre-desktop/src/components/processing/ProcessingDialog.tsx","apps/geolibre-desktop/src/components/processing/ProcessingHistoryDialog.tsx","apps/geolibre-desktop/src/components/processing/RasterToolsDialog.tsx","apps/geolibre-desktop/src/components/processing/SegmentEverythingPanel.tsx","apps/geolibre-desktop/src/components/processing/SegmentationDialog.tsx","apps/geolibre-desktop/src/components/processing/SidecarHelpBanner.tsx","apps/geolibre-desktop/src/components/processing/StatisticsToolsDialog.tsx","apps/geolibre-desktop/src/components/processing/VectorToolsDialog.tsx","apps/geolibre-desktop/src/components/selection/SelectByExpressionDialog.tsx","apps/geolibre-desktop/src/components/selection/SelectByLocationDialog.tsx","apps/geolibre-desktop/src/components/selection/selection-dialog-shared.tsx","apps/geolibre-desktop/src/components/storymap/StoryMapComposeBar.tsx","apps/geolibre-desktop/src/components/storymap/StoryMapHandoutDialog.tsx","apps/geolibre-desktop/src/components/storymap/StoryMapPanel.tsx","apps/geolibre-desktop/src/components/storymap/StoryMapPresenter.tsx","apps/geolibre-desktop/src/hooks/embedHost.ts","apps/geolibre-desktop/src/hooks/useBeforeUnloadGuard.ts","apps/geolibre-desktop/src/hooks/useBrowserTree.ts","apps/geolibre-desktop/src/hooks/useCogSpectralIdentify.ts","apps/geolibre-desktop/src/hooks/useCollaboration.ts","apps/geolibre-desktop/src/hooks/useColormapRamps.ts","apps/geolibre-desktop/src/hooks/useCommandBridge.ts","apps/geolibre-desktop/src/hooks/useConsentGatedActions.ts","apps/geolibre-desktop/src/hooks/useDataUrlLoader.ts","apps/geolibre-desktop/src/hooks/useDesktopSettings.ts","apps/geolibre-desktop/src/hooks/useEmbedApi.ts","apps/geolibre-desktop/src/hooks/useEmbedBridge.ts","apps/geolibre-desktop/src/hooks/useFileNamePrompt.ts","apps/geolibre-desktop/src/hooks/useFloatingPanelRect.ts","apps/geolibre-desktop/src/hooks/useGlobalShortcuts.ts","apps/geolibre-desktop/src/hooks/useIsMobileViewport.ts","apps/geolibre-desktop/src/hooks/useJupyterRelay.ts","apps/geolibre-desktop/src/hooks/useLanguage.ts","apps/geolibre-desktop/src/hooks/useLastBasemapPersistence.ts","apps/geolibre-desktop/src/hooks/useLayerChartData.ts","apps/geolibre-desktop/src/hooks/useLayerLibraryPersistence.ts","apps/geolibre-desktop/src/hooks/useLayoutOptions.ts","apps/geolibre-desktop/src/hooks/useMapPanelControl.ts","apps/geolibre-desktop/src/hooks/useNetcdfIdentify.ts","apps/geolibre-desktop/src/hooks/useNotebookBridge.ts"],"storefront":"/r/opengeos","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/opengeos/GeoLibre/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}