GeoLibre 云原生 GIS 完整指南:5 分钟出图、不下载查询远程数据、嵌入网页
2026/9/20 19:05:51 网站建设 项目流程

GeoLibre 云原生 GIS 完整指南:5 分钟出图、不下载查询远程数据、嵌入网页

【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibre

GeoLibre 是一个免费开源、轻量级的云原生 GIS 平台,能跑在浏览器、桌面、移动端和 Jupyter Notebook 里,数据默认留你在本地的设备上处理。这篇文章不按官方教程的顺序,而是按真实任务流带你过四件事:出图、接远程数据、做空间分析、发布与嵌入,每部分都标注哪些操作浏览器就能跑、哪些必须装桌面应用。

先出图:从空工作区到一张带样式、可查属性的地图

能做什么:几分钟内把一个数据集加进地图、设成填色或分级统计图、检查属性表,然后保存或生成公开链接。

需要什么:零安装,官方浏览器构建版(web.geolibre.app)就够;想本地落盘保存项目文件则用桌面应用。

操作路径很短:

  • 加数据:在Add Data → Vector Layer面板里粘贴一个矢量 URL。官方多个教程共用一份公开的世界国家 GeoParquet 示例:https://data.source.coop/giswqs/opengeos/countries.parquet,用它把本节全部跑通最省事。
  • 设样式:在图层面板选中该图层,样式面板里调填充颜色、轮廓颜色、填充不透明度。想做分级统计图,把样式类型切到Graduated,选一个数值属性(示例数据里有POP_ESTGDP_MD_EST),定好类别数、配色方案和色带后应用。
  • 查数据:点状态栏的Attribute table展开,选中图层载入记录。可以按列排序、在Search attributes里搜关键词,选中某行地图会高亮对应要素;点Explore一次性看每个字段的类型、完整度和值分布。再打开Identify features,点地图上的任一国家就能在弹窗里看它的属性。
  • 保存或分享:桌面应用用Project → Save写出.geolibre.json项目文件;任何环境都能用Project → Share上传拿公开链接(细节见后文"发布与嵌入"一节)。

易错点:别把示例数据集的列名当成你自己的字段。这份文件的字段是 Natural Earth 的NAMECONTINENTPOP_ESTGDP_MD_EST,几何列叫geom;换一份数据列名就变了,拿不准时先在 SQL 工作区跑一句DESCRIBE SELECT * FROM '你的文件URL'探一下。

完整流程见 docs/tutorials/first-map.md。

接数据:远程文件用 Range 请求原地查询,不用整包下载

能做什么:直接从 URL 加载云原生格式(GeoParquet、FlatGeobuf、COG),按需读取需要的部分。

远程数据集要先下载吗?不需要。云原生格式的要点就是文件本身组织好了,客户端只取需要的片段:

格式类型读取行为
GeoParquet矢量,列式存储可开Stream GeoParquet (no copy),用 HTTP range 请求原地查询;若文件行按空间排序(例如 GeoLibre 自带转换工具写出的 Hilbert 序),只抓取相关 row group
FlatGeobuf矢量,自带空间索引格式允许时只抓取当前视图内的要素
COG栅格,按瓦片组织只读需要的瓦片;加载后可在样式面板调亮度、对比度、饱和度与色相

加载入口都统一在Add Data下(GeoParquet / FlatGeobuf / Raster 图层),填 URL、点加载即可。本地 GeoTIFF 或 COG 也可以直接拖进地图当栅格图层加。

流式读取的实现位于桌面端 DuckDB 加载管线 apps/geolibre-desktop/src/lib/duckdb-vector-loader.ts。

把本地文件变成云原生格式

Processing → GeoLibre Toolbox → Conversion里有转换入口,引擎差异是关键:

  • Vector to GeoParquet、CSV to GeoParquet:DuckDB-WASM 在浏览器里跑,零安装;
  • Vector to FlatGeobuf、Vector to PMTiles、Raster to COG:走 Python 侧车,需要桌面应用。

比如把本地 GeoJSON 发布为 GeoParquet:打开Vector to GeoParquet,选输入文件和输出路径,运行,再把产出的文件加回地图验证即可。

完整流程见 docs/tutorials/cloud-native-data.md。

跑分析:矢量、地形、SQL 三条路

不写代码的缓冲与叠加

能做什么:缓冲、裁剪、相交、差集、合并、空间连接、属性连接,结果自动成为地图上的新图层。

工具都放在Processing → GeoLibre Toolbox → Vector下:选输入图层、选叠加图层、挑引擎、Run。缓冲的引擎选择最容易迷惑,直接列清楚:

