TIF影像下载工具-支持天地图、谷歌等

324 阅读4分钟

🌏 开源地图下载神器:卫星影像、矢量数据、SHP裁剪一站式搞定

做 GIS 开发或地图可视化的朋友,经常会遇到一个头疼的问题:如何获取高质量的底图数据?

市面上的下载器要么收费昂贵,要么功能单一(只能下瓦片不能拼接,或者不支持矢量数据)。今天给大家介绍一个我最近开发的开源工具 —— TIF 地图下载工具 (Map Downloader)

它不仅支持 Google、天地图等多种图源的瓦片下载与自动拼接,最近还更新了自定义 Shapefile/GeoJSON 边界裁剪功能,真正实现了“指哪打哪”。


✨ 核心亮点

  1. 多源支持:Google 卫星/混合图、天地图(支持自定义 Token)、ArcGIS、OSM 等。
  2. 自定义边界裁剪
    • 支持手绘多边形。
    • 支持选择行政区划(省/市/县)。
    • [新] 支持上传 Shapefile (.shp)GeoJSON 文件,自动识别投影坐标并转换为 WGS84,完美贴合。
  3. 矢量数据获取:一键下载 OSM 道路、建筑、水系数据,或获取行政区划边界 GeoJSON。
  4. 所见即所得:基于 PyWebView 的桌面端体验,直接保存文件到本地,无需繁琐配置。
  5. 完全开源:基于 Python + FastAPI + Leaflet 构建。

🛠️ 界面一览

最新版本采用了清晰的三段式布局,操作逻辑非常顺畅:

  1. 区域选择:确定你要下载哪里的数据。
  2. 图源设置:选择你要下载什么样子的地图。
  3. 下载设置:配置格式、缩放级别,执行下载。

image.png

📖 使用教程

第一步:选择区域 (Range Selection)

这是最关键的一步。工具提供了三种方式来定义感兴趣区域:

  1. 地名搜索:输入“朝阳区”,点击 Go,地图会自动定位。
  2. 行政区划:在下拉框中选择省、市、区县,点击“加载边界”,地图上会直接显示该区域的轮廓。
  3. 自定义上传 [强力推荐]
    • 点击“📁 上传”按钮。
    • Shapefile 用户:在文件选择框中,按住 Ctrl 键同时选中 .shp, .shx, .dbf 三个文件(支持中文路径和 GBK 编码,支持投影坐标系自动转换)。
    • GeoJSON 用户:直接选择 .json.geojson 文件。
    • 上传后,软件会自动将地图缩放到该范围,并用红色虚线框出边界。

image-1.png

第二步:配置图源 (Map Source)

在“图源设置”面板中选择你需要的底图:

  • Google 卫星:清晰度最高,但需要科学上网(软件内置了代理设置功能)。
  • 天地图:国内数据最准,带有注记。
    • 小技巧:如果默认的 Key 访问受限,你可以在下方的输入框中填入自己申请的天地图 Token 并保存。
  • ArcGIS / Carto:更多风格选择。

第三步:下载数据 (Download)

在“下载设置”面板中:

  1. 影像下载

    • 拖动滑块选择 缩放级别 (Zoom)。级别越大,像素越高,文件也越大(软件支持百万级瓦片的大图下载)。
    • 勾选 “按边界裁剪”:导出后的 TIF/PNG 图片将自动把边界外的区域变为透明(NoData),非常适合制作精美的局部地图。
    • 点击“📥 下载影像”,选择保存位置即可。
  2. 矢量下载

    • 如果你需要路网或建筑轮廓,可以在下方选择“OSM 要素类型”(如 Roads, Buildings),直接下载裁剪好的矢量数据。

image-2.png


⚙️ 技术揭秘

这个工具是完全基于 Python 生态构建的,对于想学习全栈开发的朋友也是个不错的案例:

  • 后端:使用 FastAPI 提供高性能的异步 API,处理瓦片下载、坐标转换 (PyProj) 和图像拼接 (Pillow/Rasterio)。
  • 前端:使用 Leaflet.js 实现地图交互,CSS 采用了现代化的 Glassmorphism 风格。
  • 桌面封装:使用 PyWebView 将 Web 应用封装为原生桌面程序,通过 PyInstaller 打包成独立的 .exe 文件。

📥 获取方式

项目已在 GitHub 开源,欢迎 Star 和 Fork!

如果你在使用中遇到问题,或者有新的功能建议,欢迎在评论区留言!