🌏 开源地图下载神器:卫星影像、矢量数据、SHP裁剪一站式搞定
做 GIS 开发或地图可视化的朋友,经常会遇到一个头疼的问题:如何获取高质量的底图数据?
市面上的下载器要么收费昂贵,要么功能单一(只能下瓦片不能拼接,或者不支持矢量数据)。今天给大家介绍一个我最近开发的开源工具 —— TIF 地图下载工具 (Map Downloader)。
它不仅支持 Google、天地图等多种图源的瓦片下载与自动拼接,最近还更新了自定义 Shapefile/GeoJSON 边界裁剪功能,真正实现了“指哪打哪”。
✨ 核心亮点
- 多源支持:Google 卫星/混合图、天地图(支持自定义 Token)、ArcGIS、OSM 等。
- 自定义边界裁剪:
- 支持手绘多边形。
- 支持选择行政区划(省/市/县)。
- [新] 支持上传 Shapefile (.shp) 或 GeoJSON 文件,自动识别投影坐标并转换为 WGS84,完美贴合。
- 矢量数据获取:一键下载 OSM 道路、建筑、水系数据,或获取行政区划边界 GeoJSON。
- 所见即所得:基于 PyWebView 的桌面端体验,直接保存文件到本地,无需繁琐配置。
- 完全开源:基于 Python + FastAPI + Leaflet 构建。
🛠️ 界面一览
最新版本采用了清晰的三段式布局,操作逻辑非常顺畅:
- 区域选择:确定你要下载哪里的数据。
- 图源设置:选择你要下载什么样子的地图。
- 下载设置:配置格式、缩放级别,执行下载。
📖 使用教程
第一步:选择区域 (Range Selection)
这是最关键的一步。工具提供了三种方式来定义感兴趣区域:
- 地名搜索:输入“朝阳区”,点击 Go,地图会自动定位。
- 行政区划:在下拉框中选择省、市、区县,点击“加载边界”,地图上会直接显示该区域的轮廓。
- 自定义上传 [强力推荐]:
- 点击“📁 上传”按钮。
- Shapefile 用户:在文件选择框中,按住
Ctrl键同时选中.shp,.shx,.dbf三个文件(支持中文路径和 GBK 编码,支持投影坐标系自动转换)。 - GeoJSON 用户:直接选择
.json或.geojson文件。 - 上传后,软件会自动将地图缩放到该范围,并用红色虚线框出边界。
第二步:配置图源 (Map Source)
在“图源设置”面板中选择你需要的底图:
- Google 卫星:清晰度最高,但需要科学上网(软件内置了代理设置功能)。
- 天地图:国内数据最准,带有注记。
- 小技巧:如果默认的 Key 访问受限,你可以在下方的输入框中填入自己申请的天地图 Token 并保存。
- ArcGIS / Carto:更多风格选择。
第三步:下载数据 (Download)
在“下载设置”面板中:
-
影像下载:
- 拖动滑块选择 缩放级别 (Zoom)。级别越大,像素越高,文件也越大(软件支持百万级瓦片的大图下载)。
- 勾选 “按边界裁剪”:导出后的 TIF/PNG 图片将自动把边界外的区域变为透明(NoData),非常适合制作精美的局部地图。
- 点击“📥 下载影像”,选择保存位置即可。
-
矢量下载:
- 如果你需要路网或建筑轮廓,可以在下方选择“OSM 要素类型”(如 Roads, Buildings),直接下载裁剪好的矢量数据。
⚙️ 技术揭秘
这个工具是完全基于 Python 生态构建的,对于想学习全栈开发的朋友也是个不错的案例:
- 后端:使用 FastAPI 提供高性能的异步 API,处理瓦片下载、坐标转换 (PyProj) 和图像拼接 (Pillow/Rasterio)。
- 前端:使用 Leaflet.js 实现地图交互,CSS 采用了现代化的 Glassmorphism 风格。
- 桌面封装:使用 PyWebView 将 Web 应用封装为原生桌面程序,通过 PyInstaller 打包成独立的
.exe文件。
📥 获取方式
项目已在 GitHub 开源,欢迎 Star 和 Fork!
- GitHub 地址: github.com/gaopengbin/…
- 下载地址: Release v1.0.0
如果你在使用中遇到问题,或者有新的功能建议,欢迎在评论区留言!