You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R Leaflet中加载WMTS瓦片服务?

解决R Leaflet加载WMTS切片慢/失败的问题

问题核心

你用addWMSTiles()加载WMS速度慢是因为WMS是实时渲染地图,而WMTS是预生成切片,应该用addTiles()直接加载WMTS切片,但之前的URL模板存在格式和占位符不匹配的问题,导致加载失败。

修正后的代码

library(leaflet)

# 适配Leaflet的WMTS GetTile请求模板
wmts_url <- "https://geo.spatialhub.scot/geoserver/ext_rpth/gwc/service/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&LAYER=pub_rpth&STYLE=generic_blue&TILEMATRIXSET=EPSG:3857&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=image/png&authkey=b85aa063-d598-4582-8e45-e7e6048718fc"

map <- leaflet() %>%
  addTiles() %>%  # 添加默认底图
  addTiles(
    urlTemplate = wmts_url,
    options = tileOptions(opacity = 0.7, tms = FALSE)
  ) %>%
  setView(lng = -3.5, lat = 55.5, zoom = 6)

map

关键修正点

  • URL格式修正:移除了第一个URL中的无效路径参数,将authkey作为查询参数传递,同时把WMTS的TileMatrix/TileCol/TileRow替换为Leaflet识别的{z}/{x}/{y}占位符。
  • 选择正确的加载方式:用addTiles()加载预生成的WMTS切片,替代动态渲染的addWMSTiles(),大幅提升加载速度。
  • 瓦片坐标系适配:设置tms = FALSE,因为EPSG:3857的瓦片行号从北到南计数,和Leaflet默认规则一致,避免瓦片错位。

内容的提问来源于stack exchange,提问作者KirkyLady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:15:54