如何在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
相关产品推荐
相关产品推荐