引擎运行位置特点
客户端(Turf.js)浏览器零配置,但在地理坐标下做缓冲
侧车(GeoPandas)桌面 Python 侧车先重投影再缓冲,公制距离精确
Python(Pyodide)浏览器跑与侧车相同的 GeoPandas 代码,结果与侧车一致;首次使用下载一次运行时

技巧:大范围、要求公制距离精确时,选两个 GeoPandas 引擎之一——桌面用侧车,浏览器版用 Pyodide。客户端引擎适合快速近似。

叠加类工具一句话说明:Clip保留落在叠加层内部的输入部分并保留输入属性;Intersection只留两块多边形的重叠区;Difference从输入里扣掉叠加层区域;Union合并两层(任何引擎下都不保留属性);Spatial join按空间关系(相交、包含、位于内部)把连接层属性挂到每个输入要素上,任何几何类型都行;Attribute join靠关键字段匹配挂属性、不涉及几何(例如用共享的 FIPS 代码把人口普查统计挂到边界多边形上),一对一、第一个匹配的连接行胜出,可选内连接或左连接。

每次运行都会记进Processing → History,可一键重跑,也能复制等价的 Python 代码。

易错点:Processing 菜单里分隔线上方也有一个 "Vector",那是 Whitebox 工具箱的矢量类别(1000+ 个 WebAssembly 工具);本节的对话框在Processing → GeoLibre Toolbox → Vector下,两者不是重复项。区别见 docs/user-guide/processing.md。

地形产品:从 DEM 派生山体阴影、坡度与等高线

能做什么:从高程栅格(GeoTIFF/COG 格式的 DEM)派生山体阴影、坡度、坡向和等高线。

先加一个 DEM 图层,然后进Processing → GeoLibre Toolbox → Raster

  • Hillshade(山体阴影):可调方位角、高度角、z 因子控制光照,运行后着色浮雕栅格自动上图。把它压到其他图层下面、把上层混合模式设为Multiply,能让浮雕透过颜色显示,效果比降透明度把两层一起洗淡好得多。
  • Slope(坡度)/ Aspect(坡向):分别算陡峭程度和最陡坡的罗盘方向。给输出配一个色带样式,再从控件菜单打开Colorbar显示数值标尺。
  • Contour(等高线):设间距(相邻两条线的高程差),产出是矢量图层,可以像普通矢量数据一样标注和样式化。
  • 裁剪到研究区Clip by extent是边界框、浏览器也能跑;Clip by mask layer是矢量掩膜、仅侧车。

引擎即浏览器/桌面之分:Hillshade、Slope、Aspect 都有Client (browser)引擎,前三项在浏览器里零安装跑完;ContourClip by mask layer没有客户端引擎,需要桌面应用管理的 rasterio Python 侧车。大栅格或地理坐标系下的地形,建议优先用侧车。每个工具顶部的引擎选择器会显示当前可用的选项。

或者写一句 SQL:远程文件直接查

能做什么:SQL 工作区基于 DuckDB-WASM 运行 DuckDB Spatial SQL,ST_*空间函数全部可用,查询结果能直接变成地图图层。浏览器和桌面都支持,从Processing → SQL Workspace进入。

每个已加载的矢量图层就是一张可查询的表。查预估 GDP 前十的国家:

SELECT NAME, CONTINENT, GDP_MD_EST FROM countries ORDER BY GDP_MD_EST DESC LIMIT 10;

更有意思的是可以先不加载文件。工作区会检测FROM子句里的裸 URL,自动包上对应的读取器,再用 range 请求流式读:

SELECT COUNT(*) AS n FROM https://data.source.coop/giswqs/opengeos/countries.parquet;

空间函数自然也可用:算非洲各国面积并把结果上图,记得保留geom列;注意 EPSG:4326 下面积单位是平方度,要平方千米请用ST_Area_Spheroid(geom)再除以 1e6。查询返回几何列时,点Add as layer就能从结果建图层(可一次加多个);结果图层和任何矢量图层一样支持识别、选择和属性表。Export CSVExport GeoParquet按钮就在Add as layer旁边,结果当场就能带走。起步用Sample queries菜单,重跑旧查询用history

工作区所在处理管线实现见 packages/processing,完整参考见 docs/user-guide/sql-workspace.md。

发布与嵌入:一个公开链接,或能被页面驱动的地图

能做什么:项目上传后拿公开 URL,用 iframe 嵌进任意网页,还能从自己的页面在运行时持续控制地图。

发布前先配一次令牌:把你的个人 API 令牌粘到Settings → Environment VariablesShare.GeoLibre API token字段(令牌在share.geolibre.app/settings的 "Settings → API tokens" 下创建,只需设置一次)。

