乐于分享
好东西不私藏

再见繁琐GIS工具!我用AI做了个瓦片下载神器,小白也能一键搞定离线地图

再见繁琐GIS工具!我用AI做了个瓦片下载神器,小白也能一键搞定离线地图
大家好,我是GIS开发者——是席木木啊。
这篇先聊大家做离线瓦片时几乎都踩过的坑,再介绍我开源的tile-download-ai-chat(AI瓦片下载工具)——把下载、合并、裁切、切片、预览收成一条流水线,并支持中文自然语言与 Web 工作台。

一、先说说大家都曾遇到的痛点

在日常 GIS 数据处理、地图离线部署、区域影像分析等工作中,相信不少做 GIS、离线地图、前端瓦片加载的朋友,都被同样的难题困扰——地图瓦片下载难、处理繁、收费高,即便有成熟思路,对新手依旧门槛高、上手慢。
之前在做 GIS 相关项目时,我也被「离线瓦片」这条线折腾得头秃。如果你也做过地图下载,大概率走过同一条路——繁琐流程,简直是天崩开局
第一站:百度搜第三方在线下载站。一堆「瓦片下载」「离线地图」结果,点进去先要登录注册,有的还要会员;好不容易开下任务,速度慢、动不动中断,下了一半又得重来。
第二站:换桌面端工具。好不容易找到个看起来专业的客户端,安装包不小,打开一看——免费试用几天、按区域/层级收费、导出要 VIP……学生党、个人研究者很容易被直接劝退。
第三站:再去找开源插件和零散脚本。不甘心付费,就开始扒 QGIS 插件、GitHub 上的小工具、论坛里的「能用就行」方案;环境、依赖、图源 URL、坐标系各搞一套,一通折腾,瓦片总算下下来了——你以为结束了?才刚开始。
从瓦片下载,到合并成大图/GeoTIFF,再到按区划裁剪、离线预览,往往要同时打开下载器、图片工具、GIS 软件、浏览器,来回导文件、切换窗口,半天才能完成一个简单任务。文件夹里tiles、tiles_final(2)满天飞——下载只是第一关,后面的预处理才是真 Boss。
落到开源工具的命令使用和环境配置上,还常卡在:参数记不住(经纬度、层级、并发)、多源规则不一(Key、坐标系、403)、报错只能瞎试。身边不少人是被年费劝退,我是被「下完了还要再折腾三遍」磨没脾气。
当时就一个想法:都 2026 年了,AI 都能写代码了,为啥下个瓦片还要走完整条苦力链?于是我决定自己造轮子,用 AI + Node.js 做了这个支持中文自然语言、带 Web 工作台的开源工具箱。下文展开它怎么对这些痛点「逐个拆弹」。

二、我的解决方案:Tile Download AI Chat

项目已完全开源,地址放在这里,点击可直接访问:
👉https://gitee.com/xi-weidong/tile-download-ai-chat
它不是一个简单的下载脚本,而是一整套面向开发者与 GIS 工作流的瓦片工具箱,基于 Node.js 开发,结构清晰、易扩展,还自带 Cursor Skill,用 Cursor 开发更高效。
核心定位就一句话:用最简单的方式,搞定离线地图瓦片的下载、合并、裁剪、预览、诊断全流程,支持中文自然语言 + Web 可视化工作台。
你甚至可以这样用(一行指令搞定全流程):

node cli.js ai --text "下载北京海淀区高德卫星10-12级瓦片,合并成GeoTIFF并按边界裁剪"

回车,它会依次:解析意图 → 计算区域范围 → 下载瓦片(支持断点续传) → 合并大图 → 裁切 → 输出文件;复杂任务建议先小范围试跑,并核对解析结果(见第六节须知)。

三、项目亮点,每一个都戳中痛点

我直接按实战价值给你列清楚,看完就知道有多香,每一个功能都针对性解决了我们平时踩的坑。
✨ 亮点1:中文自然语言AI驱动,不用背命令、不用记参数
这是我最满意的功能,也是最能降低门槛的设计——AI自动解析你的中文需求,生成对应命令并执行,彻底告别参数噩梦。
以前,下载瓦片需要输入一串复杂命令:

