>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

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 地图。

3D Tiles demo in GeoLibre

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

3D map of Manhattan buildings

绘制其他星球的地图

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

View of Mars in GeoLibre

你可以切换到月球、火星、水星、金星或木星的卫星。每个天体都有其自己的椭球体定义,因此距离和面积计算保持准确。

与 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 浏览器中展示空间数据。

相关项目