ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

QGC地面站换图源实操:高德与天地图系坐标系与配置教程

QGC地面站换图源实操:高德与天地图系坐标系与配置教程 1. 为什么我决定换掉QGC里的谷歌地图源先说个最近发生的事。上周我把一架四轴拉到新场地试飞打开QGC地面站准备规划航线地图界面却一直转圈等了快两分钟瓦片才慢慢糊出来而且越放大越模糊最后干脆变灰。切回之前一直用的Google图层还是老样子部分区域的瓦片直接返回404。这种体验在前两年偶尔出现到今年已经越来越频繁几乎每次外场都要赌运。可能有朋友会问QGC地面站不是自带好几个地图源吗为什么偏偏要折腾高德和天地图我直接说结论QGC v4.0.x里预置的Google、Bing、Esri这些图层在本地网络环境下的可用性真的太差了要么请求超时要么图片加载一半就断掉再加上谷歌瓦片服务的授权链接经常变动今天能用明天就失效完全不靠谱。相比之下高德和天地图是国内可以稳定访问的地图服务瓦片请求速度快坐标系也符合国内场景把QGC的自定义地图源指到它们上面几乎是一劳永逸。这篇教程我尽量讲细一点从地图瓦片的基本原理讲到坐标系差异再到QGC里每一步怎么配最后把常见问题都列出来。无论你是刚装QGC的新手还是已经玩了一段时间但没搞懂自定义图源的飞手都能照着操作。我自己已经在三台电脑上验证过Windows和Ubuntu下的QGC v4.0.x到v4.3.x版本都适用。2. 地图瓦片与坐标系先搞懂这几点再动手2.1 瓦片地图是怎么工作的要替换QGC的图源先得理解地图瓦片的组织方式否则你连URL模板里那串{x} {y} {z}代表什么都搞不清楚后面配错了也不知道错在哪。地图瓦片的核心思想很简单把一张世界地图按Web墨卡托投影切成无数张正方形小图片按缩放级别z和行列号x、y来编号。z越大瓦片数量越多显示的内容越精细。你在QGC里放大缩小地图本质就是请求不同z层级下的瓦片。举个例子z1时整个世界地图分成上下左右4张瓦片z2时每张再切4张总共16张到了z18全球大概有几十亿张瓦片。QGC只请求屏幕范围内对应z层级的瓦片然后拼接成你看到的地图。这个机制的优点是加载快、资源消耗小缺点是离线和断网时如果没有缓存地图就是一片空白。URL模板里常见的几个变量含义分别是{z}缩放级别{x}瓦片列号{y}瓦片行号{s}子域名序号可以填1到4或0到7用于负载均衡高德和天地图的瓦片地址都遵守这套规则只是URL格式不一样参数名略有差异。2.2 GCJ-02、WGS84与CGCS2000坐标系差异很关键这是整套方案里最容易踩坑的地方我必须单独拿出来讲。QGC地面站、Pixhawk飞控、GPS模块使用的坐标系是WGS84也就是GPS卫星定位使用的全球大地坐标系经纬度直接来自卫星解算。而高德地图在国内使用的是GCJ-02坐标系也就是俗称的“火星坐标系”它把WGS84坐标做了非线性偏移加密偏移量通常在几十米到几百米之间而且不同地区偏移方向还不一样。这意味着什么意味着如果你直接把高德瓦片放进QGC当底图无人机实际飞行的轨迹和地图上显示的位置会对不上可能偏出去几十米。做粗略参考、找找周边环境还行但绝不能用高德地图直接规划精确到厘米级的航线否则飞控按WGS84坐标定位地图上却是另一个位置画面和实际位置就对不上了。天地图的情况好很多。天地图采用的CGCS2000坐标系和WGS84在绝大多数地区的差异都在1到2米以内这种精度对无人机航点规划来说完全可以忽略。所以我的结论很明确QGC的主地图用天地图高德可以作为辅助参考或者影像图。2.3 QGC的地图缓存机制QGC对地图瓦片有自己的一套缓存逻辑。它会把请求过的瓦片统一存入一个名为QGCMap.db的SQLite数据库文件里这个文件的位置在QGC设置中可以查看和修改。你缩放地图、拖动地图时请求过的瓦片都会被缓存下来。第二次浏览同一区域时QGC优先读取本地缓存不会再请求网络在野外信号弱的时候特别有用。离线下载功能其实也是利用这套缓存机制把指定区域的瓦片主动预取一遍存进数据库。有一点很多新手容易忽略QGC内置的缓存清理策略有时候比较激进如果缓存文件达到上限它会自动删除最旧的瓦片。如果你下载了大范围离线地图建议把缓存上限调大或者定期把重要的离线区域另存备份。3. 高德与天地图两种可用的瓦片源对比3.1 高德瓦片URL解析高德地图的瓦片服务有两种比较常见的访问入口一种是面向开发者的Web服务API另一种是网页版地图直接调用的瓦片地址。我们这里用的是后者也就是网页端地图渲染时请求的那种URL。典型的高德矢量地图瓦片URL长这样https://webrd0{s}.is.autonavi.com/appmaptile?langzh_cnsize1scale1style8x{x}y{y}z{z}其中webrd0后面的{s}可以替换成1、2、3、4对应四个子域。高德卫星影像图的URL则略有不同https://webst0{s}.is.autonavi.com/appmaptile?style6x{x}y{y}z{z}如果你需要在影像图上叠加路网和标注可以使用style8的图层来叠加不过QGC原生并不支持同时叠加两个自定义图源所以通常只能选一个作为底图。高德的优势是影像更新快、国内POI信息丰富、加载速度快一套URL直接就能用不需要申请token。缺点也很明显一是GCJ-02坐标偏移不能作为精确导航底图二是这种直接调用网页瓦片地址的方式本质上属于非官方的个人实验用途如果做商业项目必须走高德开放平台的正式授权渠道。3.2 天地图瓦片URL与tk申请天地图是国家地理信息公共服务平台提供的地图服务在合规性和坐标系方面都更让人省心所以如果你想给QGC配一个长期稳定的地图源天地图应该是首选。天地图瓦片请求需要用一个tk参数也就是开发者密钥。申请方式很简单下面是我实际操作的步骤打开天地图官方网站注册一个账号。登录后进入控制台找到“应用管理”或“我的应用”。创建一个新应用类型选“浏览器端”或“服务端”都可以用途写个人学习。创建完成后系统会分配一个tk密钥一串类似xxxxxxxxxxxxxxxxx的字符串。把这个tk复制下来保存好后续配置要用。天地图的瓦片URL格式与高德类似但路径结构不同。常用的矢量底图URL是https://t{s}.tianditu.gov.cn/DataServer?Tvec_wx{x}y{y}z{z}tk你的tk其中{s}通常可以填0到7或者不填直接使用t0.tianditu.gov.cn。天地图的几种常用图层标识如下图层类型参数值说明矢量底图vec_w标准电子地图矢量注记cva_w地名、路名等标注影像底图img_w卫星影像影像注记cia_w影像上的标注信息地形晕渲ter_w地形地貌渲染天地图的影像底图和矢量底图可以互相配合但在QGC里一次只能用一个我一般把影像图作为飞行底图矢量图作为地面站屏幕展示、快速辨别地物时用。3.3 谁更适合当QGC的主地图我直接给个对比表方便你根据自己需求选择对比项高德天地图坐标系GCJ-02火星坐标CGCS2000近WGS84坐标偏移明显几十米到几百米1-2米内申请门槛网页瓦片无需token非官方方式需申请tk免费影像更新快城市区域尤其好中等加载速度快较快合规性个人实验尚可商用需授权正规国字号服务推荐场景目视参考、环境观察精确航点规划、飞行作业我的建议很简单无人机飞控定位是WGS84天地图的坐标系与之天然匹配航线规划、定点任务全部以天地图为准高德仅作为飞行时观察周边环境的参考底图。接下来我讲的就是怎么把它们都配置到QGC里。4. QGC v4.0.x添加自定义地图源保姆级步骤4.1 准备工作与版本确认配置之前先确认你的QGC版本。v4.0.x、v4.1、v4.2、v4.3版本在自定义地图源设置界面上基本一致越新的版本地图引擎越稳定。我自己目前用的是v4.2.4版本配置路径如下。准备事项清单一个可以正常联网的电脑Windows、Ubuntu、macOS都行。天地图tk密钥如果你要用高德这个可以忽略。一个能打开网页的浏览器用来验证瓦片URL是否有效。QGC最好升级到v4.0.x后期版本老版本的自定义URL支持情况不够好。在浏览器里先测试一下瓦片URL这是很关键的一步。把高德URL中的{x}、{y}、{z}替换成实际数字比如z12、x3395、y1662直接粘贴到浏览器地址栏如果能看到一张地图瓦片图片说明URL可用。天地图同理但要带上tk参数。我用一段简单的Python脚本批量测试瓦片可用性虽然QGC本身不依赖Python但提前验证能省很多排查时间import requests url https://t{s}.tianditu.gov.cn/DataServer?Tvec_wx{x}y{y}z{z}tkYOUR_TK # 测试多组瓦片坐标 for s in range(4): for x, y, z in [(3395, 1662, 12), (3396, 1662, 12), (1697, 830, 11)]: test_url url.replace({s}, str(s)).replace({x}, str(x)).replace({y}, str(y)).replace({z}, str(z)) resp requests.get(test_url, timeout10) print(s, x, y, z, resp.status_code, resp.headers.get(Content-Type))如果状态码全是200、Content-Type是image/jpeg或image/png那就可以放心往下走了。如果出现403或者超时先解决网络问题或者检查tk是否有效。4.2 在QGC中配置高德瓦片第一步打开QGC主界面点击右上角的齿轮图标进入“应用设置”。第二步在左侧菜单里选择“通用”General找到“地图提供程序”Map Provider下拉框。把默认的Google或Bing改成“自定义URL”Custom URL个别版本里显示为“Custom”。第三步在出现的“自定义URL模板”输入框里粘贴高德瓦片地址https://webrd0{s}.is.autonavi.com/appmaptile?langzh_cnsize1scale1style8x{x}y{y}z{z}这里要注意QGC的URL模板变量用的是小写{x}、{y}、{z}不要写成大写否则地图加载不出来。第四步点击“确定”或者“应用”回到主界面缩放移动地图看是否正常加载。正常情况下几秒钟内就能看到瓦片渲染出来。如果用的是高德卫星影像图把URL换成下面这个https://webst0{s}.is.autonavi.com/appmaptile?style6x{x}y{y}z{z}我实际用下来的感受是高德瓦片加载速度确实快城市区域放大到z18还有清晰的楼宇轮廓外场草地、农田等地貌的辨识度也不错。但就像前面说的它有机位偏移问题你可以用它来观察地形环境但画航点时心里要清楚位置存在偏差。提示部分QGC版本在自定义URL下方还有一个“自定义标注URL”Custom Labels URL可以把天地图的注记图层URL填进去实现“底图标注”叠加。如果你的版本没有这个字段也不影响正常使用。4.3 在QGC中配置天地图瓦片天地图的配置流程和高德基本一致多了一步tk参数的填写。在“自定义URL模板”里粘贴天地图矢量底图地址https://t{s}.tianditu.gov.cn/DataServer?Tvec_wx{x}y{y}z{z}tk你申请的tk需要把{s}替换成0到7中的任意数字或者保留{s}让QGC在多个子域间做负载均衡。我这边测试下来保留{s}时QGC也能正确处理但如果你的电脑DNS解析比较慢也可以直接固定成t0或t1。如果你想要卫星影像把T参数改成img_w即可https://t{s}.tianditu.gov.cn/DataServer?Timg_wx{x}y{y}z{z}tk你申请的tk我个人的推荐配置是飞行之前规划任务时用天地图矢量底图把各个航点、兴趣区域都标注好实飞时切换到天地图影像图这样能看到真实地貌方便观察周边障碍物。这两种地图只是T参数不同多花一分钟改一下URL就能切换。配置完成后建议用QGC的“地图下载”功能把作业区域提前缓存到本地这样到了外场即使没有网络信号地图也能正常显示。4.4 离线地图下载与缓存管理QGC v4.0.x自带离线地图下载功能。在主界面地图右上角有一个“下载地图”按钮点击后会弹出区域选择界面。操作步骤如下先浏览到目标区域把地图缩放到你需要的最大层级比如z17或z18。点击“下载地图”按钮屏幕上会出现一个矩形框拖动调整范围覆盖你要作业的区域。设置最小层级和最大层级最小层级建议从z10开始最大层级按你实际需要来。层级越高下载的瓦片数量呈指数级增长跨市级别的区域下到z17可能就有几万张瓦片。选择保存位置QGC默认使用缓存数据库确认后点击下载。下载过程中可以在界面看到进度条速度取决于你的网络和瓦片数量。下载完成后拔掉网线测试一下地图依然能正常显示就说明缓存成功了。缓存数据库的默认路径在QGC设置里可以看到。如果下载的数据量很大建议把缓存大小上限调高否则QGC在缓存达到限额时会自动清理旧瓦片你在野外就看不到地图了。5. 实操中遇到的问题与排查速查表5.1 地图空白怎么办地图加载不出来是很多人配置自定义图源后遇到最多的状况。我按优先级整理一下排查思路第一件事用浏览器直接打开你填写的URL替换变量为实际数值看能不能显示图片。如果浏览器里返回403或404那就是URL本身有问题或者tk无效。第二件事检查URL里的变量大小写。QGC自定图源的模板变量是小写{x}、{y}、{z}如果你从网上复制的地址是大写就会出现一直加载失败但日志里又没有明显报错的情况。第三件事检查tk是否正确。天地图的tk是绑定应用和域名的如果创建应用时选了“浏览器端”并填了固定的域名白名单而QGC请求的Origin不在白名单内也会失败。最简单的办法是创建应用时不限制域名或者在白名单里加上你的IP和常用域名。第四件事查看QGC的网络日志。在应用设置里打开日志记录然后刷新地图看请求URL是否正常发送返回状态码是多少。这一步能定位大部分问题。我在Windows上遇到过一种情况QGC能正常显示其他界面但地图一直灰色后来发现是系统代理设置影响了QT的网络请求。如果你的电脑开了代理建议把QGC加入代理白名单或者临时关闭代理再测试。5.2 地图偏移怎么修正如果你用了高德瓦片发现无人机在地图上的实际位置总是偏向某个方向偏移量还比较恒定那基本可以确定是GCJ-02坐标系偏移造成的。这个问题没有完美的软件级修正方案因为高德的偏移算法是非线性的不同地区偏移量不一样。我能给的建议是如果你的飞行任务对定位精度要求高直接换天地图不要在高德底图上规划精确航点。如果只是目视观察不涉及精准地物对齐高德的偏移对飞行影响不大。个别情况下你可以用QGC里“设置飞机位置”的功能手动微调让当前位置显示在地图上正确的位置但这只是视觉上的修正航线基于的坐标系统不会变。天地图的坐标系和WGS84非常接近基本上不存在明显偏移。如果你发现天地图也有偏移先检查一下QGC是否把地图CRS设置成了其他投影模式或者你的GPS模块本身有定位误差。5.3 加载慢与缓存异常处理加载慢的常见原因有三个网络不好、QGC并发瓦片请求数受限、缓存文件太大导致磁盘IO瓶颈。网络问题只能换网络环境不过你可以把缓存调大在外场趁信号好的时候把区域提前下载好。并发请求数在QGC里没有直接图形化设置但减少不必要的图层叠加、关闭不用的窗口能略微提升加载速度。如果缓存异常比如离线下载的瓦片到了外场显示不全我一般这样处理在应用设置里找到缓存目录直接删除QGCMap.db文件注意备份好重要的离线地图。重启QGC它会重建一个空白缓存库。重新执行离线下载这次把下载范围缩小一点层级分开下不要一次性下太多。下载过程中不要手动拖动地图避免QGC额外请求大量无用瓦片。另外提一句网上很多“谷歌地图2026最新图源二维码”之类的分享本质上就是把一个URL模板打包成二维码或者配置文件和我在教程里讲的方法是同一件事。QGC本身不支持二维码导入图源你如果拿到的是其他软件格式的图源配置得先转成QGC能识别的URL模板才能用。6. 结束语与一点个人建议做了这么多年地面站配置我的体会是地图源这个东西稳定性比一切都重要。谷歌系地图虽然影像质量好但可用性太差今天能用明天就不一定。天地图作为国字号服务权威性和稳定性都更让人放心再配合天地图官方的坐标拾取工具把兴趣点坐标一个个标注出来整个工作流非常顺畅。最后分享一个小技巧我一般会把天地图矢量、天地图影像、高德影像三个URL模板存成一个文本文件放在电脑和手机里。每次升级QGC或者换新电脑照着模板粘贴一遍五分钟就能把环境恢复好再也不用为地图发愁。如果你在配置过程中还有别的报错或奇怪现象欢迎在评论区把具体表现和QGC版本号发出来我看到会回复。祝大家起降平安每次飞行都顺顺利利。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进