【免费下载链接】RustGIS
A fast, free and open-source GIS in pure Rust.
RustGIS 是一款用纯 Rust 编写的高性能、免费开源 GIS 系统,而它的官方 Python 绑定rustgis包可以把整个 RustGIS 引擎直接装进 Python 进程:无需安装桌面应用,也无需启动任何服务,就能在脚本和 Jupyter 里打开数据、运行 1000 多种地理处理工具、设置图层样式、渲染地图并保存项目。本文带你从pip install到 Jupyter 交互地图再到 Colab 免安装实战,完整走一遍 RustGIS 的 Python 玩法。
rustgis 包是什么:Rust 引擎直接跑进 Python 进程 🧠
rustgis包的核心是一个编译好的原生模块(基于 maturin 构建)。它的工作方式是**进程内、无头(headless)**的:
- 引擎在你的 Python 进程里运行,数据不出机器;
- 不依赖外部服务或数据库,
pip install即可用; - 保存的
.rgis项目可以被 RustGIS 桌面应用原样打开,双向无缝衔接。
支持Python 3.12+,预编译轮子覆盖 Windows(x64/arm64)、macOS(Intel 与 Apple Silicon)、Linux(x64/arm64,glibc 2.28+)。包内三大核心对象一览:
| 对象 | 作用 | 安装方式 |
|---|---|---|
Session | 内存中的一个 RustGIS 项目:图层、样式、布局、撤销历史 | pip install rustgis |
Map | Jupyter 单元格里的完整 RustGIS 应用,与 Python 双向同步 | pip install "rustgis[jupyter]" |
Layer | 活动地图中的一个图层句柄 | 随Session/Map使用 |
源码入口可以看看:Session 与 Layer 定义、Jupyter 组件 Map。
一键安装 rustgis:pip 命令与可选扩展
最简安装只要一行:
pip install rustgis按需添加「可选扩展(extras)」:
pip install "rustgis[geopandas]" # 支持 GeoDataFrame 进出 pip install "rustgis[jupyter]" # 启用 Jupyter 里的交互式应用 pip install "rustgis[qt]" # 在 PySide6/PyQt6 应用中嵌入地图小提醒:geopandas扩展依赖pyogrio,目前还没有 Windows arm64 的轮子;如果只需要 Jupyter 能力,先装jupyter扩展即可。
5 分钟建立第一个会话:打开示例数据并出图
Session(sample=True)会直接打开内置的 World Atlas 示例项目,包含 Cities、Rivers、Lakes、Countries 四个图层。一个最小完整流程如下:
import rustgis s = rustgis.Session(sample=True) # 打开 World Atlas 示例 buffers = s.run_tool("buffer", input=s["Cities"], distance=100) s["Countries"].style("graduated", field="pop_est") s.zoom_to(buffers) s.to_png("map.png", width=1600, height=900) # 渲染并导出 PNG s.save("atlas.rgis") # 保存为桌面应用可直接打开的项目几个值得记住的细节:
s.run_tool("buffer", ...)运行缓冲分析并返回新图层对象,可以继续链式调用样式方法;style("graduated", field="pop_est")设置分级色彩符号化,另有"single"、"unique"、"proportional"等类型;s.to_png()即使写了文件也会返回 PNG 字节,不传路径则只保留在内存中;- 在 Jupyter 里,把
Session放在单元格最后一行,会直接把当前地图渲染成图片显示出来。
图层操作与 GeoDataFrame 数据互操作
Layer对象提供常用的图层属性与方法,取图层只需s["Cities"](名称不区分大小写):
cities = s["Cities"] cities.count, cities.type, cities.fields, cities.bounds # 要素数、类型、字段、范围 cities.select("pop_max > 10000000") # SQL where 子句选择要素 cities.filter("pop_max > 1000000") # 定义查询;传 None 清除 cities.visible = False # 隐藏图层 cities.rename("Towns") s.undo() # 撤销改名与 Python 数据生态的互操作是rustgis的强项:
gdf = cities.to_geopandas(selected=True) # 只导出选中要素,EPSG:4326 big = s.add_geopandas(gdf, name="Big cities") # 把 GeoDataFrame 加回为图层 big.to_file("big-cities.gpkg") # 导出 GeoPackage(或 .geojson/.csv/.shp/.parquet 等)to_geojson()返回 FeatureCollection 字典,to_geopandas()返回 EPSG:4326 的 GeoDataFrame;add_data()支持应用能读的所有格式:GeoJSON、CSV、Shapefile、GeoPackage、GeoParquet、FlatGeobuf、KML/KMZ、GPX、GeoTIFF 等;add_geojson()还能接受任何带__geo_interface__的对象(Shapely 几何、GeoSeries 都行)。
调用 1000+ 地理处理工具:run_tool 与命令清单
RustGIS 的每个操作都是一条带 id 的命令——与桌面版的功能区、命令行和 AI 助手用的是同一套 id。Python 里随时可以自省:
s.commands() # 所有命令及参数 s.tools() # 所有地理处理工具 s.describe("buffer")["params"] # 查看 buffer 工具参数 s.run("labels.field", layer="Cities", field="name") s.run("map.goToXY", {"lon": 114.1, "lat": 22.4, "scale": 2_000_000})常用视图命令还有便捷方法:set_center(lon, lat, scale=...)、zoom_to(...)、set_basemap("paper")、add_tiles(...)添加网络瓦片底图。命令执行期间不占用 Python 全局解释器锁(GIL),其他线程可以继续工作,适合放进多线程流水线。
Jupyter 交互地图:rustgis.Map 双向同步实战 ✨
rustgis.Map是本文最亮眼的功能:它在 Jupyter 单元格里直接显示 RustGIS 应用本身(功能区、侧栏、地图),并基于 anywidget 实现 Python 与界面之间的双向同步:
m = rustgis.Map(sample=True) # 单元格下方出现完整的 RustGIS 应用 m然后两边互相同步:
m.add_geojson("sites.geojson", name="Sites") # Python 添加 → 出现在应用里 m["Sites"].style("unique", field="name") m.set_center(110, 25, scale=30_000_000) m.info()["center"] # 你在应用里平移缩放 → Python 读得回来 m.run_in_app("ui.language", code="de") # 仅应用可用的 ui.* 命令Map拥有Session的全部方法与能力(run、run_tool、m["Sites"]、to_png……),建议通过m而非m.session做修改,这样变更才会同步到应用;- 应用运行在浏览器里,需要 WebGPU 或 WebGL2,且 Notebook 需联网;
- 数据通过浏览器
postMessage传输,不出你的机器,不经过任何服务器。
官方示例笔记本完整演示了这套流程,可直接参考:getting-started.ipynb。
Colab 免安装实战:零配置跑通示例笔记本
不想搭本地环境?RustGIS 的 Python 示例支持在 Google Colab 里直接运行:
- 打开仓库文档页 docs/python.md 或 apps/rustgis-python/README.md,页面顶部有Open in Colab徽章,点击即可在 Colab 中打开示例笔记本;
- 第一个单元格就是
%pip install -q "rustgis[jupyter,geopandas]",后续单元格依次演示:打开示例会话、跑 buffer 工具、分级色彩渲染、读取 GeoDataFrame、嵌入交互式Map、保存.rgis项目并导出 PNG; - 全程无需 clone 仓库、无需本地编译,几分钟内即可在云端体验完整工作流。
提示:Colab 运行的是示例数据流程;如果你有私有 GeoPackage 或 Shapefile,可在笔记本里把数据上传到当前目录后,用
s.add_data()加载,体验与本地完全一致。
保存项目与导出成果:无缝衔接桌面版
Python 里做的一切都能沉淀为标准成果物:
s.save("atlas.rgis") # 桌面应用、Web 应用原样打开 s.to_png("atlas.png", width=1600, height=900) # 渲染当前视图 cities.to_file("cities.geojson") # 按扩展名选择导出格式.rgis项目里连「在应用里做的编辑」都会被一起保存;- 已有项目可以直接用
Session(project="atlas.rgis")或s.open(...)打开续做; - 想复用桌面应用保存的数据库连接?
Session(use_saved_secrets=True)会按需从系统钥匙串读取凭据(默认关闭,脚本和 CI 保持零侵入)。
上手路径总结
| 场景 | 推荐做法 |
|---|---|
| 自动化脚本、CI | Session+run_tool+to_png/save |
| 数据分析 | to_geopandas()出、add_geopandas()进 |
| 教学、演示、交互探索 | rustgis.Map+ Jupyter |
| 零基础快速体验 | Colab 一键运行官方示例笔记本 |
| 桌面工具集成 | rustgis.qt.MapWidget嵌入 PySide6/PyQt6 |
延伸阅读:Python 官方指南、包 README、Py 包测试用例(阅读测试是理解 API 最快的方式)。
现在,pip install rustgis然后打开一个 Notebook——一个完整的 GIS 工作台就在你的 Python 环境里了。🗺️
【免费下载链接】RustGIS
A fast, free and open-source GIS in pure Rust.
相关推荐
CANN/ops-sparse编译与运行样例
编译与运行样例 前提说明 请确保基础环境已搭建完成,包括 NPU 驱动与固件、CANN 软件包(toolkit + ops)等。环境搭建请参考 环境部署 htt
算子库Ascend高性能计算纯真IP库qqwry.dat常见问题解答:从更新失败到数据准确性
纯真IP库qqwry.dat常见问题解答:从更新失败到数据准确性 纯真IP库(qqwry.dat)作为一款广泛使用的IP地址定位数据库,每天自动更新的特性使其成
freeCodeCamp Build a Graphing Calculator 项目实战:用 Python 与 Google Colab 构建可交互绘图计算器
freeCodeCamp Build a Graphing Calculator 项目实战:用 Python 与 Google Colab 构建可交互绘图计算器
教育前端后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考