node cli.js download -s "高德-卫星影像" --lat1 39.9 --lon1 116.3 --lat2 39.92 --lon2 116.32 -z1 10 -z2 12 -o ./tiles

现在,只需要说一句中文:

node cli.js ai --text "下载北京高德卫星10-12级瓦片"

AI会自动帮你完成:

  ○ 识别数据源:高德-卫星影像

  ○ 识别范围:北京市(自动计算外包矩形)

  ○ 识别层级:10–12级

  ○ 自动生成参数、创建输出目录、执行下载任务

支持的自然语言任务全覆盖瓦片工作流:

  ○ 下载瓦片(支持经纬度范围、行政区划两种方式)

  ○ 预览离线瓦片(无需额外部署,本地起服务)

  ○ 导出行政区划边界(支持GeoJSON、SHP、GPKG三种格式)

  ○ 裁剪GeoTIFF(按行政区划或自定义矢量文件)

  ○ 栅格切片(将GeoTIFF切成标准XYZ瓦片,供Leaflet使用)

  ○ 下载+合并+裁切一条龙流水线(一条指令完成全流程)

真正做到:会说中文,就会用这款工具,学生党、科研小白也能零门槛上手。
✨ 亮点2:内置28+图源,开箱即用,无需手动配置模板
项目内置了几乎所有常用底图数据源,集中在resources/map_sources.json文件中,无需你自己到处找URL模板,新增、修改图源也极其方便。
已内置的常用图源(经实测验证,部分需配置密钥):

  ○ 高德:卫星影像、矢量路网(无需密钥,可直接使用)

  ○ 腾讯:卫星影像、矢量电子(矢量电子需配置TENCENT_MAP_KEY)

  ○ 天地图:卫星影像、矢量路网、地形晕渲、注记等(需配置TIANDITU_KEY)

  ○ ESRI:全球卫星、街道、地形、海洋底图等(无需密钥,可直接使用)

  ○ 其他:Bing(卫星、道路)、Google(卫星)、OSM(矢量路网)、Mapbox(卫星、街道)等

实测说明:高德、ESRI、Bing等图源可正常完成小范围下载;腾讯卫星影像会出现“瓦片数据过小,可能无效”的警告,建议先做小范围验证;天地图系列需正确配置密钥,否则会出现403报错。
使用时,只需要在命令里写清图源名字,比如:ESRI-全球卫星、天地图-卫星影像,无需额外配置模板。
✨ 亮点3:全流程闭环,下载→合并→裁剪→预览一站式搞定
最爽的是它把一整套瓦片处理工作流串起来了,不用来回切换工具,一个工具搞定所有操作,效率直接翻倍。
完整工作流覆盖:

  a. 下载:支持断点续传、并发控制、请求延时,避免下载中断、触发图源反爬

  b. 任务规划:用plan命令可提前估算瓦片数量、存储空间和下载时间,避免磁盘空间不足

  c. 合并:将下载的小瓦片合并成PNG、JPEG或GeoTIFF格式,支持指定缩放级别

  d. 裁剪:按行政区划或自定义矢量文件裁剪GeoTIFF,精准保留目标区域(需安装gdal-async依赖)

  e. 栅格切片:把合并、裁剪后的GeoTIFF切成标准XYZ瓦片,供离线预览或第三方瓦片引擎使用

  f. 离线预览:本地起Leaflet服务,打开浏览器即可查看已下载的瓦片,无需访问外网CDN

  g. 错误诊断:用diagnose命令输入报错信息(如“Request failed with status code 403”),自动分析失败原因并给出解决方案

举个真实流水线示例(一条指令完成全流程):

node cli.js ai --text "下载西安ESRI卫星12级,合并GeoTIFF并按西安市区划裁剪,再切成8-12级XYZ瓦片"

