GeoLibre:如何在浏览器、Jupyter 和桌面端运行 GIS,而无需安装重型软件
如果你曾经处理过空间数据,就会熟悉这种常见场景。需要快速查看一个 GeoJSON 或对 Parquet 文件运行几个空间查询——于是你打开了 QGIS。应用程序加载、导入模块,而对于基本的可视化,你最终会消耗几 GB 的内存和时间来配置图层。
OpenGeos 社区的开发者决定从另一个角度来解决这个问题。他们创建了 GeoLibre——一个用于处理地理空间数据的轻量级平台,可直接在浏览器、Jupyter Notebook 中运行,也可作为独立桌面应用程序使用。
技术架构
该项目的架构结合了多种现代 Web 技术。前端使用 React 和 TypeScript 构建。MapLibre GL JS 和 deck.gl 负责 2D 和 3D 地图渲染。
最有趣的部分发生在数据处理阶段。GeoLibre 使用集成了空间扩展的 DuckDB-WASM,而不是将大型地理空间文件发送到外部服务器。文件在客户端进行处理。你将 GeoJSON 或 Parquet 文件拖入浏览器窗口,本地 DuckDB 就会直接在设备内存中执行 SQL 查询。
桌面和移动版本使用 Tauri v2 构建。与传统的基于 Electron 的解决方案相比,这带来了更紧凑的分发大小和更低的资源消耗。
实际功能
该工具涵盖了地理分析师和开发者的多数日常任务。
浏览器中的本地空间 SQL
DuckDB-WASM 使你无需启动 PostgreSQL 加 PostGIS 就能编写空间 SQL 查询。你可以直接在应用程序界面中执行图层连接、计算缓冲区和聚合数据。
处理 3D 数据和时间尺度
GeoLibre 支持处理 3D Tiles 和体素矢量对象。项目演示材料中的一个典型示例是曼哈顿建筑的 3D 地图。

每栋建筑都按高度进行拉伸,并根据建造年份着色。使用内置的时间滑块,你可以播放动画,观察城市从 1850 年到 2025 年的建设过程。

绘制其他星球的地图
项目创建者没有将自己限制在地球上。该平台包含来自 OpenPlanetaryMap 和 USGS Astrogeology 的底图。

你可以切换到月球、火星、水星、金星或木星的卫星。每个天体都有其自己的椭球体定义,因此距离和面积计算保持准确。
与 Python 和 Jupyter 集成
为数据科学家提供了一个独立的 Python 包 geolibre。它允许你将交互式地图直接嵌入到 Jupyter Notebook 单元格中。你可以将 Pandas 或 GeoPandas DataFrame 传递给该组件,立即获得现成的地图表示。
如何试用
最快的方式是打开网页版 web.geolibre.app。无需注册或安装。
如果你在 Jupyter 中工作,可以使用标准命令安装该包:
pip install geolibre
对于 Conda 安装,请使用 conda-forge 仓库:
conda install -c conda-forge geolibre
对于本地桌面应用程序构建,你需要 Node.js 和 Rust:
git clone https://github.com/opengeos/GeoLibre.git
cd GeoLibre
pnpm install
pnpm tauri dev
项目适用人群
GeoLibre 对需要快速检查和可视化地理空间数据的开发者、研究人员和数据分析师很有帮助。它不能完全替代复杂的制图重型 GIS 工具,但可以处理快速初始处理、Jupyter 中的原型开发,以及直接在 Web 浏览器中展示空间数据。
相关项目