ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GeoLibre 免费云原生 GIS 指南:浏览器里零安装出图、分析、分享与嵌入

GeoLibre 免费云原生 GIS 指南:浏览器里零安装出图、分析、分享与嵌入 GeoLibre 免费云原生 GIS 指南浏览器里零安装出图、分析、分享与嵌入【免费下载链接】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/GeoLibreGeoLibre 是一个轻量级、云原生的地理空间平台云原生 GIS它同时跑在浏览器、桌面、移动端和 Jupyter Notebook 里。你能用它加载 GeoParquet、FlatGeobuf、COG 这类远程格式做缓冲、叠加、山体阴影等矢量/栅格分析用 DuckDB 空间 SQL 直接查询并把结果上图最后把项目一键分享成公开链接、或用 iframe 嵌进任意网页。读完这篇你会知道从「打开空白地图」到「拿到一个可分享的 URL」整条链路怎么走以及哪些步骤必须在桌面端完成。能力全景图先把能力摊开成三层进来什么、算什么、出去什么。能力层典型动作用到的格式 / 引擎在哪里跑数据加载远程/本地加载、流式不拷贝、本地转云原生GeoParquet、FlatGeobuf、COG、PMTiles、GeoTIFFDuckDB-WASM 读取浏览器 / 桌面空间分析缓冲、叠加、连接、山体阴影、坡度、坡向、等高线、裁剪Turf.js客户端、GeoPandas侧车 / Pyodide、rasterio侧车、WhiteboxWASM客户端为主等高线/掩膜裁剪需桌面成果交付属性表/SQL 导出 CSV/GeoParquet、分享项目、iframe 嵌入、运行时 API.geolibre.json项目文件、geolibre/embed分享在任意环境嵌入看你自托管 关键前提绝大多数能力浏览器就能跑只有「读本地文件 Python 侧车」相关操作需要桌面应用。5 分钟跑通首张地图浏览器构建版 web.geolibre.app 就是 GeoLibre 本体装都不用装直接开练。下面这条最短路径能给你一张「有样式、能查数据」的地图。开一张图进入在线版你会看到一张底图和一个空的图层面板参见图层面板说明。加一个矢量图层打开「添加数据 → 矢量图层」在输入框里贴上示例数据集地址点「加载」https://data.source.coop/giswqs/opengeos/countries.parquet各国轮廓立刻上图图层面板里多出一个countries图层。所有支持的数据源见添加数据。改样式选中countries展开右侧样式面板调「填充颜色 / 轮廓颜色 / 填充不透明度」。想做分级统计图就把「样式类型」设为Graduated挑一个数值属性如POP_EST或GDP_MD_EST设类别数、配色方案和色带再点「应用样式类型」。参考样式。查数据状态栏点「属性表」展开选countries载入记录可按列排序或在「搜索属性」里找要素选中某行地图会高亮点「探索」能一次看全每个字段的类型、完整度与取值分布。参考属性表。收尾桌面端用「项目 → 保存」写成.geolibre.json任何环境都能「项目 → 分享」拿到公开链接。想省事的读者可以只做到第 3 步就停下——一张带样式的地图已经能用了。按场景深入场景 A把云原生数据搬上图GeoLibre 天生为云原生格式设计矢量是 GeoParquet 和 FlatGeobuf栅格是 COG瓦片是 PMTiles。远程加载 GeoParquet打开「添加数据 → GeoParquet 图层」或矢量图层贴上 URL 加载。大文件有个更省的开关——流式 GeoParquet不拷贝它走 HTTP range 请求「原地查询」不把整个文件搬进内存最适合按空间排序的大远程文件比如 Hilbert 序写出来的那种GeoLibre 自带转换工具就这么写这样只抓相关 row group。远程加载 FlatGeobuf打开「添加数据 → FlatGeobuf 图层」贴.fgbURL 加载。格式允许时它只抓当前视野内的要素。远程加载 COG打开「添加数据 → 栅格图层」贴 COG 的.tifURL。COG 是组织过的常规 GeoTIFF客户端只读它需要的块。加载后同样能在样式面板调亮度、对比度、饱和度、色相。 顺手一招本地 GeoTIFF / COG 可以直接拖到地图上当成栅格图层加进来见添加数据 - 拖放。本地转云原生用「处理 → GeoLibre 工具箱 → 转换」写出云原生文件。这里要分清引擎矢量转 GeoParquet、CSV 转 GeoParquet在浏览器里借 DuckDB-WASM 跑无需安装矢量转 FlatGeobuf、矢量转 PMTiles、栅格转 COG跑在 Python 侧车也就是桌面应用。举个例子把本地 GeoJSON 发成 GeoParquet打开「处理 → GeoLibre 工具箱 → 转换 → 矢量转 GeoParquet」选输入文件和输出路径运行再把产物加回地图验证。想深挖这套读取管线浏览器按需加载在apps/geolibre-desktop/src/lib/duckdb-vector-loader.tsGeoParquet 写入器在apps/geolibre-desktop/src/lib/duckdb-geometry.ts浏览器内 DuckDB 处理管线在apps/geolibre-desktop/src/lib/duckdb-processing.ts。场景 B做空间分析分析工具分矢量和栅格两路入口都在「处理 → GeoLibre 工具箱」下。⚠️ 先分清两个工具箱处理 → 矢量分隔线上方是 Whitebox 目录的矢量类本场景用的是处理 → GeoLibre 工具箱 → 矢量。别点错。矢量缓冲与叠加先至少加一个矢量图层做叠加要两个比如一组点/线 一个裁剪用的多边形。缓冲「处理 → GeoLibre 工具箱 → 矢量 → 缓冲」设输入图层、距离、单位再选引擎客户端Turf.js浏览器内跑零配置但在地理坐标里做缓冲侧车GeoPandas桌面端跑支持投影感知的精确距离PythonPyodide在浏览器里跑和侧车一样的 GeoPandas 代码结果与侧车一致又不用装侧车首次使用会下载一次。大范围要精确公制距离选后两者它们缓冲前会先重投影。叠加有了缓冲结果或任意多边形和第二个图层可跑裁剪保留落在叠加层内、保留输入属性、相交只留重叠、差异减去叠加区、合并两层合一不保留属性、空间连接按空间关系挂属性适用任意几何、属性连接按关键字段一对一挂属性不涉及几何。从「处理 → GeoLibre 工具箱 → 矢量」打开选输入与叠加图层运行即可。栅格从 DEM 出地形产品栅格工具在「处理 → GeoLibre 工具箱 → 栅格」下是「文件进、文件出」所以本地或可访问的栅格最顺。山体阴影选 DEM可设方位角、高度角、z 因子运行后浮雕栅格上图。把它压到别的图层下面把上层混合模式设为正片叠底Multiply让浮雕透过颜色显出来而不是像降透明度那样一起洗淡。坡度 / 坡向从 DEM 算陡峭程度、算最陡坡的罗盘方向。任选其一对 DEM 跑用色带出样式再从控件菜单打开「色条」显示数值标尺。等高线设等高线间距相邻线的高程差跑出矢量等高线图层之后可以像普通矢量一样标注、上样式。裁剪到研究区「按范围裁剪」边界框浏览器可跑或「按掩膜图层裁剪」矢量掩膜仅侧车。⚠️ 引擎归属别记混山体阴影、坡度、坡向都有客户端浏览器引擎浏览器构建零安装能跑等高线和按掩膜裁剪没有客户端引擎需要 rasterio 侧车也就得用桌面应用。每个工具顶部的引擎选择器会显示可用项大栅格或地理坐标系下建议优先侧车。检查与精修结果图层上开属性表看输出、调样式与输入区分开每次运行都记进「处理 → 历史」条目可一键重跑并复制等价的 Python 代码。参考处理工具。场景 C用 SQL 把数据问出来SQL 工作区基于 DuckDB-WASM浏览器和桌面都能用从「处理 → SQL 工作区」打开。查已加载的图层每个已加载的矢量图层就是一张可查询的表。先加载示例国家图层然后SELECT NAME, CONTINENT, GDP_MD_EST FROM countries ORDER BY GDP_MD_EST DESC LIMIT 10;点「运行」看到预估 GDP 最高的十个国家。列名提醒NAME、CONTINENT、POP_EST、GDP_MD_EST是示例countries.parquet采用的 Natural Earth 字段几何列叫geom。换数据集时列名不同可先跑DESCRIBE SELECT * FROM your-file-url探一下。裸 URL 直接查 Parquet不必先加载。工作区会识别FROM子句里的裸 URL自动包上正确的读取器再用 HTTP range 流式读不用整体下载。SELECT COUNT(*) AS n FROM https://data.source.coop/giswqs/opengeos/countries.parquet;这个裸 URL 简写是 SQL 工作区的便利特性标准 DuckDB CLI 里你得显式写read_parquet(https://...)。底层与apps/geolibre-desktop/src/lib/duckdb-vector-loader.ts的按需加载同源防护边界见tests/duckdb-vector-guard.test.ts。用空间函数空间扩展已加载ST_*函数都能用。比如算面积并保留geom以便上图-- 数据在 EPSG:4326面积单位是平方度 -- 要平方千米请用 ST_Area_Spheroid(geom) / 1e6。 SELECT NAME, ST_Area(geom) AS area, geom FROM https://data.source.coop/giswqs/opengeos/countries.parquet WHERE CONTINENT Africa ORDER BY area DESC;结果上图 导出查询返回几何列时点「添加为图层」就能从结果建新图层可命名且一次可加多个。结果图层和任何矢量图层一样支持识别、选择和属性表。导出方面「导出 CSV」和「导出 GeoParquet」两个按钮就在「添加为图层」旁边。小工具用「示例查询」菜单从一个能跑的查询起步用「历史」重跑之前的查询。参考SQL 工作区。场景 D把成果交付出去满意后就能发布成公开链接、或嵌进网页。完整参考见嵌入与分享。先配分享令牌分享会把项目传到 share.geolibre.app用个人 API 令牌。打开「设置 → 环境变量」把令牌贴进Share.GeoLibre API token字段在 share.geolibre.app 的「设置 → API 令牌」下创建。一次配好即可。分享项目调好图层、样式和地图视图后打开「项目 → 分享...」确认标题并上传。GeoLibre 会返回一个指向.geolibre.json的公开 URL形如https://share.geolibre.app/you/my-map.geolibre.json。 分享文件捕获的内容和本地保存完全一致图层、样式、插件状态、地图视图。唯一例外是读你电脑本地文件的图层——分享前对话框会把这些列为「缺失」因为 share.geolibre.app 只存项目文件绝不上传你的数据文件。打开分享的地图任何人把项目 URL 作为url参数传给在线版即可打开https://web.geolibre.app/?urlhttps://share.geolibre.app/you/my-map.geolibre.json嵌进页面用iframe加嵌入参数控制界面外壳一个干净的纯地图嵌入长这样iframe srchttps://web.geolibre.app/?urlhttps://share.geolibre.app/you/my-map.geolibre.jsonamp;maponly titleGeoLibre map width100% height600 styleborder: 0; loadinglazy allowfullscreen; geolocation /iframe可调外观的参数可自由组合maponly隐藏全部外壳只留地图layoutviewer只读地图——图层、视图、控件、底图、搜索/识别都保留会改项目的部分全隐藏layoutcompact留一条细的纯图标工具栏toolbarnone隐藏顶部工具栏留面板和状态栏panelsnone隐藏侧边和底部面板留工具栏themedark加载时强制深色。读者需要开图层、逛数据但不能改 → 用layoutviewer地图只是页面插图、不是交互对象 → 用maponly。完整参数表见嵌入与分享。运行时驱动地图URL 参数只在加载时配置一次。想运行时持续跟地图对话飞到你自己 UI 里点中的那条记录、监听图内操作就装类型化客户端npm install geolibre/embedimport { connect } from geolibre/embed; const map await connect(document.querySelector(iframe), { origin: https://web.geolibre.app, }); map.on(selectionChanged, ({ featureIds }) showRecordFor(featureIds[0])); async function focusField(field) { await map.setView({ bbox: field.bbox }); await map.highlightFeature({ layerId: fields, filter: { parcel_id: field.id }, fit: true }); }⚠️ 注意这段只在「把你的页面源origin加进白名单」的部署上生效——web.geolibre.app 本身没有白名单所以运行时 API 只适用于你自己托管的构建版。白名单、完整命令列表、免依赖的原始postMessage协议见运行时与地图对话。类型化客户端实现就在packages/embed/src契约测试见tests/embed-api.test.ts与tests/embed-client.test.ts。「在哪跑」对照矩阵把散落在各处的「哪些要桌面/侧车」集中成速查表能力浏览器在线版桌面应用Jupyter Notebook加载远程 GeoParquet / FlatGeobuf / COG✅✅—面板脚本控制地图读本地 MBTiles / 本地栅格❌✅—矢量转 GeoParquet、CSV 转 GeoParquet✅DuckDB-WASM✅—矢量转 FlatGeobuf / PMTiles、栅格转 COG❌✅侧车—缓冲Turf / Pyodide / 侧车✅Turf、Pyodide✅含侧车—山体阴影 / 坡度 / 坡向✅客户端引擎✅含侧车—等高线 / 按掩膜裁剪❌✅侧车—打开/保存.geolibre.json项目文件❌✅—SQL 工作区DuckDB-WASM✅✅—分享项目、嵌入✅✅—内置 Jupyter Notebook 面板✅JupyterLite/Pyodide✅真实 JupyterLab即此场景白名单例外Whitebox 地理处理工具箱1000 工具走 WebAssembly浏览器里就能跑不依赖侧车。常见卡点速查现象等高线/按掩膜裁剪点不了。原因这两项没有客户端引擎只能靠 rasterio 侧车。解法切到桌面应用用「侧车」引擎。现象大范围缓冲出来的公里数不对。原因客户端Turf.js在地理坐标里做缓冲大范围会有投影误差。解法改用侧车GeoPandas或PythonPyodide它们缓冲前会先重投影。现象分享后本地图层在别人的链接里不见了。原因share.geolibre.app 只存项目文件不存你的数据文件。解法把这些本地数据托管到可公开访问的位置再用远程 URL 加载。现象裸 URL 查询报读取错误但同一文件手动加载正常。原因SQL 工作区自动包读取器依赖扩展名/内容判断个别远端响应头不规范会干扰。解法先显式「添加数据」加载成表再对表名查询。现象iframe 嵌入后想监听/驱动地图没反应。原因运行时 API 只在配置了 origin 白名单的自托管部署生效公共 web 版没有白名单。解法自托管一份构建版并把你的 origin 加进白名单。现象想让 COG 序列动起来。原因静态图层本身不带时间轴。解法装时间滑块插件对栅格序列做时间动画见数据集成。下一步想看真人实操视频教程 收录了从 1.0 总览、浏览器地理处理到影像地理配准的一系列分章节演示。想要逐项参考用户指南 把界面、图层、样式、属性表、处理、SQL 工作区都拆成了可回链的页面。想顺着代码读实现数据读取看apps/geolibre-desktop/src/lib/duckdb-vector-loader.ts嵌入客户端看packages/embed/srcSQL 防护看tests/sql-query-layer.test.ts。【免费下载链接】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),仅供参考
返回列表