QGIS加载天地图影像并导出GeoTIFF的完整操作教程

发布时间:2026/10/3 15:42:57
QGIS加载天地图影像并导出GeoTIFF的完整操作教程 前阵子接了个乡镇片区的现状调研甲方甩来一组经纬度范围要求三天内出一版带影像底图的专题图。手头没有现成的卫片时间又不够走购买商用影像的流程我直接打开QGIS用天地图影像服务做了底图再把指定区域导出成带坐标的GeoTIFF半天时间连底图带范围图全搞定。这条流程本身已经非常成熟但网上能查到的信息大多零散要么只讲了怎么加载要么只讲了某个插件的用法缺少一条从拿到密钥到把影像真正下载到本地的完整链路。这篇文章就把我实际跑通的方案完整拆一遍从天地图tk密钥获取开始到QGIS里加载天地图影像再到把指定范围的影像导出为带地理坐标的GeoTIFF全部按操作顺序讲中间穿插我自己踩过的坑和验证方法。文章更适合这两类读者一是刚接触QGIS想在项目里快速加一个合规又稳定的影像底图二是已经有基础但一直被在线地图服务只能看不能下载困扰想把指定区域影像真正落到本地做进一步分析的人。1. 为什么拿天地图当QGIS影像源是最省事的方案1.1 天地图影像的真实可用情况天地图是国家地理信息公共服务平台提供的在线地图服务影像覆盖全国来源是国产高分辨率卫星影像和航空影像的拼接成果。和商业遥感影像相比它最大的特点是免费、合规、访问稳定。只要注册开发者拿到tk密钥就能通过标准WMTS或XYZ瓦片服务调用不需要签授权协议也不存在某些个人分享图源那种今天能用、明天失效的问题。更新频率方面天地图影像并不是所有区域都一样新。城市及周边地区通常一两年内会更新一版偏远的乡镇或山区可能稍微旧一些但对于做现状底图、区域判读、资源调查这类日常工作精度和时效完全够用。最高到18到19级左右的瓦片在城镇尺度下能看到房屋轮廓在村里能看清地块边界和道路走向。这已经能满足绝大多数项目初判需求。1.2 QGIS为什么适合做这件事QGIS是开源桌面GIS里综合能力最强的工具之一。加载在线地图这件事它同时支持XYZ Tiles、WMS/WMTS、ArcGIS REST等多种方式而且能把在线影像当成普通栅格图层来处理。这意味着你不是只能看还能利用栅格导出、裁剪、重投影这些功能把服务端的瓦片在本地拼成一张独立文件。这一点很多GIS软件做得不够顺手。有些商业软件的在线地图接入步骤繁琐有些只是把在线地图当作显示底图根本不开放导出栅格的能力。而QGIS里一条右键菜单导出—另存为就能完成范围裁剪和格式转换这也正是我下面要重点展开的部分。1.3 和其它在线影像源对比我在不同项目里试过好几类影像源结论是有条件的场景下优先考虑天地图但并不排除其它免费源作为补充。影像源合规性国内访问速度更新情况QGIS接入难度天地图合规免费需申请tk快城市更新较快偏远略旧低WMTS/XYZ都支持Esri World Imagery免费可访问一般高峰期偏慢全球覆盖部分区域较新低直接加载即可OpenStreetMap免费开源较快主要是道路与POI影像弱低但影像资源有限各种私人分享图源来源不明协议不清不稳定参差不齐不一定URL经常失效结论很直接如果项目在中国境内需要稳定长期可用的底图服务天地图的综合性价比最高。如果研究区域在国外或者需要特别新的高分影像Esri World Imagery也可以作为备选。但这篇文章后面所有操作都以天地图为主线备选图源的操作逻辑基本一致只需要替换服务地址。2. 第一步不是打开QGIS而是找到可用的tk密钥2.1 注册开发者并创建应用很多人在这一步卡住以为QGIS里填个URL就能访问天地图。实际上天地图从很早开始就对每个访问都要求带一个tk参数这个tk相当于你的调用凭证是跟着账号走的。操作流程如下打开天地图官网注册账号。注册完成后登录进入控制台或开发者中心页面找到应用管理或创建应用入口。应用类型一定要选浏览器端因为你是在QGIS这样的桌面环境里直接发起HTTP请求。填好应用名称、应用描述后系统会生成一个tk字符串。这是后续所有服务地址里都必须带上的参数。这里有个容易忽略的点创建应用时如果要求填写域名和IP务必把你自己常用的IP填进去。虽然实际使用中很多场景不校验IP但为了防止天地图调整策略建议按页面提示填规范。另外tk是隐私信息分享工程文件或截图时最好打码避免被别人拿去刷额度。2.2 天地图服务URL结构解析天地图提供两类常用图层影像底图和影像注记。影像底图是纯卫星影像没有道路、地名影像注记是在影像之上叠加的道路、行政边界、地名注记。这两个图层通常配合使用但在下载影像时我们要学会把它们分开处理否则导出的底图上会带一层道路地名标注后期想去掉就麻烦了。服务地址的核心格式如下以Web墨卡托切片方案TILEMATRIXSETw为例https://t0.tianditu.gov.cn/img_w/wmts?SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX{z}TILEROW{y}TILECOL{x}tk这里填你的tk关键参数含义img_w影像底图Web墨卡托投影。如果换成vec_w就是矢量底图ter_w是地形晕渲图。LAYERimg图层名必须和服务路径对应。TILEMATRIXSETw切片矩阵集w表示Web墨卡托。天地图也有基于经纬度的c方案日常使用以w为主。TILEMATRIX{z}TILEROW{y}TILECOL{x}这三个是瓦片坐标通配符QGIS会自动替换。注记层的区别在于路径里的img_w换成cia_w同时LAYERcia。矢量底图对应vec_w/cva_wvec是纯道路底图cva是矢量注记。搞清楚这套命名规则你就能自由组合任意图层。2.3 浏览器里先验证tk有效性强烈建议在打开QGIS之前先用浏览器验证一下tk能不能用这能帮你省掉大量排查时间。把上面URL里的{z}、{y}、{x}替换成固定数字比如https://t0.tianditu.gov.cn/img_w/wmts?SERVICEWMTSREQUESTGetTileVERSION1.0.0LAYERimgSTYLEdefaultTILEMATRIXSETwFORMATtilesTILEMATRIX12TILEROW2048TILECOL2048tk你的tk这里瓦片行列号我是随手写的不同位置对应不同瓦片不一定存在但只要能返回一张图片或者标准瓦片响应就说明tk和服务网络是通的。如果返回的是{error:Invalid Token}这类信息说明tk错了、没复制完整或者应用类型选错。如果页面空白或长时间转圈多数是网络问题换一个子域把t0换成t1、t2、t3再试。这个验证步骤花不了一分钟但能提前把tk失效和QGIS配置错误两类问题分开后面排错会非常明朗。3. QGIS里接入天地图两条路线我都测过3.1 路线AXYZ Tiles连接适合当背景底图QGIS最快速的接入方式是浏览器面板里的XYZ Tiles。操作路径是图层菜单 — 添加图层 — 添加XYZ图层或者在左侧浏览器面板找到XYZ Tiles右键 — 新建连接。名称随意填比如天地图影像URL则填上面那个带通配符的地址。QGIS里XYZ Tiles会自动把{z}、{x}、{y}替换为当前视图范围的瓦片坐标。天地图的切片坐标原点和规则与Google XYZ一致所以不需要做额外的坐标翻转配置。填好URL后点击确定图层面板上会出现一个天地图影像图层双击即可加载到画布。为了显示完整可以再新建一个天地图注记连接URL改成cia_w对应的地址两个图层叠加就是日常看到的完整影像地图效果。XYZ Tiles路线的优点是接入最快、缩放级别自动匹配、画布漫游流畅。缺点是在QGIS里它是一个在线瓦片服务图层右键导出时很多选项不可用不能像普通栅格那样直接裁剪下载。如果你只是当底图看这条路线完全够用。但要做指定区域影像下载我更推荐路线B。3.2 路线BWMTS服务连接为导出影像做准备WMS/WMTS连接在QGIS里是老牌功能它把服务端的图层结构化地暴露出来图层可以被当作真正的栅格来处理。操作方法是图层菜单 — 添加图层 — 添加WMS/WMTS图层点击新建连接URL填https://t0.tianditu.gov.cn/img_w/wmts?tk你的tk连接成功后点获取图层QGIS会读取天地图WMTS服务的能力文档列出该服务下所有可用的图层。这里选择img影像图层然后点击添加。加载后图层面板会出现一个名为img的WMTS图层。需要注意连接URL里我没有写TILEMATRIXSETw而是让QGIS从服务能力文档里自动识别这样更稳妥。如果QGIS弹出来让你选择图层格式或坐标参考优先选tiles或png格式坐标参考系统选择基于Web墨卡托的那一项通常标注为EPSG:3857。WMTS图层加载后右键图层菜单里会出现完整的导出 — 另存为选项这正是我们要的。它能像处理本地栅格一样按指定范围、指定分辨率输出成GeoTIFF瓦片拼接、坐标写入等细节都由QGIS自动完成。3.3 影像层和注记层务必分开加载天地图的影像和注记是独立的WMTS图层这既是天地图的特点也是我们在QGIS里必须养成的习惯。很多第一次接触的人会把img_w和cia_w混在一起或者直接在图层面板里把影像底图默认的天地图影像当一个完整图层来用结果导出的图片里永远带一层甩不掉的地名和路网。我的做法是固定分开建两个连接一个天地图影像底图一个天地图影像注记。需要出纯影像时把注记图层隐藏需要展示信息时再把注记打开。这样两个图层可以分别控制透明度、亮度和下载开关后续做任何栅格处理都不会被注记干扰。4. 下载前的区域框选与坐标设置4.1 用一个临时面图层把目标区域框出来导出影像之前先确定指定区域到底是什么范围。最稳妥的方式不是肉眼在屏幕上框个大概而是建一个真正的矢量面要素把目标区域精确记录下来。后面导出、裁剪、验证都能反复引用这个面。操作步骤是图层菜单 — 创建图层 — 新建临时图层类型选择多边形坐标系选EPSG:3857或与项目一致。创建后选中该图层点击图层工具栏上的切换编辑按钮再点添加多边形要素就可以在影像上沿边界画矩形或多边形了。画的形状不满意可以继续调整使用节点工具选中顶点后拖动或者在编辑状态下选中要素打开属性表在右下角或属性面板里修改顶点坐标。如果画布右下角的坐标显示不是你要的经纬度点击那个坐标显示区域把显示格式切换到EPSG:4326即WGS84经纬度就能方便地对准已知的经纬度范围。框选完成后记得保存临时图层。临时图层虽然叫临时但只要不关闭项目它会一直存在。如果后续项目要复用最好右键图层 — 导出 — 另存为Shapefile或GeoPackage文件。4.2 项目坐标系的正确处理天地图影像底图的服务坐标是CGCS2000框架下的Web墨卡托切片。在日常使用中把QGIS项目坐标系设置为EPSG:3857是最省心的加载、显示、导出都丝滑不容易出现奇怪的变形或错位。有人习惯把项目坐标系设成EPSG:4326纯经纬度或者当地高斯投影这也不是不行QGIS会做实时重投影。但实时重投影在导出大面积影像时可能引入性能开销而且如果你还没完全掌握重投影的机制下载结果偶尔会出现边缘锯齿或轻微位移。我的经验是下载这一步项目CRS就固定用EPSG:3857得到GeoTIFF之后如果需要特定投影坐标再单独用导出 — 另存为重新投影一次这样每一步结果都是可控的。很多影像跟矢量对不上的问题根源并不在天地图而是项目投影设置混乱。天地图坐标本身没有加密偏移和测绘部门提供的CGCS2000/WGS84数据套合度很高。前提是数据来源必须是CGCS2000或WGS84框架而不是某些商业地图App导出的火星坐标数据后者有几百米的系统偏移什么投影设置都救不回来。4.3 提前估算下载影像的大小与分辨率在点下确定之前先做一个简单的数学预估能避免导出到一半内存爆炸。天地图Web墨卡托切片在缩放级别z下全球横向是256 × 2^z个像素。赤道上每像素对应的地面距离大约是40075016.686 / (256 × 2^z) 米/像素比如z17级赤道方向每像素约1.194米z18级约0.597米z19级约0.298米。这只是赤道上的理论值到了北纬40度左右真实地面距离还要乘上cos(纬度)像素覆盖的地面范围更小影像细节更密。下载一片东西方向10公里、南北方向8公里的区域如果按z18级别分辨率导出像素数量大约是(10000/0.597) × (8000/0.457实际值)大约17000 × 17500像素也就是接近2.98亿像素存成24位RGB的GeoTIFF差不多要900MB压缩后小一些但依然是个大文件。反过来如果只是做一张汇报PPT用图用z15或z16的分辨率就足够文件只有几十MB操作起来快得多。这个估算习惯非常关键。我见过不止一次有人想下载整个地级市的19级影像结果QGIS卡死或者磁盘爆满。先用小范围、中低分辨率试导出一次摸清输出文件大小再逐步加大范围是稳妥的节奏。5. 指定区域影像下载三种方式拿结果5.1 方式一WMTS图层右键另存为GeoTIFF这是我最推荐的方式也是把天地图影像真正落地为标准栅格文件的核心操作。前提是你已经按第3章的方式通过WMTS连接加载了img图层并且已经画好了目标范围面。步骤分解在图层树里右键点击img图层选择导出 — 另存为。格式选择GeoTIFF文件名填好输出路径。在范围选项中选择被裁切到范围矢量图层然后选择之前画的区域面图层。这样导出的范围不是屏幕可见区域而是严格等于面要素的范围。分辨率设置是关键水平分辨率和垂直分辨率填你期望的每像素对应的地面距离。如果你要原始瓦片精度根据目标缩放级别计算后填入。想要更快的速度就填大一些比如2米或5米。在创建选项里建议设置COMPRESSDEFLATE这样文件更小TILEDYES可以提高后续读取效率。点击确定QGIS会开始逐瓦片请求天地图服务拼接后输出为本地GeoTIFF。这一过程耗时与区域大小、分辨率、网络速度直接相关。小范围只要几十秒大范围可能要十几分钟。导出期间不要再频繁拖动或缩放地图避免产生大量额外瓦片请求。导出的GeoTIFF会自动写入地理坐标信息后续在QGIS、ArcGIS甚至CAD里都能按正确位置打开。我实际测试下来QGIS输出的坐标信息非常干净几乎不需要手工配准。5.2 方式二打印布局导出高清底图如果你的目标不是做分析而是做一张给领导汇报用的底图或者放进文档、PPT里的高清图片那用打印布局更合适。这种方式优势是版式自由能加图例、比例尺、指北针还能导出300dpi甚至更高精度的PNG。操作流程是项目菜单 — 新建打印布局输入布局名称。左侧工具栏选择添加地图在页面上拖出一个矩形区域。选中该地图对象在右侧属性面板中把范围设置为某个图层范围或者选择跟随画布范围。设置地图比例尺比如1:5000或1:10000。导出前在左侧布局属性中找到导出设置分辨率设置为300dpi。点击导出图片选择PNG或JPEG格式。如果希望这张图在GIS软件里也能带坐标勾选保存世界文件选项。这里有一个我自己常用的细节导出前把注记图层打开道路地名标得清清楚楚出图效果好但我通常会在布局里额外叠加一个范围框和多边形填充样式把项目范围强调出来。这样出来的图就不再是一张影像截图而是规范的工作底图。5.3 方式三QTiles插件批量拼接大面积区域如果需要下载的范围特别大比如一个县城甚至一个地级市而且还要多个缩放级别的影像那就要考虑QTiles工具。它在QGIS处理工具箱中通常叫Raster tiles或Generate raster tiles具体名称随版本略有差异需要先在插件管理器里启用QTiles插件。QTiles的思路和前面两个方式不同它把当前地图画布的内容按瓦片方式渲染并拼接成一张图。你可以设定最小和最大缩放级别它会自动遍历这些级别下的瓦片并输出。优点是适合大批量离线缓存的场景缺点是对图层源有一定要求输出本质上是画布渲染结果分辨率把控不如方式一精细。实际操作中我先在画布里把地图缩放到目标区域再打开QTiles工具设置输出路径和缩放级别范围运行后它会自动生成一张范围覆盖当前视图的大图。这张图能不能带GeoTIFF坐标取决于你是否选择GeoTIFF输出格式我建议输出选GeoTIFF并勾选写入world文件。值得注意的是QTiles对QGIS版本兼容性偶尔会有问题如果你运行报错优先检查插件是否是当前版本可用版本。这个方式我更多是当作备选日常下载指定区域影像方式一已经完全够用。5.4 三种方式怎么选我根据实际使用频率把三种方式放在一起做了一次对比适合不同场景使用。方式输出类型坐标信息清晰度操作复杂程度最佳场景WMTS右键另存为GeoTIFF完整坐标高可控分辨率低分析用标准影像推荐首选打印布局导出PNG/JPEG可选world file高300dpi以上中汇报图、文档插图QTiles批量拼接GeoTIFF/图片取决于输出格式较高中高大面积多级别离线底图缓存日常工作中我更愿意先走方式一因为它符合拿到一份带坐标的栅格数据这个核心目标后续想投影、裁剪、叠加分析都方便。方式二适合终点就是图片的情况。方式三则是在前两者不好处理的超大范围或需要多级缩放时补位。6. 下载影像后的检查与常见坑处理6.1 空白瓦片和tk失效的排查顺序最让人头疼的问题是天地图图层已经加载画布里也能看到一部分影像但导出结果却有大片空白或灰白块。碰到这个情况先不要怀疑天地图服务挂了按下面的顺序排查。第一确认tk还有效。打开浏览器直接访问第2章那个验证URL看返回结果。如果提示token无效去天地图控制台重新生成或检查应用类型配置然后把QGIS里所有连接地址中的旧tk替换掉。第二检查是否过度请求导致临时限流。天地图免费配额有访问频率限制短时间导出几十万个瓦片服务端偶尔会返回空白瓦片。解决办法是缩小导出范围、降低分辨率或者把一个大区域拆成几块分别导出再拼接。第三检查QGIS缓存。菜单设置 — 选项 — 网络里能看到缓存大小设置如果你之前加载过大量瓦片缓存可能占用了几GB磁盘。清空缓存后重新加载图层很多显示异常会自动消失。有一个容易被忽略的操作细节在导出 — 另存为时范围下拉菜单里如果选了地图画布范围而画布范围里恰好包含了当前没有加载影像的空白区域导出结果自然就是空白的。所以一定要用被裁切到范围矢量图层指定面范围确保导出范围完全落在影像覆盖范围内。6.2 影像和矢量数据对不上的处理逻辑下载完GeoTIFF后在QGIS里和已有矢量叠加验证如果发现整体偏移先分清是哪一种偏移。如果偏移量只有几米到十几米而且是整体平移大概率是项目CRS和数据的CRS定义不一致造成的。检查影像图层的坐标系元数据再对比矢量图层的坐标系。比如影像被定义为EPSG:3857矢量是EPSG:4326虽然能叠在一起但显示精度会有差异。把项目CRS统一为EPSG:3857或者把矢量重投影到与影像一致的坐标系再叠加问题通常能解决。如果偏移量是几百米甚至更大那不是投影设置问题而是数据本身的坐标系来源有问题。天地图是CGCS2000/WGS84框架叠加的数据也必须是这个框架。某些地图厂商导出的是火星坐标或其他加密坐标和天地图天然错位。这种情况要么放弃叠加要么把数据重新采用正确坐标系。千万别想着用平移工具硬拗治标不治本。6.3 导出文件过大或QGIS卡死的兜底办法大面积高分辨率导出确实有性能压力。我自己的经验是当输出像素尺寸超过2亿像素时QGIS开始明显吃力超过5亿像素时有崩溃风险。所以导出前先按4.3节的方式估算像素数做好心理预期。如果确实需要导出很大范围我一般采取以下策略之一分块导出把一个大范围面按网格切成小块逐块导出GeoTIFF再用栅格 — 其它 — 合并工具把小块拼成一个大文件。降低分辨率先导出整片区域的低分辨率影像用于整体判读再对重点关注的小片区导出高分辨率影像。导出时先用DEFLATE压缩生成的GeoTIFF体积会小很多后续读取也不慢。另外给QGIS分配更多内存并不像其它软件那么直接因为QGIS本身是32位还是64位进程取决于安装包日常使用务必装64位版本处理大栅格时会稳很多。6.4 下载结果的最终验证习惯每次下载完影像我都会做一个固定动作把导出的GeoTIFF拖回QGIS叠加在天地图在线服务图层上把透明度调到50%左右然后把两个图层来回切换逐区域核对位置是否重合。这个方法能同时检查两件事一是导出的影像在几何位置上是否准确二是天地图服务本层是否有局部瓦片缺失或更新版本不一致的问题。如果导出的影像和在线服务完全重合说明这次下载的几何质量没问题如果边缘有黑边、局部有明显拼接痕迹再针对特定区域重新导出一次。最后在图层属性里看一眼元数据确认坐标系、像素深度和分辨率都符合预期顺手把文件命名改成日期_区域_分辨率_坐标系的格式方便以后查找。这些习惯看起来琐碎但真的能在项目提交阶段帮你省掉大量图怎么不对了的返工时间。我个人在实际使用中最满意的一点是整套流程完全不需要额外的商业影像采购也不需要去网上找那些来路不明的图源。一个天地图tk、一个QGIS、一条WMTS连接就可以源源不断地输出指定区域的遥感影像数据。做完一两次之后你会发现这套流程的难点其实不在操作而在理解坐标系、范围和瓦片分辨率这些基本功基本功扎实了换任何在线影像源都只是换个URL的事。