资讯详情

资讯详情

QGIS在线图源全攻略:XYZ、WMTS与坐标系避坑指南

干 GIS 的应该都有同感打开 QGIS 之后第一件事就是找一张能用的底图没有底图矢量点线面就像往黑板上丢了一堆散装数字谁也别想定位。在线图源恰恰是解决这个问题的捷径QGIS 里加一个稳定图源几秒钟就能把全球俯瞰、卫星影像、地形等高线全部铺到底图上。这篇文章就是我多年攒下来的 QGIS 可添加在线图源汇总所有地址都是实际用过或者验证过的主要面向测绘、规划、地理信息、遥感这些日常离不开 QGIS 的人也适合刚入门的新手照着操作。和一般收藏夹里只丢一串 URL 的清单不同我会把协议类型、坐标系、需要不需要密钥、常见故障全都说清楚。毕竟在 QGIS 里添加在线图源这件事真正的坑从来不是“地址哪找”而是“地址填进去之后地图为什么是歪的、是白的、是加载不出来的”。这个清单我会像维护工具库一样持续更新后面每遇到一个稳定好用的图源就补一次所以建议直接收藏。1. 动手之前先理清楚XYZ、WMTS、WMS 到底该选哪个1.1 三种协议的本质区别很多人在 QGIS 里加图源第一步就被“XYZ Tiles”“WMS/WMTS”这两个入口搞懵了。其实它们的关系并不复杂我用大白话捋一遍。XYZ 也就是常说的“切片地图服务”是现在最主流的底图协议。它的原理是把地图按缩放级别切成一张张固定大小的正方形图片每个瓦片有一个唯一的编号也就是 URL 里的{z}/{x}/{y}三个参数。z 代表缩放级别x 代表列号y 代表行号。OSMOpenStreetMap、Esri 影像底图这些基本都是 XYZ特点是响应快、加载流畅因为它只需要一次请求一张小图不需要服务器端临时渲染。TMS 和 XYZ 几乎是一个东西唯一区别是行号方向相反。XYZ 的行号 y 从北到南增长TMS 的 y 从南到北增长所以同一个瓦片在两种协议里的编号会差一个2^z - 1的换算。QGIS 里处理这种图源很简单把 URL 里的{y}改成{-y}就行也可以在图源连接的高级设置里找类似“TMS 服务”的开关。WMTS 属于标准化切片服务和 XYZ 的差别在于它多了一层“服务描述”。你可以通过一个服务地址拿到这个服务提供的所有图层、瓦片矩阵集、坐标系、格式等信息然后按需选择。天地图、NASA GIBS 这类官方服务机构基本都是 WMTS。它比 XYZ 规范但配置起来略繁琐因为要先连接服务器、加载能力文档再勾选图层。WMS 则是“动态地图服务”它不按瓦片切而是根据你当前窗口的范围实时渲染一张大图返回给你。好处是你可以自定义要哪些图层、什么样式坏处是每一次平移缩放都要服务端重新画一遍所以放大到深级别时会明显变慢。WMS 比较适合叠加某几个专题图层不适合当底图连续浏览。一句话总结底图优先用 XYZ 或 WMTS矢量专题叠加再考虑 WMS。后面的清单里我会标注每个图源属于哪种类型方便你直接对号入座。1.2 坐标系问题必须提前说不然瓦片花了才回头就晚了在 QGIS 里加在线图源最容易翻车的不是地址填错而是坐标系不一致。在线瓦片绝大多数是 Web 墨卡托投影也就是 EPSG:3857但你手里的矢量数据可能是 EPSG:4326 经纬度也可能是某地方坐标系叠在一起自然就偏了。国内网络地图的坐标系还要再分几个流派。国际通用的 OSM、Esri 用的是 WGS84 体系在 Web 墨卡托投影下就是 EPSG:3857。天地图虽然也是 CGCS2000 框架但它在 Web 墨卡托下的瓦片和 WGS84 的世界范围基本重合误差在厘米到分米级别小比例尺下完全可以当作同一套坐标系使用。高德、腾讯这类互联网地图用的是 GCJ-02俗称“火星坐标系”是在 WGS84 基础上做了一套非线性偏移北京城区范围内偏移量大概在几十米到几百米不等。百度更特殊用的是 BD-09等于在 GCJ-02 上又做了一次偏移和 WGS84 的偏差能到几百米。这意味着你如果拿一台 GPS 外业设备采集的 WGS84 轨迹直接叠加在高德影像图上轨迹会明显跑偏反过来用高德底图叠加 OSM 路网两个路网也会错开。这属于坐标系本身的问题不是 QGIS 设置错了。后文我会专门写一节排查方法这里先记住一条做正经地理分析优先选 WGS84/3857 和天地图只想快速看个大概才去叠高德百度。2. 在线图源汇总清单直接替换 x/y/z 就能用2.1 国际通用底图稳定且免费这一节列的是全球范围内最稳定的在线底图不需要注册、不需要密钥直接复制 URL 到 QGIS 的 XYZ 连接里就能用适合绝大多数日常出图场景。图源名称类型URL 模板特点OSM 标准底图XYZhttps://tile.openstreetmap.org/{z}/{x}/{y}.png全球路网最全社区维护免费但商用时需遵守 OSM 使用策略OpenTopoMapXYZhttps://tile.opentopomap.org/{z}/{x}/{y}.png地形、等高线、山体阴影一体适合野外调查和登山路线人道主义 OSMXYZhttps://tile.openstreetmap.fr/hot/{z}/{x}/{y}.pngOSM 高清版路网要素更精细常被当作全球底图备用Esri 卫星影像XYZhttps://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}全球影像质量高注意这个模板的参数顺序是 z/y/xEsri 全球地形XYZhttps://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}带地形晕渲、边界和部分注记适合规划展示Esri 国家地理XYZhttps://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}欧美风格制图配色沉稳做成果图不错CartoDB PositronXYZhttps://basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png浅色极简风格适合叠加专题数据CartoDB Dark MatterXYZhttps://basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png暗黑风格适合夜景和可视化炫酷风CartoDB VoyagerXYZhttps://basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png彩色风格路网注记丰富兼顾美观和实用提醒OSM 官方瓦片服务对高并发和批量下载有限制如果是自动化爬取或商业开发别盯着这一个地址薅可以换成 Esri 或者自建瓦片服务器。Esri 系列地址里{z}/{y}/{x}的顺序我要单独强调一下。多数图源是{z}/{x}/{y}.png但 ArcGIS Online 的 REST 服务格式是反的如果你照搬通用模板写成{z}/{x}/{y}很多级别是能出图但到了某些缩放级别会出现拼接错乱和空白就是参数顺序搞错了。2.2 国内常用图源天地图和高德的正确打开方式国内图源在 QGIS 里用起来比国际图源麻烦一点主要原因就是前面说的坐标系偏移。但我实际使用下来天地图和高德影像仍然是国内项目绕不开的两类底图这里给出我验证过可用的模板。天地图需要先申请密钥。去天地图官网注册普通开发者账号然后在控制台申请一个服务密钥一般几小时就能审批下来拿到的是一个以特定前缀开头的字符串。申请时选择“浏览器端”类型即可不需要服务器端的高级权限。天地图的 URL 模板有两种写法一种是 DataServer 风格的 XYZ一种是我后面实操部分会讲的 WMTS。图源名称类型URL 模板天地图影像底图XYZhttps://t0.tianditu.gov.cn/DataServer?Timg_wx{x}y{y}l{z}tk你的密钥天地图矢量底图XYZhttps://t0.tianditu.gov.cn/DataServer?Tvec_wx{x}y{y}l{z}tk你的密钥天地图影像注记XYZhttps://t0.tianditu.gov.cn/DataServer?Tcva_wx{x}y{y}l{z}tk你的密钥天地图地形底图XYZhttps://t0.tianditu.gov.cn/DataServer?Tter_wx{x}y{y}l{z}tk你的密钥天地图的 t0 是子域名编号如果访问慢或者偶发连不上可以把 t0 换成 t1 到 t7 逐个试。不过 QGIS 的 XYZ 连接不支持自动轮换子域名只能手动指定某一个所以把 t0 写成固定值反而更稳。高德地图的瓦片地址在民间 GIS 圈里已经用了很多年现在仍然稳定。它不需要密钥但注意它的坐标系是 GCJ-02和 OSM 这类 WGS84 底图叠加时会错位。图源名称类型URL 模板高德街道底图XYZhttps://webrd01.is.autonavi.com/appmaptile?style7x{x}y{y}z{z}高德影像底图XYZhttps://webst01.is.autonavi.com/appmaptile?style6x{x}y{y}z{z}高德影像注记XYZhttps://webst01.is.autonavi.com/appmaptile?style8x{x}y{y}z{z}偶尔会遇到某些网络环境下 webrd01 域名响应慢可以尝试把 webrd01 换成 wprd01这两个域名在高德内部其实是同一套瓦片的别名我自己遇到过模拟项目X里用 webrd01 全部白屏换成 wprd01 立刻恢复的情况。至于百度和腾讯我不是很推荐在 QGIS 里直接用。百度瓦片对非官方客户端的限制比较严格而且 BD-09 坐标偏移最大即便能加载出来和你的 WGS84 数据叠加也是错得一塌糊涂必须再做一道坐标转换成 BD-09生产环境里性价比很低。腾讯在线瓦片的非官方接口地址变动频繁历史上可用的地址经常过一段时间就失效不适合作为稳定底图。如果团队里有人确实需要这两个底图建议优先用官方 SDK 或者自建代理服务转换坐标而不是从 QGIS 直连。2.3 遥感影像和专题图源按需取用除了底图QGIS 里还经常需要一类“影像图源”用于查看卫星影像、地形晕渲、气象云图等专题数据。这一节列几个常见的。图源名称类型URL 模板说明USGS 影像XYZhttps://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}美国本土和全球部分地区影像质量稳定USGS 地形XYZhttps://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}带等高线的公土地形图Sentinel HubWMS/WMTS需注册获取地址欧空局哨兵影像在线服务支持 L2A 真彩色NASA GIBSWMTS需按日期拼接地址NASA 多源遥感影像可用于气象、火点、海温等专题哨兵影像的 Sentinel Hub 我这里只给到“需要注册”这个级别因为它每个账号的 WMS 地址末尾会带一个实例标识别人给不了通用链接。NASA GIBS 的 WMTS 地址里要嵌入具体的日期不是固定模板适合做临时查看卫星影像不适合当常态底图。这两个我在实际项目里遇到的情况是不是不能用而是配置成本高非遥感分析场景其实不必折腾。3. 实操演示把图源加进 QGIS 的完整流程3.1 用 XYZ 连接添加瓦片底图这一步我以 QGIS 3.28 LTR 版本为例其他 3.x 版本界面大同小异。打开 QGIS在菜单栏点击“视图 面板 浏览器”调出右侧或底部的浏览器面板。在浏览器面板里找到“XYZ Tiles”右键点击选择“新建连接”。弹窗里填两样东西连接名称比如“OSM 标准底图”URL直接粘贴前面表格里的地址模板。如果这个图源是 TMS 协议也就是行号方向相反就把 URL 里的{y}改成{-y}QGIS 3.14 以上版本都支持这种写法。点击“确定”连接就会出现在 XYZ Tiles 列表里双击连接名称底图图层就加到地图窗口了。加载后如果地图花屏或者缩放异常先检查工程右下角的 CRS 是不是 EPSG:3857。XYZ 瓦片默认是 Web 墨卡托如果工程被切到别的坐标系QGIS 会做动态重投影变形不可避免。我见过很多人在这一步纠结“我加进去之后地图怎么不显示”十有八九是网络问题或者 URL 里多了一个空格。URL 模板一定不能有换行或者多余空格{z}、{x}、{y}这些占位符也必须是英文大括号。3.2 用 WMS/WMTS 连接加载服务型图源以天地图为例它的 WMTS 地址是https://t0.tianditu.gov.cn/vec_w/wmts?tk你的密钥。打开“图层 添加图层 添加 WMS/WMTS 图层”或者直接按快捷键 CtrlShiftW。点击“新建”名称随便填URL 填上面的 WMTS 地址点“确定”后再点“连接”。QGIS 会去读取服务的能力文档这个过程可能要等几秒。连接成功后左侧会列出这个服务提供的所有图层找到你需要的影像、矢量或者注记图层。图层列表下方通常有“瓦片大小”“格式”“坐标系”等参数。格式建议选 PNG瓦片大小选 256 或 512坐标系按服务提供的选比如天地图有 w3857和 c4326两套瓦片矩阵集国内项目一般选 w。勾选需要的图层点击“添加”即可。WMTS 和 XYZ 在 QGIS 里的本质区别是XYZ 直接把 URL 模板写死加载时不需要和服务端做任何“握手”WMTS 则要先拉取能力文档再按文档里的规则请求瓦片。所以 WMTS 地址如果变了界面上会卡在“读取能力文档”那一步这时候就要回去检查密钥或地址是否仍然有效。3.3 图源连接的管理、备份和团队共享加了一堆图源之后很多人会问“我换台电脑是不是又要全部重新加一遍”答案是可以不用。QGIS 会把所有连接配置保存在当前用户配置目录下的 QGIS3.ini 文件里。Windows 上大致路径是C:\Users\你的用户名\AppData\Roaming\QGIS\QGIS3\profiles\default\QGIS\QGIS3.ini。里面会有一个[qgis]段落和[connections]段记录的正是 XYZ Tiles 和 WMS 的地址。你只需要把这个文件备份到网盘或者传给同事覆盖到对方电脑的相同路径图源连接就全部带过去了。不过实测下来直接用 QGIS3.ini 覆盖有个风险不同机器上 QGIS 版本不一致时某些新版本的连接参数可能读不出来。所以我在团队里的做法更简单粗暴——维护一个共享表格列清楚“图源名称、协议、URL 模板、是否需要密钥、坐标系、最大缩放级别、适用场景”谁需要新图源就直接从表格里复制 URL5 秒建一个新连接。表格比配置文件更直观也更容易排查问题。4. 常见问题与排查技巧实录4.1 瓦片出不来、白屏、报错先查这五件事在线图源加载失败是很常见的我自己踩过的坑按概率排序大概是密钥失效、URL 填错、网络不通、坐标系错乱、缩放级别超限。下面这张表可以直接当排查手册用。现象可能原因处理方法整个图层白屏网络连不上图源服务器或域名被封用浏览器直接打开瓦片 URL 测试能打开就是 QGIS 配置问题只有部分级别空白超过服务最高缩放级别把地图缩放到 z18 以内更高级别换其他图源瓦片拼接错位{z}/{y}/{x}顺序写错或 TMS 方向反转核对模板Esri 系列用 y/x 顺序TMS 源把{y}换{-y}HTTP 403天地图密钥过期、被禁用或没填去官网重新申请或换新 tk图和矢量数据错位坐标系不一致GCJ-02 与 WGS84 差异换天地图/Esri 底图或对矢量做坐标转换加载极慢网络代理、子域名堵塞换高德/天地图的备用子域名或打开 QGIS 瓦片缓存有一个很管用的排查动作把 URL 模板里的{z}、{x}、{y}手动替换成具体的数字比如 z 换成 6、x 换成 30、y 换成 20得到一个完整的链接粘贴到浏览器地址栏打开。浏览器能出图说明服务本身是好的问题一定出在 QGIS 配置浏览器打不开那就先解决网络和密钥问题再回来碰 QGIS。4.2 坐标系偏移是最难发现的问题教你怎么判断和规避国内图源的坐标系偏移我在第 1 节已经提过这里展开说说实操层面怎么判断。最简单的判断方法在同一张地图里叠加 OSM 标准底图和高德影像底图看某条明显的城市道路或者河流在两张图之间是否出现了错位。如果错位确实存在而你矢量数据的坐标本身是 WGS84那就别强行叠高德了换天地图或者 Esri 影像。QGIS 里的工程 CRS 动态重投影并不能解决瓦片偏移问题。因为 XYZ 瓦片本质上是一张张固定编号的图片它们的坐标已经写死在瓦片像素里QGIS 只能按瓦片服务声明的坐标系把它们“摆放”到工程里。如果服务声明是 GCJ-02而你工程是 WGS84QGIS 不会知道两者之间还有一道非线性偏移它只会简单地把 GCJ-02 当作一个普通坐标系处理结果就是错位。真正要解决偏移只有两个方向。一是把矢量数据转成 GCJ-02 坐标系再叠高德影像这一步可以用 QGIS 插件商城里的一些坐标转换插件来完成。二是底图改用和 WGS84 基本重合的天地图省去转换这一步。我的经验是只要不是专门做互联网地图数据融合绝大多数业务直接选天地图就把问题绕开了没必要为了高德那点影像清晰度去踩坐标转换的坑。4.3 用 QGIS Python 终端批量检查图源连通性图源清单维护时间长了之后手动一个个打开浏览器测试很累。我后来在 QGIS 自带的 Python 控制台里写了个小脚本每次更新清单就批量跑一遍谁失效了立刻知道。import requests templates { OSM标准: https://tile.openstreetmap.org/{z}/{x}/{y}.png, Esri影像: https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}, 天地图影像: https://t0.tianditu.gov.cn/DataServer?Timg_wx{x}y{y}l{z}tk你的密钥, } z, x, y 6, 30, 20 # 一个肯定存在的瓦片坐标 for name, tmpl in templates.items(): url tmpl.replace({z}, str(z)).replace({x}, str(x)).replace({y}, str(y)) try: resp requests.get(url, timeout8) print(name, 状态码, resp.status_code, 内容类型, resp.headers.get(Content-Type)) except Exception as exc: print(name, 请求异常, exc)这段代码里我测试的是 z6、x30、y20 这个瓦片它在地球中部区域必然存在。跑完如果某个源返回 200 且内容类型是 image/png 或 image/jpeg说明图源可用返回 403 说明密钥或者权限有问题抛异常说明网络和域名有问题。不过注意一点有些图源对非浏览器请求做了防盗链脚本返回 403 但浏览器里却能正常打开所以脚本结果只能作为初步参考最终判断还是要回浏览器确认。5. 关于图源维护的个人建议顺便说几个省心组合5.1 建一张属于自己的图源速查表加图源这件事最怕的不是加不上而是加上了不知道这个图源能干什么、最大支持多少级、坐标系是什么等用到时才想起来去查。我建议你按这个结构维护一张自己的速查表图源名称、协议类型、URL 模板、是否需要密钥、坐标系、最大缩放级别、适用场景、失效时间。把前面清单里的信息填进去再补上自己业务里常用的一些字段这张表就是你图源管理的“主数据库”。我自己还会在表格里加一列“备用替换”专门记录同一类型图源的替代方案。比如天地图影像万一某天密钥政策变了我的备选是 Esri 影像加上天地图注记高德街道如果失效备选是 OSM 加 CartoDB。这样谁挂了都有后手项目现场不会因为一个图源挂掉就停工。5.2 几套不用花钱也比较稳的底图组合根据我这些年的使用经验有几套组合在不同场景下表现非常稳定你可以直接抄作业。使用场景推荐组合外业数据采集底图OSM 标准底图 Esri 卫星影像国内规划项目底图天地图影像 天地图影像注记专题可视化分析底图CartoDB Dark Matter 或 Positron地形地貌研判底图OpenTopoMap Esri 全球地形野外考察纸质出图USGS 地形 OSM 路网这几套组合里最省心的其实是天地图加注记的两层结构。天地图影像负责给卫星底图注记层负责地名和路网文字两层都是 WMTS 瓦片加载速度很快。唯一要注意的是天地图所有的请求都会校验 tk密钥别传到公开仓库里一旦泄露要回控制台重置。最后再分享一个小经验在线图源再稳定也架不住演示现场突然断网。我经历过一次重要汇报现场网络抽风所有在线图源全变白屏最后是靠提前下载好的区域离线切片底图救回来的。所以如果你有项目汇报、迎检或者其他不能出错的场景务必提前把重点区域的瓦片下载到本地或者用 QGIS 栅格导出功能把当前视图范围的底图裁剪出来备用。这个清单我会持续更新大家在使用过程中如果有稳定可靠的图源也欢迎在评论区互通有无一起把这份清单养得越来越实用。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →