开源 | 用 Rust + Tauri 做了个高性能地图瓦片下载工具,支持行政区划裁剪导出 GeoTIFF

0 阅读1分钟

做 GIS 项目时经常需要底图数据,但市面上的地图下载器要么收费,要么功能残缺,要么依赖一堆运行环境。于是我用 Rust + Tauri 2.0 从零撸了一个,开源免费,安装包仅 ~10MB。

它能做什么?

在地图上框选范围或选择行政区划(省/市/区/全国),选择图源和缩放级别,一键下载并拼接为带地理坐标的 GeoTIFF,可直接在 QGIS / ArcGIS 中打开使用。

image_01.png

image_02.png

核心功能

  • 10+ 内置图源:OSM、ArcGIS 卫星/地形、天地图、Google Maps、高德地图等,支持自定义 XYZ 图源
  • 行政区划选择:省/市/区三级联动 + 全国范围,自动加载行政边界并按多边形裁剪
  • 多任务并行下载:独立进度、暂停/继续、断点续传
  • GeoTIFF 输出:自动写入 EPSG:3857 投影标签,支持 LZW 压缩,大范围自动切换 BigTIFF + 流式写入
  • Mercator 投影裁剪:多边形裁剪使用 Web Mercator 非线性映射,边界精准对齐

技术栈

  • 后端: Rust + Tauri 2.0,reqwest 异步下载,tokio 并发调度
  • 前端: 原生 HTML/CSS/JS + Leaflet 地图
  • 图像处理: image crate 拼接 + 自研流式 BigTIFF 写入器
  • 下载策略: 瓦片乱序防限速、多轮重试递减并发、单瓦片超时隔离

为什么用 Rust + Tauri?

前身是 Python + FastAPI + PyWebView 方案,打包后 200MB+,启动慢,内存占用高。重构为 Tauri 后:

Python 版Rust/Tauri 版
安装包~200MB~10MB
内存占用~300MB~50MB
下载速度受 GIL 限制tokio 真异步
大图导出内存爆炸流式写入

开源地址

GitHub: github.com/gaopengbin/…

欢迎 Star / Issue / PR,也欢迎提需求。