第01章 - GeoLibre 概述与核心理念
本章回答四个问题:GeoLibre 到底是什么、它为什么这样设计、它现在能做什么、以及它适合谁。读完本章,你应当能判断一个具体任务该不该交给 GeoLibre,并知道后续章节分别深入哪一块能力。
本教程基于 GeoLibre 3.4(仓库 package.json 中 version 为 3.4.0),所有功能名、菜单路径与参数名以该版本仓库中的实现与文档为准。
1.1 定位:一个能在任何宿主里打开的 GIS 工作区
1.1.1 一句话定义
GeoLibre 的官方定义是:一个免费开源、轻量、云原生的 GIS 平台,用于可视化、浏览与分析地理空间数据。它同时运行在网页浏览器、桌面、移动端与 Jupyter Notebook 中,并且默认让数据留在本地。
这句话里有三个关键词,对应三种不同的取舍:
| 关键词 | 含义 | 与常见工具的区别 |
|---|---|---|
| 免费开源(free and open-source) | MIT 许可,源码可读、可改、可再分发 | QGIS 也是开源(GPL),ArcGIS Pro / CARTO / Felt 是商业产品 |
| 轻量(lightweight) | 没有安装包也能用网页版;桌面版是 Tauri 外壳而不是 Electron 巨无霸 | 传统桌面 GIS 需要完整安装与较多系统资源 |
| 云原生(cloud-native) | 优先支持 COG、GeoParquet、PMTiles、Zarr、STAC 这类“放在对象存储里、按 HTTP Range 读取”的格式 | 传统 GIS 以本地文件为中心,云端格式往往要靠插件或服务端 |
“云原生”在这里不等于“必须联网”。它指的是数据组织方式:GeoLibre 可以直接对远程对象存储里的云优化文件发起分段读取,而不必先把整份数据下载下来;同一套能力在断网时依然可以处理本地文件。
1.1.2 它不是什么
明确边界比罗列功能更有用。根据官方文档的自我描述,GeoLibre 不是:
- 不是 QGIS 的替代品。 官方在对比文档里用“专业相机与手机相机”作类比:QGIS 成熟、强大、可扩展;GeoLibre 追求可及性、跨平台与“打开就能用”。两者服务不同的人与不同的时刻。
- 不是在线 SaaS。 网页版是托管在 GitHub Pages 上的静态站点,没有服务器账号,数据在浏览器会话内本地处理。只有当你主动添加远程 URL 或主动分享工程时,数据才会离开浏览器。
- 不是纯地图查看器。 它带有 1,000+ 地理处理工具、空间 SQL、属性表编辑、符号化、打印布局与故事地图,属于“做数据工作”的工具,而不是只用来“看地球”的工具。
- 不是企业级地理数据库管理系统。 版本化编辑、复制、企业地理数据库运维不在它的范围内,这类需求仍应交给 ArcGIS 体系或 PostGIS 工程实践。
1.1.3 四类工具的定位对比
| 类别 | 代表 | 强项 | 典型限制 | GeoLibre 的位置 |
|---|---|---|---|---|
| 桌面 GIS | QGIS、ArcGIS Pro | 格式覆盖最广、制图与标签最深、插件/工具箱最全 | 需要安装,重分析任务绑定单机 | 用同一套工程文件承担“轻量分析 + 发布 + 嵌入” |
| 在线 GIS 平台 | ArcGIS Online、CARTO、Felt | 托管、协作、组织权限、仓库内计算 | 数据在厂商云,依赖订阅与网络 | 数据留在本地,工程可导出为单文件 HTML |
| 可视化/探索工具 | kepler.gl | 大规模点与轨迹的快速可视化 | 分析工具箱与制图产出较弱 | 兼顾可视化与地理处理、SQL、制图 |
| 虚拟地球 | Google Earth / Earth Pro | 影像、历史影像、街景、真实感三维 | 不是 GIS:无属性表、无投影、无分析工具箱 | 内置 Cesium 地球,并可直接读 KML/KMZ 符号与结构 |
1.2 设计哲学:本地优先、云原生、跨平台
1.2.1 本地优先(Local-first)
GeoLibre 把“数据默认留在本地”当作产品承诺,而不是一句营销话。具体表现为:
- 网页版把矢量、栅格、SQL 计算全部放在浏览器内完成;托管的公开站点只统计页面访问量,分析代码看不到你加载的数据。
- 分享工程时上传的是工程文件(图层引用、样式、视图状态),不是你磁盘上的数据文件;本地文件图层会在分享前被明确警告。
- 需要完全私有化时,可以把同一份 Web 构建部署到自己的服务器,与数据同源放置。
- 桌面版提供本地文件对话框、MBTiles、本地栅格读取、工程保存/打开等浏览器做不到的能力。
提示 “本地优先”不等于“离线优先”。GeoLibre 的底图、云原生数据、在线目录都需要网络;它的意思是计算与数据归属在本地,而不是所有资源都已缓存。离线使用请参考桌面版、PWA 与“Download Offline Area”工具。
1.2.2 云原生(Cloud-native)
GeoLibre 的云原生性体现在数据格式与访问方式上,而不是“提供一个云服务”:
| 能力 | 具体表现 |
|---|---|
| 云优化栅格 | COG / GeoTIFF、Cloud-Optimized NetCDF/HDF(kerchunk 引用)、MBTiles |
| 云原生矢量 | GeoParquet、FlatGeobuf、PMTiles,通过 HTTP Range 流式读取 |
| 多维数据 | Zarr(远程 store、Icechunk 仓库、本地目录),带变量与维度选择器 |
| 目录协议 | STAC(静态目录与 STAC API)、OGC API - Features/Tiles、CSW |
| 对象存储 | 公开的 S3/GCS/Azure URL 在 SQL 中透明重写;私有 S3 桶可用凭据浏览 |
| 数据库 | PostGIS 浏览、SQL Server/Azure SQL(桌面)、DuckDB、Apache Iceberg、浏览器内 PGlite/PostGIS |
这套组合的意义是:你不需要先建一个 GIS 服务器,才能用云上的数据。 一个放在对象存储里的 GeoParquet 或 COG,可以直接被浏览器按需读取;需要服务端时,也支持 WMS/WFS/WMTS、ArcGIS 服务与自托管目录。
1.2.3 跨平台(One codebase, many hosts)
GeoLibre 用同一套 React 代码库构建多种宿主:
| 宿主 | 构建方式 | 典型用途 | 关键差异 |
|---|---|---|---|
| Web | Vite 静态构建,部署在 GitHub Pages 或任意静态服务器 | 分享、嵌入、临时分析 | 无本地文件对话框、无本地 MBTiles/本地栅格读取 |
| 桌面 | Tauri v2(Windows/macOS/Linux) | 日常生产、访问本地文件、Python sidecar | 完整能力,含本地工程保存/打开 |
| Android | Tauri v2 mobile,Google Play / APK | 外业采集、现场查看 | 隐藏依赖本地进程的工具(Conversion、AI Segmentation、sidecar Raster、PostgreSQL/SQL Server) |
| iOS | Tauri v2 mobile,App Store | iPhone/iPad 查看与轻量工作 | 与 Android 相同的裁剪,另外 App Store 构建不含 Earth Engine 登录 |
| Jupyter | Python 包 geolibre(anywidget) |
Notebook 内嵌完整应用、双向同步 | 由 Python 驱动地图,工程可保存为可移植工程文件 |
| R | R 包 geolibre(HTML widget) |
RStudio / Quarto / R Markdown / Shiny | 以 HTML widget 形式嵌入,交换可移植工程 |
同一份 .geolibre 工程可以在这些宿主之间移动,是这套设计最实际的好处:在桌面做数据准备,在网页分享结果,在 Notebook 里用 Python 复现,在手机上查看现场。
1.2.4 可审计、可撤销的自动化
GeoLibre 的 AI 能力被刻意设计成“通过应用执行操作”,而不是“让模型直接改文件”:
- AI 助手把自然语言请求转换成 GeoLibre 操作(空间 SQL、符号化、增删数据、地图控制),这些操作走应用自己的命令通道,因此可审计、可撤销。
- 每次地理处理都会进入 Processing History,可一键重跑并复制等价 Python 代码。
- MCP 服务器(
geolibre-mcp)以无头方式编写.geolibre工程,读写被限制在--root或GEOLIBRE_MCP_ROOTS指定的根目录内。 - 部署侧另有 capability 模型,可按
project:edit、data:add、processing:run、export:data、plugins:install、settings:manage六项能力独立收紧界面。
注意 AI 助手默认关闭,直到你配置了 Provider 与凭据。它不是一个“云端代做 GIS”的服务:模型只产出操作意图,真正的执行仍在你的浏览器/桌面进程里。
1.2.5 各宿主共享的行为契约
跨平台最容易“看起来一样、用起来不一样”。GeoLibre 用一份行为契约来约束差异,判断一个功能在哪端可用时,可以按这张表核对:
| 行为 | Web | 桌面 | 移动 | Jupyter/R |
|---|---|---|---|---|
| 同一套工作区与工程格式 | 是 | 是 | 是 | 是 |
| 浏览器会话内处理数据 | 是 | 是 | 是 | 是 |
| 本地文件对话框 | 否 | 是 | 系统选择器 | 宿主决定 |
| 本地 MBTiles / 本地栅格读取 | 否 | 是 | 受限 | 否 |
| 工程保存到本地路径 | 下载/文件选择器 | 是 | 受限 | 由 Python/R 写入 |
| Python sidecar 工具 | 仅同源代理部署 | 是 | 否 | 否 |
| 触摸优先布局 | 响应式 | 窗口尺寸 | 是 | 宿主页面 |
| 插件安装 | 是 | 是 | 受限 | 视构建而定 |
看表的规律很清楚:越靠近“本地文件系统与本地进程”,桌面越是唯一完整答案;越靠近“分享与嵌入”,Web 越是首选。
1.3 项目脉络:从 v0.1 到 v3.4
1.3.1 关键里程碑
GeoLibre 的 docs/roadmap.md 按版本记录了全部发布内容。下面抽取对理解产品形态最有帮助的节点:
| 版本 | 主题 | 代表性能力 |
|---|---|---|
| v0.1 | 地图查看器与 GeoJSON | Tauri + React + MapLibre 外壳、图层/样式面板、基础属性表、插件接口 |
| v0.2 | 工程持久化 | .geolibre.json 保存/打开、最近工程、属性表高亮 |
| v0.3 | 云原生格式 | GeoParquet(DuckDB-WASM)、FlatGeobuf、PMTiles、COG/GeoTIFF |
| v0.4 | DuckDB Spatial | INSTALL spatial / LOAD spatial,Shapefile、KML/KMZ、GeoPackage 等导入路径 |
| v0.9 | 数据集成与菜单重组 | SQL 工作区、Planetary Computer、Earth Engine、Time Slider、Web Services、Conversion/Vector/Raster 菜单、Docker |
| v1.0 | 处理流水线与插件体系 | GDAL/Rasterio/GeoPandas 流水线、外部插件分发、插件市场 MVP、Python 包、跨平台安装包 |
| v1.3 | 分析深度与协作 | 空间统计、网络分析、Apache Sedona SQL 引擎、实时协作 MVP、故事地图、AI 助手、Python 控制台、Android |
| v1.5 | 浏览器内 Whitebox | 1,000+ 工具改为 WebAssembly 在浏览器执行、Dashboard 面板、UI Profiles |
| v1.8 | 产出与标注 | 相机漫游录制、故事地图、单文件 HTML 导出、地图注记 |
| v2.0 | 三维地球与符号交换 | CesiumJS 三维地球、行星底图、SLD/QML/Mapbox GL 样式互通、可回写源图层的编辑 |
| v2.2 | 制图与表达式体系 | 规则渲染器、Style Manager、Expression Builder、虚拟字段、打印图集(Atlas) |
| v2.5 | 工程迁移与自托管 | QGIS/ArcGIS Pro 工程导入、DGGS 插件、自托管共享/协作服务、iOS |
| v2.6 | 深链与 MCP | data/style 深链、geolibre-mcp、COG 驱动地形、中国区域底图、自有设计系统 |
| v2.7 | 可视化建模与外部接入 | Model Builder、Chrome 扩展、STAC 全资产类型、框选/多边形选择 |
| v2.9 | 无令牌三维地球 | Cesium 地球不再强制 Ion token、capability 模型、无密钥全球 DEM 下载 |
| v3.0 | Cesium 成为一等引擎 | 主图可切换 Cesium、可编辑 SVG 打印布局、ArcGIS Feature Service 回写 |
| v3.1 | 四引擎齐全 | Mapbox GL JS 与 ArcGIS Maps SDK 加入、God’s Eye View、OAuth 分享、语音 AI 助手 |
| v3.2 | 点云与凭据安全 | 点云标注插件、私有 S3、系统凭据库(Keychain/Credential Manager/Secret Service) |
| v3.3 | 视线与坐标体系 | 视线分析、MGRS/USNG/任意 EPSG 坐标、SQL Server、工程快照对比与单图层恢复 |
| v3.4 | 影像分析与星载激光 | OBIA 工作台与 eCognition 规则集导入、ICESat-2/GEDI、逐向导航、ArcGIS 服务完整编辑 |
提示 版本号不是“功能开关”。GeoLibre 的工程文件带
version字段(当前写入0.2.0),但应用版本与工程格式版本是两条线;用 3.4 打开早期工程通常无需迁移。
1.3.2 三条主线
回看这条版本线,可以把它归纳为三条同时推进的主线:
| 主线 | 起点 | 现在的形态 |
|---|---|---|
| 数据入口 | GeoJSON → DuckDB → 云原生格式 | 文件、URL、OGC/ArcGIS 服务、STAC、数据库、3D/点云、CAD、Excel、File GDB 等统一进 Add Data 与 Browser 面板 |
| 分析引擎 | 本地算法 → Turf.js → Whitebox/GeoPandas/rasterio | 浏览器 WASM 工具箱 + 客户端矢量/栅格引擎 + 可选 Python sidecar + 三种 SQL 引擎 + Model Builder |
| 产出与协作 | 保存工程 → 分享 → 打印 | 打印布局/图集、故事地图、Dashboard、单文件 HTML、嵌入 API、实时协作、自托管服务端 |
理解这三条主线,就能理解 GeoLibre 的功能为什么这样分布:入口尽量的宽,分析尽量留在客户端,产出尽量做成可带走的文件。
1.3.3 本教程的版本基准
| 项目 | 值 |
|---|---|
| 应用版本 | 3.4.0 |
| 仓库 | opengeos/GeoLibre(GitHub) |
| 作者 | Qiusheng Wu(giswqs) |
| 许可证 | MIT |
| 官网 | https://geolibre.app |
| 网页版 | https://web.geolibre.app |
| 文档版本基准 | 仓库 main 分支 docs/ |
1.4 核心能力全景
1.4.1 1,000+ 浏览器内地理处理工具
Processing → Whitebox Toolbox 打开的工具箱包含 1,000+ 个地理处理工具,通过 WebAssembly 运行时在浏览器内执行,具备原生栅格与矢量 I/O。它们来自 Whitebox Next Gen 套件加上 GeoLibre 自有的 WASM 工具,按类别组织:
| 类别 | 工具数 | 典型能力 |
|---|---|---|
| Vector | 313 | 叠加、缓冲、连接、清理、拓扑、概化 |
| Raster | 256 | 栅格代数、滤波、重分类、分区与邻域统计 |
| Remote sensing | 154 | 光谱指数、波段运算、分类、变化检测 |
| Hydrology | 100 | 流向/汇流累积、流域、河网、洼地填充 |
| Terrain | 99 | 坡度、坡向、山体阴影、曲率、粗糙度、视域 |
| LiDAR | 67 | 点云滤波、地面分类、DEM/DSM 生成 |
| Conversion | 49 | 转为 GeoParquet、PMTiles、COG 等云原生格式 |
| Network | 26 | 连通性、成本距离、路径分析 |
| Projection | 4 | 栅格与矢量重投影 |
合计 1,068 项(按上表逐项相加)。此外,Processing → GeoLibre Toolbox 下还有矢量工具(Turf.js 客户端、可选 GeoPandas/Pyodide 或 sidecar 引擎)、栅格工具(rasterio sidecar,带客户端回退)、Conversion、Spatial Statistics 与 Network 工具。这两套工具箱在同一个 Processing 菜单里,因此部分类别名会出现两次,这是正常现象。
注意 “浏览器内执行”意味着数据不上传,但也意味着受浏览器内存与 WebAssembly 限制。多 GB 的本地处理任务仍应交给桌面 GIS;GeoLibre 的定位是“把大部分常见分析放到手边”,不是“无限算力”。
1.4.2 四种渲染引擎
同一个工程可以切换四种渲染引擎(View → Rendering engine),并且可以在分屏中混用:
| 引擎 | 角色 | 强项 | 凭据 |
|---|---|---|---|
| MapLibre GL JS | 默认二维引擎 | 插件支持最广、矢量瓦片与样式表达最成熟 | 不需要 |
| Mapbox GL JS | 可选二维引擎 | Mapbox 样式、全球视图、地形 | 需要 Mapbox access token |
| CesiumJS | 可选三维地球 | 原生地球、地形、3D Tiles、CZML、Ion、I3S | 无 token 可用;token 解锁 World Terrain 与 Ion 影像 |
| ArcGIS Maps SDK for JavaScript | 可选二维/三维 | 原生 ArcGIS 服务、三维场景、投影(Spilhaus 等) | 无凭据可用;API key 解锁 Esri 底图样式 |
引擎选择随工程保存;切换时相机、图层、分组、可见性、透明度与受支持的样式会保留。菜单、工具与插件会按当前引擎的能力进行门控。
1.4.3 SQL 工作区与三种引擎
SQL 工作区(Processing → SQL Workspace)支持三种引擎:
| 引擎 | 运行位置 | 适用场景 |
|---|---|---|
| DuckDB Spatial | 浏览器(DuckDB-WASM) | 主力引擎:Parquet/GeoParquet、本地文件、远程 URL、空间函数 |
| PGlite / PostGIS | 浏览器(PGlite) | 想用 PostGIS 语法与函数、验证 PostGIS 行为 |
| Apache Sedona | 浏览器(CereusDB)或 sidecar | 大数据风格的空间 SQL、Sedona 函数 |
裸 URL 会自动包裹成匹配的读取器并发起 HTTP Range 请求;结果可以加回地图,也可以导出为 CSV 或 GeoParquet。SQL 工作区可停靠为地图旁的调整大小面板,并带表名、列名与关键字自动补全。
1.4.4 AI 助手、MCP 与智能体技能
| 入口 | 做什么 | 边界 |
|---|---|---|
| AI Assistant(面板) | 自然语言 → 空间 SQL、符号化、增删图层、地图控制 | 默认关闭;需配置 Provider;操作可撤销 |
| Python Console | 在应用内用 Python 脚本驱动应用 | 由 Pyodide 或本地 Python 执行 |
geolibre-mcp |
无头编写/修改 .geolibre 工程,供 AI 客户端调用 |
stdio;读写限定在允许根目录 |
skills/geolibre/ |
教外部智能体“什么时候用 MCP、Python API 还是手写工程 JSON” | 随仓库发布,有测试守卫 |
Provider 支持 Google Gemini、Anthropic、OpenAI、OpenRouter、Vercel AI Gateway、Amazon Bedrock、本地 Ollama,以及任意 OpenAI 兼容端点。凭据保存在本机(桌面进系统凭据库),不写进共享工程文件。
1.4.5 插件系统与插件市场
- 内置插件覆盖图层控制、底图、MapLibre 组件、卷帘、街景、时间滑块、Overture Maps、LiDAR、GeoAgent、GeoEditor、大气效果等。
- 外部插件通过
plugin.json清单从 zip、目录或市场安装;市场安装与更新会校验发布的 bundle hash,并遵守 registry blocklist。 - 插件可以注册右侧面板、工具栏菜单与浮动面板,可以声明支持的渲染引擎,也可以向 AI 助手注册工具与提示词。
插件 API 的细节留给第21章 插件系统与插件开发。
1.4.6 工程格式与产出
一个 .geolibre 工程文件装下:地图视图、底图、每个图层的源与样式、地图偏好、插件状态、图例、打印布局、故事地图、Dashboard 部件、书签、交互状态与元数据。工程是引用式的:它保存图层来源,而不是把远程数据复制进文件。
产出渠道包括:
- 单文件离线 HTML(Project → Export → Export as HTML…),可离线打开、无需服务器。
- 打印布局导出 PNG/PDF/可编辑 SVG,支持图集(Atlas / map series)。
- 故事地图与故事地图的独立 HTML 导出。
- 分享链接(
share.geolibre.app或自托管服务)。 - 样式与图层文件:SLD / QML / Mapbox GL JSON / GeoLibre URL style、图层样式文件、图层列表文件。
1.4.7 数据入口矩阵
| 入口类别 | 代表格式/协议 |
|---|---|
| 本地矢量 | GeoJSON、GeoParquet、GeoPackage、Shapefile、FlatGeobuf、KML/KMZ、GML、CSV、GPX、OSM PBF、DXF/DWG、Excel、File GDB(桌面) |
| 本地栅格 | GeoTIFF/COG、HDF5/NetCDF-4、MBTiles(桌面) |
| 远程矢量 | GeoJSON URL、GeoRSS、OGC API - Features、WFS、ArcGIS FeatureServer |
| 远程栅格/瓦片 | XYZ、WMS、WMTS、ArcGIS MapServer/ImageServer、WCS、COG、PMTiles、Zarr |
| 三维与点云 | 3D Tiles(含鉴权)、I3S、LiDAR(LAS/LAZ/COPC/EPT)、Gaussian splats、glTF/GLB、CZML、KML |
| 数据库 | PostGIS、SQL Server/Azure SQL(桌面)、DuckDB、Apache Iceberg、PGlite/PostGIS |
| 目录与云 | STAC、Planetary Computer、Earth Engine、Overture、Earthdata、GeoLens、S3、Hugging Face、ArcGIS Hub/Socrata/CKAN |
1.4.8 主要产出格式
GeoLibre 的产出并不只有“分享链接”。不同任务对应不同格式,选错格式会让下游多走很多弯路:
| 产出 | 入口 | 适合 |
|---|---|---|
.geolibre 工程 |
Project → Save / Share | 继续编辑、团队交换、版本管理 |
| 单文件 HTML | Project → Export → Export as HTML… | 离线分发、嵌入静态站点、交付客户 |
| PNG / PDF / SVG | Project → Print Layout… | 打印、报告、排版;SVG 可进 Inkscape/Illustrator |
| GeoJSON / GeoParquet / Shapefile / GeoPackage / CSV | 图层操作或属性表导出 | 交给下游 GIS、数据库或数据管道 |
| KML / KMZ | 图层导出 | 回到 Google Earth 生态 |
| PMTiles / COG | Conversion 工具 | 发布为云原生数据 |
| LAS / LAZ / COPC | LiDAR 图层导出 | 点云交付与后续处理 |
| STAC Item | 图层 Metadata 对话框 | 数据编目与目录发布 |
| glTF / OBJ / STL | 三维拉伸图层导出 | 三维建模与打印 |
提示 工程文件是“引用”,导出格式是“数据”。要交付给别人长期保存时,优先导出 GeoParquet/COG 这类自包含数据,再把工程里的图层指向它,而不是把数据塞进工程。
1.5 与主流平台的对比
官方对比文档把对象限定为 QGIS、ArcGIS Pro、ArcGIS Online、CARTO、Felt、kepler.gl,并单独讨论 Google Earth。下面抽取结论性内容,完整表格见仓库 docs/comparison.md。
1.5.1 定位速览
| GeoLibre | QGIS | ArcGIS Pro | ArcGIS Online | CARTO | Felt | kepler.gl | |
|---|---|---|---|---|---|---|---|
| 许可 | MIT | GPL-2.0+ | 专有 | 专有 | 专有 | 专有 | MIT |
| 费用 | 免费 | 免费 | 订阅 | 订阅(分析按额度计费) | 订阅 | 订阅 | 免费 |
| 浏览器 | 完整应用,无需安装 | 无官方浏览器版 | 无 | 是(产品本身就是浏览器应用) | 是 | 是(编辑产品) | 是 |
| 桌面 | Windows/macOS/Linux | Windows/macOS/Linux | 仅 Windows | — | — | — | — |
| 移动 | 原生 Android/iOS | 借助 QField/Mergin Maps | — | 借助 ArcGIS Field Maps | — | Felt Field App | 响应式网页 |
| 工程文件 | .geolibre(开放、有文档) |
.qgs/.qgz |
.aprx(专有) |
托管 Web Map JSON | Map/Workflow JSON | 托管地图,无本地文件 | 可导出的配置 JSON |
| 数据位置 | 你的设备 | 你的设备 | 本地/企业地理数据库 | 厂商云 | 你的云数据仓库 | 厂商云(企业版可单租户) | 浏览器 |
1.5.2 数据与格式
| GeoLibre | QGIS | ArcGIS Pro | |
|---|---|---|---|
| 格式广度 | 宽:DuckDB-WASM Spatial + 自有读取器 | 最广:GDAL/OGR 能读的都能读 | 很宽,含原生 Esri 格式 |
| 云原生矢量 | GeoParquet、FlatGeobuf、PMTiles(HTTP Range) | GeoParquet、FlatGeobuf、PMTiles(较新 GDAL) | 较新的 GeoParquet;无原生 PMTiles |
| 云原生栅格 | COG、Zarr、Cloud-Optimized NetCDF/HDF、kerchunk、MBTiles | COG、Zarr(GDAL 驱动) | COG;Zarr 作为多维栅格类型 |
| STAC | 内置目录浏览器 + STAC Index 发现 | 内置 STAC 连接 | 内置 STAC 连接与 Explore STAC |
| 数据库 | PostGIS、SQL Server(桌面)、DuckDB、Iceberg、PGlite/PostGIS | PostGIS、SpatiaLite、Oracle、SQL Server、SAP HANA | 企业地理数据库(SDE) |
结论很直接:格式广度上 QGIS 仍然第一,GeoLibre 的优势在“云原生格式 + 浏览器内直接读”。 File Geodatabase 这类格式只有桌面版可用。
1.5.3 分析与制图
| 维度 | GeoLibre | QGIS | ArcGIS Pro | CARTO | Felt | kepler.gl |
|---|---|---|---|---|---|---|
| 地理处理 | 1,000+(WASM 浏览器内) | 1,000+(原生/GDAL/GRASS/SAGA) | 最成熟,另有付费扩展 | 200+ Workflows 组件、180+ SQL 函数 | 少量常用工具 | 无工具目录 |
| 分析位置 | 浏览器;桌面可选 sidecar | 本机 | 本机或服务器/门户 | 你的云数据仓库 | 厂商云 | 浏览器 |
| 空间 SQL | DuckDB Spatial、PGlite/PostGIS、Apache Sedona | 虚拟图层、DB Manager | 企业地理数据库 SQL | 原生界面(仓库 SQL) | 连接源上的 SQL | DuckDB SQL |
| 模型/批处理 | Model Builder + 批处理与流水线串联 | 图形模型设计器 | ModelBuilder | Workflows(DAG、调度、版本) | — | — |
| 打印布局 | 打印布局 + 图集,PNG/PDF/SVG | 完整打印 composer + 图集 | 完整 Layout + map series | 高分辨率图片/PDF | 图片/PDF | 图片导出 |
| 样式交换 | 导入/导出 SLD、QML、Mapbox GL JSON | QML、SLD | .lyrx,有限 SLD |
— | — | — |
1.5.4 与 QGIS:互补而非竞争
官方把两者比作“专业相机”与“手机相机”,这个类比值得完整理解:
- QGIS 提供极大的能力、灵活性与控制力,是专业制图、复杂格式与重处理任务的首选。
- GeoLibre 优先考虑可及性、便利性与即时分享,让没有复杂安装环境的用户也能处理空间数据。
- 两者可以组合:在 QGIS 中做数据准备与制图,把结果发布/嵌入为 GeoLibre 工程;GeoLibre 能直接读 QGIS 的
.qgs/.qgz工程与 QML 样式。
1.5.5 与 ArcGIS 家族
- ArcGIS Pro:企业地理数据库编辑与版本化、最深的 3D 与影像工作流、专业工具箱,仍是 Esri 生态内不可替代的部分。GeoLibre 能读
.aprx/.mapx的部分内容(第一幅二维地图的范围、本地矢量与 GeoTIFF、嵌套分组、可见性、简单符号、字段标注、矢量瓦片门户项、缓存地图服务),但不支持 File GDB、场景与网络共享路径。 - ArcGIS Online:重点是托管图层、组织共享与权限,以及 Dashboards/StoryMaps/Field Maps/Experience Builder 这套应用家族。GeoLibre 的差异在于工程可带走、可离线、可自托管。
1.5.6 与 CARTO、Felt、kepler.gl
| 平台 | 它最强的地方 | 什么时候仍应选它 | 什么时候选 GeoLibre |
|---|---|---|---|
| CARTO | 数据已在云仓库、需要把计算下推到仓库、Workflows 与 AI Agents | 数据必须留在 BigQuery/Snowflake 等仓库内,团队依赖仓库 SQL 与调度 | 数据要留在本机、需要离线工程文件、需要开源许可 |
| Felt | 团队协作制图、多人实时编辑与评论、外业 App | 协作制图本身就是全部工作,且能接受托管 | 需要分析深度、投影、打印布局或私有部署 |
| kepler.gl | 大规模点/轨迹的快速漂亮可视化 | 只需要探索性可视化,DuckDB SQL + AI 已够用 | 需要地理处理工具箱、制图产出或可移植工程 |
1.5.7 与 Google Earth / Google Earth Pro
Google Earth 是“虚拟地球”,GeoLibre 是“恰好带地球的 GIS”。两者的重叠只在“看”的瞬间:
| 维度 | GeoLibre | Google Earth(Web/移动) | Google Earth Pro(桌面) |
|---|---|---|---|
| 许可与费用 | MIT,免费 | 专有;免费版 + 按席位付费 | 专有,免费;桌面下载于 2027-06-25 结束 |
| 用途 | 分析、制图、数据工作 | 探索、标注、展示影像 | 同上,外加接近 GIS 的导入与量测 |
| 数据输入 | 矢量/栅格/瓦片/数据库/STAC/OGC/Esri/云原生 | KML/KMZ、GeoJSON、压缩 Shapefile | KML/KMZ、Shapefile、GeoTIFF、影像叠加、CSV 地理编码、GPS/GPX |
| 属性数据 | 属性表、连接、字段计算器、空间 SQL | 地标描述 | 导入文件的基础属性显示 |
| 投影 | 导入时重投影、可检索 EPSG、按工程椭球测量 | 仅 WGS84 地球 | 仅 WGS84 地球 |
| 分析 | 1,000+ 工具、空间 SQL、空间统计、路径与等时圈 | 量测、网页版高程剖面、图层过滤 | 量测、高程剖面、视域 |
| 产出 | 故事地图、打印图集、相机漫游视频、Dashboard、单文件 HTML | Drive 工程 + 演示模式 | Movie Maker 视频、高清图片 |
| 工程文件 | .geolibre,开放、可 diff、本地 |
Drive 托管;可导出 KML | .kmz/.kml |
Google Earth 仍更强的地方是影像档案、历史影像、街景与真实感三维;GeoLibre 更强的是“看之后的一切”:属性、连接、工具箱、SQL、数据驱动符号化、打印布局、重投影与开放工程文件。
1.5.8 选择结论
| 你的处境 | 建议 |
|---|---|
| 想在一个浏览器标签里用真正的 GIS,数据不能离开本机 | GeoLibre |
| 需要 GDAL/OGR 的最广格式覆盖、最深桌面制图、成熟插件 | QGIS |
| 已在 Esri 生态,需要企业地理数据库、版本化、最深 3D/影像 | ArcGIS Pro |
| 重点是托管图层、组织权限与 Esri 应用家族 | ArcGIS Online |
| 数据已在云仓库且必须留在那里 | CARTO |
| 团队协作制图与低摩擦地图制作是全部工作 | Felt |
| 快速漂亮地探索大规模点/轨迹 | kepler.gl |
| 只想看地球、展示地点、标注 | Google Earth |
| 需要接替 Earth Pro 的 KML 归档 + 真 GIS 能力 | GeoLibre |
1.6 技术栈与架构鸟瞰
本节只建立“地图”,细节留给第23章 源码架构与二次开发。
1.6.1 技术栈
| 层 | 技术 | 作用 |
|---|---|---|
| 桌面/移动外壳 | Tauri v2(Rust) | 原生窗口、文件对话框、系统凭据库、协议处理、移动端打包 |
| UI | React 19 + TypeScript + Tailwind CSS | 工作区、面板、对话框、命令面板 |
| 主地图 | MapLibre GL JS 6 | 矢量/栅格渲染、图层同步、交互与控件 |
| 三维叠加 | deck.gl 9 | 点云、3D Tiles、I3S、Gaussian splats 等重叠加图层 |
| 其他引擎 | Mapbox GL JS、CesiumJS、ArcGIS Maps SDK for JavaScript | 可切换的主图或分屏引擎 |
| 本地分析 | DuckDB-WASM Spatial、Turf.js、WebAssembly 工具箱、Pyodide | 矢量读取与 SQL、几何工具、Whitebox、GeoPandas |
| 可选后端 | Python FastAPI sidecar(127.0.0.1:8765) | Whitebox 服务端补充、格式转换、rasterio 栅格、GeoPandas 引擎、SQL Server |
| 状态管理 | Zustand(@geolibre/core) |
唯一事实源:工程、图层、样式、UI 状态 |
| 分发服务 | Cloudflare Workers(viewer/collab/tiles/ai-proxy)、FastAPI 参考服务端 | 分享、协作、瓦片、AI 代理、自托管项目 API |
1.6.2 仓库版图
| 目录 | 内容 |
|---|---|
apps/geolibre-desktop |
React + Tauri 主应用(组件、src-tauri、JupyterLite、静态资源) |
apps/geolibre-mcp-app |
MCP 应用壳 |
packages/core |
Zustand store、领域类型、.geolibre schema(project.ts/types.ts) |
packages/map |
MapLibre 生命周期与图层同步;Mapbox/Cesium/ArcGIS 引擎适配 |
packages/ui |
基础 UI 原语 |
packages/processing |
客户端算法注册表(矢量/栅格/WASM/OBIA/统计/DGGS/视域) |
packages/plugins |
插件接口、内置插件、插件宿主(右侧面板/工具栏菜单/浮动面板) |
packages/embed |
@geolibre/embed 类型化 iframe 客户端 |
packages/collab-core |
协作协议与会话核心 |
backend/geolibre_server |
本地 FastAPI sidecar(可选) |
backend/geolibre_server_api |
多用户项目/身份 API 参考实现(FastAPI + SQLAlchemy + Postgres/SQLite) |
python/ |
geolibre Jupyter anywidget 与 geolibre-mcp |
workers/ |
Cloudflare Workers:viewer、collab、collab-node、tiles、ai-proxy |
extensions/geolibre-chrome |
Chrome 扩展 |
schema/、scripts/、tests/、e2e/、docs/、docker/、packaging/、skills/ |
部署 schema、脚本、测试、文档、容器与打包、智能体技能 |
1.6.3 单向数据流
应用是 store-driven 的,数据流严格单向:
- 数据入口:Add Data、Tauri 文件对话框、文件选择、拖拽或插件发起加载。
- 解析:本地矢量优先由 DuckDB-WASM Spatial 读成 GeoJSON(
INSTALL spatial; LOAD spatial; ST_Read);GeoParquet 走 Parquet reader;zip Shapefile 走 shpjs 并以 DuckDB 兜底;KMZ 客户端解压。 - 入库:调用
addGeoJsonLayer,生成GeoLibreLayer记录写入 Zustand store。 - 订阅:
MapCanvas订阅layers,MapController.syncLayers比较前后差异,协调 MapLibre 的 source/layer 增删改。 - 回写:用户编辑走 store action,再由第 4 步反映到地图。
这条链路有一条硬规则:禁止 UI 直接修改 MapLibre 对象。要让地图变化,就改 store,让同步层去应用。否则撤销/重做、工程保存与协作补丁都会与地图实际状态脱节。
提示 这条规则同样适用于二次开发与插件开发。插件通过宿主 API 注册图层与面板,而不是自己抓
map对象硬改;这样切换渲染引擎时插件才能被正确挂起与恢复。
1.6.4 渲染分层
- MapLibre 主图:矢量、栅格瓦片、COG、PMTiles、WMS/WMTS 等;样式与图层顺序由 store 同步。
- deck.gl 叠加:点云、3D Tiles、I3S、Gaussian splats、Deck.gl Layer builder 图层。
- Cesium 地球:作为主图时替换整个工作区(旧画布卸载);作为分屏时与二维相机同步。
- Mapbox / ArcGIS:各自的原生图层体系,能力按引擎门控。
四种引擎共享同一份工程状态,因此“切换引擎不丢图层”是设计目标,而不是逐引擎重做一遍工程。
1.6.5 可选服务端
| 组件 | 何时需要 | 默认 |
|---|---|---|
| Python sidecar | 需要 rasterio 全量栅格工具、GeoPandas 引擎、格式转换、SQL Server | 桌面按需启动;浏览器可作为同源 /sidecar 代理 |
| 分享服务端 | 需要私有化 Project → Share 与项目画廊 | 默认用 share.geolibre.app;可自托管或设为 off |
| 协作中继 | 需要实时多人编辑 | 默认关闭,需配置 VITE_GEOLIBRE_COLLAB_URL 或运行时变量 |
| AI 代理 Worker | 希望托管 AI 调用而不在浏览器暴露上游 token | 仅托管/自托管部署使用 |
这些组件全部可选。GeoLibre 的核心工作流(加载、样式、属性表、矢量工具、Whitebox、DuckDB SQL、打印、导出)在一个静态 Web 构建里即可完成。
1.6.6 嵌入协议与协作
如果要把 GeoLibre 嵌进自己的系统,需要理解两条“对外接口”:
(1)iframe 的 postMessage 协议。 宿主页面通过版本化协议控制被嵌入的应用,协议 v2 为当前版本,v1 宿主仍受支持。典型命令包括:加载工程、移动相机、高亮要素、打开处理工具、切换与列出图层、应用过滤、读取视口、添加图层、导出 PNG,以及 getLayerFeatures 与 getDrawnFeatures 读回要素。
应用回传的事件:
| 事件 | 含义 |
|---|---|
ready |
应用就绪,可以发命令 |
ack |
命令确认(与请求关联) |
projectLoaded |
工程加载完成 |
selectionChanged |
选择变化 |
viewChanged |
相机/视口变化 |
toolCompleted |
处理工具执行完成 |
serverFileWritten |
服务端文件写入完成 |
featuresChanged |
要素被绘制或编辑(去抖) |
协议默认关闭,除非部署方用 GEOLIBRE_EMBED_ORIGINS 声明可信来源;来源白名单决定“谁能发命令”,部署 capability 决定“哪些命令存在”,两者是独立的两道闸门。
(2)类型化客户端。 geolibre/embed 把上述协议封装成 Promise 风格的 API:connect() 在应用就绪后 resolve,每个命令返回与 ack 关联的 Promise,事件按名称订阅。它的版本随 GeoLibre 发布,避免手写 postMessage 的字符串与竞态。
注意 嵌入 API 不是“远程控制任意部署”的通道。没有配置可信来源时它完全关闭;即使开启,也只对白名单来源开放,并受部署能力约束。
1.7 平台矩阵与分发渠道
1.7.1 平台矩阵
| 平台 | 分发方式 | 自动更新 | 备注 |
|---|---|---|---|
| Web | GitHub Pages 静态站 / 自建静态服务器 / Docker | 随页面刷新 | 无需安装;无本地文件对话框 |
| Windows | Microsoft Store、winget、.msi/-setup.exe、便携 zip |
Store 版自动;GitHub 版需手动 | GitHub 构建未签名,可能触发 SmartScreen |
| macOS | Homebrew Cask、DMG、Mac App Store | Homebrew 可升级;MAS 走商店 | MAS 版是沙盒构建,功能有裁剪 |
| Linux | AUR、COPR、Flatpak(FlatPark)、.deb、.rpm、AppImage |
包管理器/AppImageUpdate | v2.3.0 之后的 AppImage 内嵌更新信息,可用 AppImageUpdate 差分更新 |
| Android | Google Play、按 ABI 签名的 APK | Play 自动;侧载需手动 | Play 与侧载签名不同,不能互相升级 |
| iOS | App Store | 自动 | 无面向最终用户的侧载 .ipa |
| Jupyter | PyPI geolibre、conda-forge |
pip/conda | 内嵌完整应用,双向同步 |
| R | CRAN geolibre |
install.packages |
HTML widget |
| Chrome | Chrome Web Store、release 里的 zip | 商店自动 | 收集页面上的数据链接与服务,在 GeoLibre 中打开 |
| 容器 | ghcr.io/opengeos/geolibre:latest、docker compose |
拉取新镜像 | 可带 sidecar、Basic Auth、Clerk/Auth0 门禁 |
1.7.2 桌面分发细节
| 系统 | 首选 | 备选 | 注意 |
|---|---|---|---|
| Windows | Microsoft Store(签名、自动更新) | winget OpenGeos.GeoLibre、手动安装、便携版 |
便携版依赖 WebView2 Runtime;不自动更新 |
| macOS Apple Silicon | Homebrew Cask brew install --cask geolibre |
DMG(开发者 ID 签名并公证) | 完整功能 |
| macOS Intel | 同上(x64 DMG) |
— | 同上 |
| macOS(沙盒) | Mac App Store | — | 无 sidecar、无 JupyterLab 服务、无 martin/PostGIS、无外部插件安装、无 Earth Engine 登录 |
| Linux | AUR geolibre-bin / COPR / Flatpak |
.deb、.rpm、AppImage |
AppImage 需要 FUSE(libfuse2),否则用 --appimage-extract-and-run |
1.7.3 包与嵌入
| 包/接口 | 用途 |
|---|---|
pip install geolibre |
Jupyter 中嵌入完整应用(anywidget) |
conda install -c conda-forge geolibre |
conda 环境 |
install.packages("geolibre") |
R / RStudio / Quarto / Shiny |
@geolibre/core、@geolibre/map(npm) |
在其他应用中复用 store、工程 schema 与 MapLibre 同步引擎 |
@geolibre/embed(npm) |
类型化 iframe 客户端,按 postMessage 协议控制嵌入页 |
geolibre(PyPI,含 geolibre-mcp 控制台脚本) |
MCP stdio 服务器,供 AI 客户端无头编写工程 |
| Docker 镜像 | 自托管 Web 应用,可启用 sidecar 与访问门禁 |
1.7.4 更新与信任模型
- GitHub Release 的 Windows 构建未签名,首次运行可能触发 SmartScreen;Store 构建已签名并自动更新。
- macOS DMG 自 v1.4.1 起用开发者 ID 签名并经 Apple 公证,正常打开无需绕过 Gatekeeper;更早的版本需要
xattr -dr com.apple.quarantine。 - 外部插件是受信任代码:安装即授予其与应用同源的权限。市场安装会校验 bundle hash,但沙箱隔离不是插件模型的一部分。
- 桌面版把 API key、token 等敏感值放进系统凭据库;网页版只能放在浏览器存储中,这是“同源脚本可读”的已知权衡。
1.7.5 自托管与服务端形态
自托管不是“二选一”,而是按需要叠加:
| 形态 | 提供什么 | 典型场景 |
|---|---|---|
| 静态站点 | 完整 Web 应用,无后端 | 内网发布、与数据同源部署 |
| 单容器(Docker) | 静态站 + nginx + 可选 sidecar | 小团队、演示环境 |
| Compose 组合 | Web + 项目服务端 + 协作中继 + Postgres | 需要 Share、项目画廊、实时协作 |
| 访问门禁 | HTTP Basic Auth、Clerk、Auth0 | 对外但不想公开 |
| 能力策略 | GEOLIBRE_CAPABILITIES 限制六项能力 |
展厅、教室、只读门户 |
| 自有服务端点 | GEOLIBRE_SHARE_URL、GEOLIBRE_COLLAB_URL、GEOLIBRE_GEOLENS_URL |
数据与协作都留在自己基础设施内 |
关键运行时变量(容器启动时读取,改完重启即可生效,无需重建镜像):
| 变量 | 作用 |
|---|---|
GEOLIBRE_SHARE_URL |
指向自托管分享服务;off 移除 Share 与项目画廊 |
GEOLIBRE_COLLAB_URL |
指向协作中继;不设置则协作关闭 |
GEOLIBRE_APP_NAME |
替换工具栏与标签页标题中的 “GeoLibre” |
GEOLIBRE_CAPABILITIES |
逗号分隔的能力列表,或 none |
GEOLIBRE_EMBED_ORIGINS |
允许驱动嵌入应用的来源 |
GEOLIBRE_AUTH_USER / GEOLIBRE_AUTH_PASSWORD |
单组共享凭据的 HTTP Basic Auth |
警告 远程服务必须使用 TLS:应用可能向配置的服务发送凭据。分享/GeoLens 用
https://,协作中继用wss://;不合规的值会让容器启动失败,而不是悄悄回退到公共服务。
1.8 适用与不适用场景
1.8.1 适合的场景
- 需要“打开就能用”的 GIS:教学、培训、评审、客户演示,不想让参与者先装软件。
- 数据不能上传:涉密、受控或客户数据只能留在本机;网页版在浏览器内完成计算。
- 云原生数据工作流:数据在对象存储里以 COG/GeoParquet/PMTiles/Zarr 存放,需要按需读取与快速预览。
- 跨端交付:同一份工程在桌面制作、网页分享、手机查看、Notebook 复现。
- 嵌入到自己的产品:需要开放工程格式、MIT 许可、可版本化的 iframe API 与可自托管部署。
- 浏览器内的中等规模分析:矢量叠加与缓冲、地形/水文、光谱指数、点云分类、空间 SQL。
1.8.2 不适合的场景
官方在对比文档里明确列出了 GeoLibre 不占优的领域:
| 限制 | 说明 | 替代方案 |
|---|---|---|
| 超大本地数据集 | 浏览器内存与 WASM 是硬限制;客户端矢量切片与流式读取能抬高上限,但多 GB 的本地处理仍属桌面 GIS | QGIS、ArcGIS Pro |
| 格式广度 | GDAL/OGR 能读的格式比 DuckDB-WASM Spatial 多;File Geodatabase 只有桌面版支持 | QGIS(GDAL/OGR) |
| 专业工具箱深度 | ArcGIS Pro 的 Spatial Analyst、Geostatistical Analyst、Network Analyst,以及 QGIS 二十年插件积累,覆盖 GeoLibre 没有等价物的流程 | ArcGIS Pro、QGIS |
| 企业数据管理 | 版本化编辑、复制、企业地理数据库运维不在范围内 | ArcGIS Enterprise、PostGIS 工程实践 |
| 成熟度 | GeoLibre 稳定且在活跃开发,但远比 QGIS/ArcGIS 年轻;部分“已发布”能力是近期加入的 | 保守项目可先在 QGIS 中验证流程 |
1.8.3 组合使用的建议
- QGIS 做数据工程,GeoLibre 做交付:在 QGIS 中整理图层与样式,导出 QML/SLD,GeoLibre 导入样式并把工程分享为网页或单文件 HTML。
- ArcGIS Pro 做权威数据,GeoLibre 做外业查看:Pro 维护企业地理数据库,GeoLibre 通过 ArcGIS 服务或导出文件查看与轻量编辑。
- Python/Notebook 做批量实验,GeoLibre 做可视化验证:用
geolibrePython 包在 Notebook 内嵌应用,边算边看。 - 自托管做团队门户:Docker 部署 Web 应用 + 自托管分享/协作服务,数据与应用同源,避免 CORS 与凭据外泄。
1.8.4 从其它工具迁移的检查清单
把既有工作搬到 GeoLibre 之前,按顺序核对这八项,能避免大部分“打开了但不对”的问题:
- 数据格式:列出全部源文件格式,标出 GDAL 专有或 GeoLibre 只读的格式(如 File GDB、CAD、专有影像格式)。
- 坐标系:确认每个图层的 CRS 是否写在数据里;没有
.prj的 Shapefile 需要手工指定。 - 数据规模:估算要素数与栅格尺寸;超过浏览器舒适区间的数据先切分、聚合或转云原生格式。
- 远程服务:检查 WMS/WFS/ArcGIS 服务是否允许跨域、是否使用 token;共享前先看 Share 的就绪检查。
- 符号与标注:确认 QML/SLD 能否覆盖现有样式;不支持的符号需要手工重建。
- 分析流程:把桌面工具箱流程映射到 Whitebox、GeoLibre Toolbox、SQL 或 Model Builder,记录没有等价物的步骤。
- 产出要求:是否需要打印图集、PDF 报告、单文件 HTML 或嵌入页面,提前验证打印布局与导出效果。
- 数据托管:决定本地文件、对象存储还是数据库;本地文件图层在分享时会被明确列出“将缺失”。
1.9 许可、引用、社区与贡献
1.9.1 MIT 许可
GeoLibre 使用 MIT 许可证。对你的实际含义:
| 你可以 | 你必须 | 你不必 |
|---|---|---|
| 商业使用、修改、再分发、私有部署 | 在副本中保留版权与许可声明 | 开源你的修改 |
| 把它嵌入自己的产品 | 不追究作者责任(免责声明) | 支付授权费 |
注意 MIT 只覆盖 GeoLibre 自身代码。它依赖的第三方库、底图服务、影像服务与数据各有自己的许可与条款;商用前请逐一确认,尤其是底图与影像提供商。
1.9.2 引用
GeoLibre 在 Zenodo 上归档,每次发布都会生成 DOI;概念 DOI 始终解析到最新版本。
Wu, Q. (2026). GeoLibre: A lightweight, cloud-native GIS platform for
visualizing, exploring, and analyzing geospatial data. Zenodo.
https://doi.org/10.5281/zenodo.20785400
BibTeX 与 APA 条目可从仓库根的 CITATION.cff 获取,也可用 GitHub 的 “Cite this repository” 按钮直接复制。
1.9.3 社区与支持渠道
| 渠道 | 用途 |
|---|---|
| GitHub Issues | 缺陷报告与功能请求(有 issue 模板) |
| GitHub Releases | 版本说明与安装包 |
| 官方文档 https://geolibre.app | 用户指南、教程、参考文档 |
| 视频教程 | YouTube 上的功能演示与工作流讲解 |
| DeepWiki | 面向代码理解的仓库问答入口 |
| GitHub Sponsors / Buy Me a Coffee | 赞助开发、托管与分发 |
1.9.4 贡献入口
| 你想做的事 | 入口 |
|---|---|
| 报告缺陷 | GitHub Issue(附版本、平台、复现步骤、诊断信息) |
| 修文档 | docs/ 下的 Markdown,遵循贡献指南的文档章节 |
| 写代码 | docs/contributing.md:开发环境、仓库结构、质量门禁 |
| 写插件 | docs/plugin-api.md 与 packages/plugins |
| 翻译 | docs/i18n.md;20 种完整语言目录 |
| 提供数据/示例 | docs/gallery.md、示例工程与开放数据画廊 |
本地质量门禁的核心命令是 npm run ci(lint + 前端构建与测试 + 测试类型检查 + 后端 + Rust 检查)。只想先跑前端时用 npm run ci:frontend。
1.9.5 术语约定
本站教程中的术语按下列约定使用,与界面英文保持一致:
| 术语 | 英文/界面名 | 含义 |
|---|---|---|
| 工程 | project | 一个 .geolibre 文件及其工作区状态 |
| 图层 | layer | 工程中的一份数据渲染单元,含 source、style、visible 等 |
| 渲染引擎 | rendering engine | 绘制地图的底层引擎(MapLibre/Mapbox/Cesium/ArcGIS) |
| 侧车 | sidecar | 本机可选的 Python FastAPI 服务(127.0.0.1:8765) |
| 云原生 | cloud-native | 以 COG/GeoParquet/PMTiles/Zarr 等格式按需读取的数据组织方式 |
| 深链 | deep link | 用 URL 参数直接打开工程、数据或工具 |
| 插件市场 | marketplace / registry | 内置的插件索引与安装入口 |
| 体验级别 | experience level | Beginner / Intermediate / Advanced / Custom |
| 能力 | capability | 部署侧限制的六项操作权限 |
| 体验配置 | UI profile | 控制菜单、数据源、插件可见性的本地配置 |
1.9.6 本教程的章节地图
| 你想学 | 去读 |
|---|---|
| 装起来、跑通第一个地图 | 第02章 安装部署与快速上手 |
| 认清界面、菜单、面板与快捷键 | 第03章 用户界面与工作区 |
| 工程文件、设置与凭据 | 第04章 项目文件与个人设置 |
| 加数据、认格式 | 第05章 数据添加与格式支持 |
| 图层、样式、引擎、坐标 | 第06–09 章 |
| 属性表、SQL、地理处理、建模 | 第10–15 章 |
| 遥感、点云、AI、Python、制图、插件 | 第16–21 章 |
| 自托管、架构、测试、性能 | 第22–25 章 |
| 综合案例 | 第26章 实战案例与综合应用 |
1.10 本章小结
- GeoLibre 是 MIT 许可的免费开源、轻量、云原生 GIS 平台,同一套代码运行在 Web、桌面、Android、iOS 与 Jupyter 中,数据默认留在本地。
- 三条设计承诺是本地优先、云原生格式、跨平台同构;AI 与自动化被约束为“通过应用执行、可审计、可撤销”。
- 版本线从 v0.1(地图查看器)走到 v3.4(OBIA、星载激光、四渲染引擎、完整 ArcGIS 服务编辑),三条主线是数据入口、分析引擎、产出与协作。
- 核心能力可归纳为:1,000+ WASM 工具、四渲染引擎、三种 SQL 引擎、AI/MCP、插件市场、开放工程格式与多种产出渠道。
- 与 QGIS、ArcGIS、CARTO、Felt、kepler.gl、Google Earth 相比,GeoLibre 不追求全面替代,而是用“浏览器内 + 本地数据 + 开放工程”占住一个它们都不完全覆盖的位置。
- 它不适合超大本地数据集、最广格式覆盖、最深专业工具箱与企业地理数据库管理;这些场景应与 QGIS/ArcGIS 组合使用。
- 使用前请确认第三方底图、影像与数据的许可条款;学术引用使用 Zenodo DOI。
1.11 实践练习
- 定位判断:列出你手头三个 GIS 任务,分别判断应使用 GeoLibre、QGIS 还是 ArcGIS Pro,并写出判断依据(数据规模、格式、是否需要企业地理数据库、是否需要离线分享)。
- 版本考古:打开仓库
docs/roadmap.md,找出“Cesium 成为主渲染引擎”与“Mapbox/ArcGIS 加入渲染引擎”分别属于哪个版本,并说明这两步对“一个工程四种引擎”的意义。 - 能力核对:任选一个 Whitebox 工具类别(如 Hydrology),在文档或应用中找到至少三个具体工具名,记录它们的输入、输出与所在菜单路径。
- 对比写作:以“给一个没有 GIS 背景的同事解释为什么不用 Google Earth 做这份工作”为题,写一段 200 字说明,至少引用本章两个对比维度。
- 许可检查:为一个准备商用的地图应用列出需要核对的第三方许可清单(GeoLibre 本体、底图提供商、影像服务、数据源),并说明 MIT 覆盖到哪里、不覆盖到哪里。
- 架构复述:不看本章,用自己的话画出“数据入口 → store → MapCanvas → MapController.syncLayers”的单向数据流,并解释为什么 UI 不能直接改 MapLibre 对象。