Tokens
Track, visualize, and compete on AI coding assistant token usage across Claude Code, Cursor, OpenCode, Codex, Gemini, Kimi, and Qwen. The Kardashev Scale for AI Devs.
翻译准备中
Self-hosted geospatial data catalog with semantic search (pgvector), OGC/STAC APIs, and map builder. Built on FastAPI, PostGIS, React, and MapLibre.
翻译准备中
正在加载完整 README。 以下为已保存的摘录。
Turn scattered GIS files into a searchable catalog and shareable maps—on your own infrastructure.
GeoLens brings files, database tables, service snapshots, and remote assets into one spatial catalog you control. Search metadata, preview data, and keep every dataset’s origin visible. Build maps in the browser, publish links or embeds, and keep using QGIS and open standards alongside your team’s existing tools.
No install required. Browse the sample catalog and maps without an account, or sign in with Google, GitHub, or Microsoft to try the map builder. Demo data may be wiped at any time.查看完整 README ↗English · Español · Français · Deutsch · 简体中文
GeoLens is for teams whose spatial data is spread across file shares, PostGIS databases, web services and STAC catalogs. It puts that data in one searchable catalog, records where each dataset came from and checks whether the source is still current. Teams build and share maps in the browser, and QGIS, scripts and AI agents read the same data through OGC API and STAC. It runs on your own servers with Docker Compose, sends no telemetry and is licensed under Apache 2.0.
The demo needs no install or account; sign in with Google, GitHub or Microsoft to use the map builder. Demo data may be wiped at any time.
flowchart LR
subgraph IN ["Bring data in"]
F["Files<br/>GeoPackage · Shapefile · GeoParquet<br/>GeoTIFF · COPC · 3D Tiles"]
DB["Existing PostGIS tables"]
SVC["Services<br/>ArcGIS · WFS · OGC API Features"]
ST["Remote STAC assets"]
end
subgraph GL ["GeoLens"]
CAT["Catalog<br/>search · metadata · provenance"]
MB["Map builder<br/>styles · 3D · analysis · stories · dashboards · sharing"]
STD["Open APIs<br/>OGC API · STAC · DCAT · tiles"]
end
subgraph OUT ["Use it anywhere"]
WEB["Browsers and embeds"]
GIS["QGIS · ArcGIS · CesiumJS"]
CODE["curl · Python · TypeScript · DuckDB"]
AG["AI agents via MCP"]
end
F & DB & SVC & ST --> CAT
CAT --> MB --> WEB
CAT --> STD --> GIS & CODE & AG
Each dataset records where it came from: an uploaded file, a database table, a service, a STAC item or a drawing in the browser. Imported datasets also record when they were last refreshed, and with an update cadence GeoLens marks them fresh, due or overdue. For services and STAC sources, GeoLens also checks that the source still answers, and for services it flags upstream schema changes before they reach your maps. If a service disappears, the imported copy keeps working.
Vector datasets are OGC API Features collections, the catalog is OGC API Records and STAC, and
every layer has a tile URL. You can try this against the demo without an account (the second
command needs jq):
# Search the catalog (OGC API Records)
curl "https://demo.getgeolens.com/api/collections/datasets/items?q=volcanic%20eruptions"
# Read the top match with a CQL2 filter (OGC API Features): eruptions of VEI 6 or larger
ID=$(curl -s "https://demo.getgeolens.com/api/collections/datasets/items?q=volcanic%20eruptions&limit=1" | jq -r '.features[0].id')
curl -G "https://demo.getgeolens.com/api/collections/$ID/items" \
--data-urlencode "filter=vei >= 6" -d limit=3
QGIS adds the same API as an OGC API Features connection, as the QGIS guide shows. The GeoLens plugin for QGIS adds catalog search, private datasets and edits that sync back to GeoLens.
| Standard | Where | Use it with |
|---|---|---|
| OGC API Features, with CQL2 filtering and queryables | /api/collections/{id}/items | QGIS, ArcGIS, GDAL/OGR and other OGC API clients |
| OGC API Records | /api/collections/datasets/items | Catalog search from other portals and tools |
| STAC API 1.0 | /api/stac/ | STAC clients such as pystac-client and STAC Browser |
| DCAT 3, DCAT-US 3.0 and GeoDCAT-AP as JSON-LD | /api/datasets/dcat/, /api/datasets/dcat-us/3.0/, /api/datasets/geodcat-ap/ | Harvesting into national and EU open-data portals |
| Vector tiles and COG raster tiles | a tile URL on every layer | MapLibre, OpenLayers, Leaflet |
| 3D Tiles and COPC | each 3D dataset's page | CesiumJS, QGIS, Potree |
Data exports as GeoJSON, Shapefile, GeoPackage, CSV, FlatGeobuf, GeoParquet, PMTiles or Cloud-Optimized GeoTIFF.
The geolens CLI publishes files and applies catalog manifests, Python and TypeScript SDKs cover
the API, and a read-only MCP server lets AI agents search the catalog. The
API reference and
SDK guides document them, and the
examples gallery has runnable code for
MapLibre, Leaflet, OpenLayers, the ArcGIS Maps SDK, QGIS and DuckDB.
GeoLens can answer questions about a dataset, edit maps from plain-language requests, draft metadata and search in natural language. It works with any OpenAI-compatible endpoint, including a local server such as Ollama, and with Claude through Anthropic, Microsoft Foundry, Amazon Bedrock or Google Vertex AI. AI stays off until an administrator configures a provider, and every workflow works without it.
You need Git, curl and Docker with the Compose plugin. The Install Guide lists the versions, memory and ports it expects.
curl -fsSL https://getgeolens.com/install.sh | sh # clone, generate secrets, start the stack
cd geolens
grep '^GEOLENS_ADMIN_PASSWORD=' .env # the generated admin password
Open http://localhost:8080 and sign in as admin with that password. Each
release includes a SHA256SUMS file for checking
install.sh before you run it. To build from source instead, clone the repository and run
bash scripts/install.sh; the first build takes 5-10 minutes.
For production, read the cloud deployment guide, which also lists what an external database needs. Docker Compose is the supported path, and geolens-deployments has a community-maintained Helm chart and Terraform recipes for AWS ECS Fargate and Azure Container Apps.
The bundled database is backed up daily, and the backup guide covers off-site copies and restores. UPGRADING.md covers upgrades and rollback, RUNBOOK.md covers operations, and the Configuration Reference lists every setting.
With the CLI installed, publish the sample file from the install directory:
geolens login http://localhost:8080/api # your admin username and password
geolens publish examples/manifests/first-catalog/city-parks.geojson --name "City Parks"
geolens publish prints the new dataset's URL. To manage a whole catalog, describe the sources in
a geolens.yaml manifest and run geolens apply; examples/manifests/ has
templates.
To load the demo's maps and datasets, export GEOLENS_ADMIN_PASSWORD from .env and run
python scripts/seed-showcase.py --username admin. The script needs Python 3.10+ and httpx and
downloads public data from about a dozen sources; scripts/README.md has the
sizes and options.
data schema, rasters are Cloud-Optimized GeoTIFFs in your own storage (local disk, S3/MinIO or
Azure Blob), and the catalog exports through OGC API, STAC and DCAT.Bug reports, fixes, translations and docs are welcome. CONTRIBUTING covers setup and tests, and ARCHITECTURE maps the code. The QGIS plugin, examples and deployments repositories take issues and pull requests too. Ask questions in GitHub Discussions, report bugs in Issues, and report security problems privately as described in SECURITY.md. The roadmap shows what's planned.
GeoLens is built on these open source projects. Thanks to everyone who maintains them.
These names belong to their owners, and listing them doesn't mean they endorse GeoLens; see TRADEMARKS.md.
GeoLens is licensed under the Apache License 2.0. The GeoLens name, logo and brand
assets are not covered by this license; see TRADEMARKS.md. Sample-data
attribution is in THIRD_PARTY_DATA.md. The web app serves the license notices for the
code it bundles at /third-party-licenses.txt, and the backend image's copyleft notices are in
backend/licenses.
Project policies: editions · support · governance · maintainers · security · release process · egress & air-gap