GeoLibre 1.0 发布说明 / 新特性

GeoLibre 1.0 是一个云原生地理信息系统 (GIS) 平台的稳定原型,旨在用于可视化、探索和分析地理空间数据。它提供了一个统一的工作空间,可在桌面和 Web 环境中运行,利用现代 Web 技术栈来实现快速的本地和云原生数据工作流。

核心技术栈

GeoLibre 使用高性能 Web 技术组合构建,以确保响应能力和跨平台兼容性:

  • UI 框架: Tauri, React, 和 TypeScript。
  • 地图引擎: MapLibre GL JS 和 deck.gl。
  • 数据处理: 用于浏览器内 SQL 分析的 DuckDB-WASM Spatial 以及用于矢量处理的 Turf.js。
  • Sidecar 引擎: 可选的 Python sidecars,利用 rasterio 和 GeoPandas 进行高级栅格和矢量处理。

关键特性与能力

数据集成与格式

GeoLibre 1.0 支持广泛的数据源,包括本地文件和远程服务。它支持:

  • 云原生格式: GeoParquet, FlatGeobuf, PMTiles, Zarr, COG (Cloud Optimized GeoTIFF), 和 GeoTIFF。
  • Web 服务: XYZ, WMS, WFS, WMTS, ArcGIS, 和 STAC 服务。
  • 数据库连接: DuckDB 和 PostgreSQL。
  • 3D 数据: LiDAR, Gaussian splats, 和 3D Tiles。
  • 标准格式: MBTiles 和 SHP.zip。

分析与处理工具

GeoLibre 提供基于浏览器和由 sidecar 驱动的分析工具:

  • SQL 工作空间: 用户可以直接在浏览器中针对已加载的图层和远程 URL 运行 DuckDB Spatial SQL,并自动将 URL 包装成匹配的读取器。
  • 矢量工具: 常用的几何操作(buffer, centroids, convex hull, dissolve, bounding box, simplify, clip, intersection, difference, 和 union)由 Turf.js 提供支持,并提供可选的 GeoPandas sidecar 以获得更高性能。
  • 栅格工具: hillshade, slope, aspect, reproject, resample, 和 contouring 等操作通过 rasterio Python sidecar 执行。
  • 转换: 专用菜单允许将数据转换为云原生格式,如 GeoParquet, FlatGeobuf, PMTiles, 和 COG。
  • Whitebox Toolbox: 可通过可选的 Python sidecar 进行批量地理处理。

可扩展性与生态系统

  • 插件市场: GeoLibre 包含一个内置市场,用于安装、更新和删除外部插件。内置插件包括 MapLibre 组件, Overture Maps, LiDAR, GeoAgent, 和 GeoEditor。
  • Python 和 Jupyter 集成: geolibre Python 包允许将应用嵌入到 Jupyter notebooks 中。这在 UI 编辑与 Python API(例如 add_geojson, add_tile_layer, add_cog)之间创建了双向同步。

部署与共享

GeoLibre 提供两种主要的交互方式:

  • 桌面应用: 基于 Tauri 的应用程序提供完整的系统文件访问权限,用于本地 MBTiles, 本地栅格读取, 以及对 .geolibre.json 项目文件的保存/打开操作。
  • 浏览器 Demo: 部署在 GitHub Pages 上的静态网站,完全在客户端运行。它在设计上是私有的,没有分析数据或服务器账户。用户可以通过使用 url 查询参数的公开 .geolibre.json URL 来共享项目。

社区反馈与性能

虽然社区已将该项目视为 ArcGIS Online 或 QGIS 的轻量级替代方案,但一些用户报告了处理大型数据集时的性能问题。一位用户指出,虽然较小的文件(例如 30MB GeoPackage)可以正常工作,但超过 1GB 的文件会导致浏览器挂起并崩溃。

"The web version was giving me IO errors for any file I tried to load in. The desktop version worked a little better... Trying to load some bigger files >1gb kind of just sat on 'Importing data...' for a while, then the screen went blank and I lost all my layers."

其他用户对该技术栈的效率表示赞赏,并指出 MapLibre 和 DuckDB 的组合对于公共数据集具有极高的性能。

Sources