然后Project → Share...:确认标题、上传,GeoLibre 会返回指向.geolibre.json文件的公开 URL,例如https://share.geolibre.app/you/my-map.geolibre.json。分享文件捕获的内容与本地保存完全一致——图层、样式、插件状态、地图视图。例外是读取你电脑本地文件的图层:分享前对话框会列出它们为"缺失",因为分享服务只存项目文件,绝不上传你的数据。

任何人用浏览器版打开分享项目的方式:

https://web.geolibre.app/?url=https://share.geolibre.app/you/my-map.geolibre.json

一行 iframe 嵌入网页

要干净、纯地图的嵌入,加maponly参数:

<iframe src="https://web.geolibre.app/?url=https://share.geolibre.app/you/my-map.geolibre.json&maponly" title="GeoLibre map" width="100%" height="600" style="border: 0;" loading="lazy" allow="fullscreen; geolocation" ></iframe>

外观由 URL 参数控制,参数可自由组合:

参数效果
maponly隐藏所有界面外壳,只留地图——适合"地图只是页面插图"
layout=viewer只读:图层、视图、控件、底图、搜索/识别保留,一切改项目的部分隐藏——适合"读者可探索但不可改"
layout=compact保留一条细的纯图标工具栏
toolbar=none隐藏顶部工具栏,保留面板和状态栏
panels=none隐藏侧边与底部面板,保留工具栏
theme=dark加载时强制深色主题

运行时跟地图对话

URL 参数只在加载时生效一次。想持续"对话"——比如读者在你的 UI 里点了某条记录,地图就飞过去,同时你还想监听他在图内的操作——装类型化客户端:

npm install @geolibre/embed

connect到 iframe 之后,用map.on("selectionChanged", ...)监听选中变化,map.setView({ bbox })飞行到范围,map.highlightFeature({ layerId, filter, fit: true })高亮定位某个要素。注意:这只对被白名单允许你页面 origin 的部署生效——官方浏览器版没有白名单,运行时 API 面向的是你自己托管的构建版。客户端实现见 packages/embed,完整参数表与免依赖的postMessage协议见 docs/user-guide/embedding.md。

环境对照:哪些浏览器能跑、哪些必须桌面端

任务浏览器版桌面应用
加图层、样式、属性表、分享公开链接
远程 GeoParquet / FlatGeobuf / COG 流式加载
SQL 工作区(DuckDB-WASM)
矢量缓冲(Turf.js 或 Pyodide 引擎)
山体阴影、坡度、坡向(客户端引擎)
Whitebox 1000+ 工具(WebAssembly)
打开 / 保存.geolibre.json项目文件
本地 MBTiles、本地栅格读取
等高线、矢量掩膜裁剪、栅格转 COG、矢量转 FlatGeobuf / PMTiles✅(rasterio 侧车)
矢量转 GeoParquet、CSV 转 GeoParquet(DuckDB-WASM)

一句话:分析与浏览器数据大多浏览器能跑,本地文件与侧车工具才需要桌面端。Python 侧车由桌面应用自动管理,见 docs/getting-started.md。

常见问题

哪些步骤必须桌面应用?打开/保存项目文件、读本地 MBTiles 与栅格、rasterio 侧车工具(等高线、矢量掩膜裁剪、栅格转 COG、矢量转 FlatGeobuf / PMTiles 等转换)。Whitebox 工具箱除外——它的 1000+ 工具在浏览器里以 WebAssembly 运行。

大范围缓冲该选哪个引擎?客户端 Turf.js 快但在地理坐标下缓冲;要公制距离精确就选侧车(桌面)或 Pyodide(浏览器),两者都会先重投影。

COG 序列怎么动起来?打开时间滑块插件(Time Slider)对栅格序列做时间动画,见 docs/user-guide/data-integrations.md。

延伸入口

  • 视频教程:官方还维护一组带章节和总结的实操演示,覆盖 1.0 完整走查(浏览器/桌面/Jupyter 三构建、180 GB 数据集流式加载)、浏览器地理处理(1000+ 工具零安装)、免费高分辨率灾害卫星影像、建筑足迹规整化、GeoLens 自托管栈、Model Builder + AI 助手、2026 尼泊尔洪水制图、影像地理配准等。见 docs/tutorials/videos.md。
  • 教程总入口:docs/tutorials/index.md,六篇官方教程(首张地图 / 云原生数据 / 矢量分析 / 地形分析 / 空间 SQL / 分享与嵌入)都在那里。
  • 用户指南:界面、添加数据、样式、属性表、处理工具等参考页在 docs/user-guide/ 下。
  • 核心源码:渲染与交互在 packages/map,处理管线在 packages/processing,桌面壳在 apps/geolibre-desktop。

练习顺序建议:先用浏览器版把"出图 + SQL 查询"跑通,遇到需要本地文件或侧车的步骤再切桌面应用继续。

【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibre

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询