执行完直接拿到4类文件,无需手动干预:

  ○ 原始瓦片文件(存储在out/tiles/目录下)

  ○ 合并后的完整GeoTIFF大图

  ○ 按西安市区划裁剪后的GeoTIFF

  ○ 可直接预览的离线XYZ瓦片(存储在out/raster_xyz/目录下)

✨ 亮点4:自带Web工作台,可视化操作,不用记命令
不想用命令行?没关系,工具自带Web可视化工作台,点击几下就能完成所有操作,非专业人员也能轻松上手。
启动命令(项目根目录执行):

node cli.js chat-ui

启动后,按终端提示在浏览器打开(默认http://127.0.0.1:8775,占用可加-p 8780),工作台分为三大区域:

  ○ 左侧:图源选择、历史任务列表(可筛选、删除任务)

  ○ 中间:AI对话窗口,输入中文指令即可生成并执行任务

  ○ 右侧:任务状态实时展示、瓦片预览、栅格切片操作

工作台支持功能:

  ○ 一键执行AI解析后的任务,无需手动输入命令

  ○ 查看任务历史、任务统计,追溯操作记录

  ○ 直接预览离线瓦片,无需额外启动预览命令

  ○ 对裁切后的GeoTIFF一键进行栅格切片

  ○ 删除任务并同步清理磁盘文件,避免占用空间

✨ 亮点5:行政区划支持超强,按省市县直接下,不用查经纬度
这是做离线地图、GIS项目的高频需求——不用手动查经纬度、不用计算外包矩形,直接输入省市县名称,就能精准下载对应区域的瓦片。
支持的行政区划定位方式:

  ○ 按省:--admin -province 陕西省

  ○ 按市:--admin -city 西安市

  ○ 按区县:--admin -county 未央区

  ○ 按国标码:--admin -gb 156610100(适合精准定位)

两个高频实用命令(配合下载、裁剪使用):

  ○ admin -bounds:获取指定行政区划的下载用矩形范围(bbox),供download命令使用

  ○ admin -vector:导出指定行政区划的真实面状边界(非矩形),支持GeoJSON、SHP、GPKG格式,用于GIS分析、裁剪等场景

做离线地图演示、项目交付、科研数据预处理,有了这个功能,能节省大量时间。
✨ 亮点6:完整开源、易部署、易扩展,免费无限制

  ○ 基于Node.js开发,pnpm install一键安装所有依赖,无需复杂配置

  ○ 提供\.env\.example模板文件,密钥配置一目了然,复制修改即可使用

  ○ 数据源集中管理,新增、修改图源只需编辑resources/map\_sources\.json,无需改动核心代码

  ○ 代码结构清晰,CLI、AI、Server、工具函数分离,便于二次开发、提交PR共建

  ○ 软件 MIT 开源免费;地图数据须自备合法 Key 并遵守各平台 ToS(见第六节免责声明)

  ○ 自带Cursor Skill,适配Cursor、Claude Code等主流AI代码工具,开发时可智能生成命令、自动排错


四、快速上手,1分钟跑起来

我给你最简流程,复制粘贴就能用,全程不踩坑,新手也能快速验证工具可用性。
1. 克隆代码(需安装Git)

git clone https://gitee.com/xi-weidong/tile-download-ai-chat

cd tile-download-ai-chat

2. 安装依赖
推荐使用pnpm(效率更高),也可使用npm:

pnpm install 或 npm install

注:若安装gdal-async依赖失败,可参考项目内gdal-async依赖安装.md文档配置Node环境(建议使用项目.nvmrc中指定的Node 20版本)。
3. 配置环境(可选,按需配置)
只有使用AI功能、天地图、腾讯、Mapbox等需要密钥的图源时,才需要配置环境变量:

cp .env.example .env

打开.env文件,填写对应密钥(没有可跳过,不影响基础下载功能):
请勿将.env提交到 Git 或发到公开场合;仅在本机保存。
4. 跑一条指令感受下(新手首选)
推荐先下载小范围、低层级瓦片,速度快、体积小,快速验证工具可用性:
①直接用中文下载(北京高德卫星10-12级,小范围)

node cli.js ai --text "下载北京高德卫星10-12级瓦片"

②预览下载结果(默认输出在out/tiles/目录下)

node cli.js preview -o ./out/tiles/高德-卫星影像-10-12/

③启动Web工作台(可视化操作)

node cli.js chat-ui

预览与工作台的访问地址以终端打印为准(预览常见为 8765,工作台为 8775)。

五、SKILL实测记录:重庆市MapBox影像下载

当前项目已经提供了SKILL.md,cursor实测可扫描到。
所以这次测试不是手敲一长串命令,而是在Cursor里加载仓库自带的 Skill “tile-download-cli(路径.cursor/skills/tile-download-cli/)”,用三轮中文对话让 Agent 自动查参数、拆步骤、在本机执行node cli.js …
前置:仓库根目录已pnpm install.env里配好MAPBOX_KEYTIANDITU_KEY及 AI Key;输出目录指定为skill-out/

对话 1:下载 → 合并 GeoTIFF → 按市界裁切
你在 Cursor 里输入(可复制):

/tile-download-cli 帮我下载重庆市范围的 mapbox 影像,层级范围:6~12,输出到 skill-out 子目录下。下载完毕之后,请先合并为 geotiff,然后使用重庆市行政区划矢量数据进行裁剪

Agent 大致会做什么

  ○ 按 Skill 约定先核对 Mapbox 图源名、重庆市 bbox(约 4173 张,z6–12)  

  ○ 导出 chongqing_boundary.geojson(天地图市界面,供裁切用)  

  ○ 执行下载 → merge -z 12 -f geotiff → clip-raster  

  ○ 汇报产物路径与体积

本轮结果:

步骤

结果

下载 Mapbox 卫星 z6–12(市域外包框)

4173 张,0 错误

合并 GeoTIFF

merged_z12.tif ≈ 577 MB

按市界面裁切

merged_z12_chongqing_clipped.tif ≈ 743 MB


对话 2:裁切结果切成离线 XYZ
你在 Cursor 里输入:

/tile-download-cli 把裁剪结果切成离线 XYZ 预览,层级范围为:6~15。输出到 skill-out/clip_xyz_tiles 子目录下

Agent 大致会做什么:

● 对 merged_z12_chongqing_clipped.tif 调用 raster-to-tiles(z6–15,约 25.5 万张,耗时会较长,可能后台跑)  

● 完成后说明 clip_xyz_tiles/ 目录结构

本轮结果:

结果

输出目录

skill-out/clip_xyz_tiles/z/x/y.png

瓦片数量

255069 张,0 失败


对话 3:打开本地预览页
你在 Cursor 里输入:

/tile-download-cli 给出 skill-out/clip_xyz_tiles 子目录下瓦片的预览页面

Agent 大致会做什么:

● 确认切片已完成后执行 preview -o ./skill-out/clip_xyz_tiles  

● 提示浏览器地址(常见为 http://127.0.0.1:8765/,以终端输出为准)

本轮结果:内置 Leaflet 离线浏览 z6–15,页面标题含「Mapbox-卫星影像(裁切 XYZ)」。
数据目录查看
每一步处理过程中的中间数据、metadata.json元数据都会被保存到本地磁盘上,供用户查看。

也可以用GIS软件打开,做二次数据。


流水线一览
对话1  导出市界 → 下载(外包框) → 合并 z12 → 裁切对话2  GeoTIFF → XYZ 切片 (255069 张)对话3  本地 preview 预览
三条体会(给想复现的你)

1. Skill 的价值:区划「下载用矩形、裁切用面」、产物进 skill-out/、Key 不写进代码——由 Skill 约束 Agent,少犯「一句中文下错命令」的错。  

2. 对话可以分轮:不必一次说全;下载合并裁切 → 切片 → 预览,三轮更稳。  

3. 仍须合规与理性预期:须自备 Mapbox/天地图 Key;z13–15 相对 z12 有上采样;大范围高层级占磁盘、耗时长。请遵守各平台 ToS,先小范围试跑。


六、适合谁用?

● 前端/后端开发者,需要做离线瓦片缓存、离线地图加载

● GIS学生/工程师,频繁做瓦片下载、数据预处理、GIS分析

● 做无人系统、离线演示、内网地图项目的团队

● 不想记复杂命令、想用自然语言操作瓦片工具的人

● 需要交付标准化瓦片+GeoTIFF+切片的开发者、科研人员

● 预算有限的学生党、科研党(软件开源免费;地图数据仍须遵守各平台规则)


七、使用须知

1. 工具是什么、不是什么

● 是:运行在你本机的命令行 / 工作台工具,帮你编排下载、合并、裁切、切片、预览等流程。  

● 不是:地图数据提供商,不授予任何第三方瓦片/影像的下载权、商用权或再分发权。  

● 项目以 MIT 许可证 开源(详见仓库 LICENSE),软件可免费使用;不等于 地图数据可免费任意抓取。

2. 地图数据与图源合规(重要)

● 内置 28 套图源 URL 指向 OSM、高德、腾讯、天地图、Mapbox、ESRI、Google、Bing 等第三方服务,须遵守各自服务条款、配额与密钥政策。  

● 需 Key 的图源(如天地图、Mapbox、腾讯矢量等)请使用你自己申请、有权使用的密钥,写入本机 .env,勿提交到 Git、勿写进前端或截图。  

● 禁止利用本工具绕过访问控制、压测他人服务器、未授权大规模/高频抓取,或用于任何违法及违约用途。  

● 建议:先小范围、低 zoom 试跑,确认 Key、网络与磁盘占用后再扩大任务;高 zoom、大范围会显著增加请求量与存储。

3. 行政区划与 AI 能力

● 省市区下载/导边界依赖天地图相关接口与本地 TDT_XZQHBM.csv,须配置 TIANDITU_KEY 并遵守天地图开放平台规范。  

● admin-bounds(外包矩形)与 admin-vector(真实区划面)用途不同,裁切与下载勿混用。  

● 自然语言功能依赖你在 .env 中配置的大模型 API,调用费用由你自行承担;解析结果仅供参考,执行前请核对(工作台可先「解析意图」再运行)。

4. 安全与隐私

● .env 仅保存在本机,已列入 .gitignore;若曾误提交密钥,请立即在各平台轮换 Key 并清理 Git 历史。  

● chat-ui 默认监听 127.0.0.1;若暴露到局域网或公网,请自行设置 TILE_CHAT_RUN_TOKEN 等访问控制。  

● 在线瓦片经本机 BFF 代理转发,不会把 Key 下发到浏览器。

5. 其它使用说明

说明

GeoTIFF 大图

合并/裁切后的单文件 GeoTIFF 建议在 QGIS 等软件中查看;preview 面向 z/x/y 瓦片目录

GDAL 依赖

合并 GeoTIFF、裁切、部分矢量导出需 gdal-async,见仓库 gdal-async依赖安装.md

实测差异

部分图源(如天地图)在 Key 无效或网络限制下可能 403;README 中有小范围实测说明,请以你本机环境为准。

责任边界

本工具按现状提供,不提供明示或默示担保;作者与贡献者不对因使用导致的账号封禁、法律纠纷、数据损失等承担责任。


八、写在最后

这次做tile-download-ai-chat,最深的感受是:AI 正在把以前专业、繁琐、门槛高的「工具链」,变得更容易上手——但数据合规与平台规则仍然要你自己把关。
以前要专业 GIS 工程师半天干的活,现在配好环境、小范围试跑后,用一句中文往往能快很多;软件开源免费,不代表可以忽视地图平台的服务条款。
项目仍在持续迭代,核心能力已完成多轮实测,且由于文章篇幅有限,未能详细介绍所有功能,具体可自行体验,欢迎访问:
仓库地址:https://gitee.com/xi-weidong/tile-download-ai-chat
详细说明以仓库README.mdCLI命令清单.mdSECURITY.md为准。