我花了很多时间解决SO上的此问题,但未能找到合适的答案。简而言之,我无法使用R Shiny
和leaflet
查看本地存储的地图图块。
我已使用gdal2tiles.py从EPSG:27700中投影的原始高分辨率.tif文件创建了一个嵌套的图块目录。可以使用该函数的自动生成的.html文件(即googlemaps.html,leaflet.html,openlayers.html)查看切片过程的输出;请参见下文,其中提供了包含磁贴和leaflet.html的GitHub存储库链接,以供查看)。因此,我得出的结论是gdal2tiles.py正确生成了可以在浏览器中显示的图块。
尝试使用leaflet
和R Shiny
时出现问题。我已按照以下说明here和here将leaflet
指向我的本地图块,但是R Studio的查看器或浏览器中均未显示任何内容。令人沮丧的是,运行代码时没有错误打印到R控制台。我正在使用的代码基于我刚刚链接到的先前的SO答案,如下所示:
library(leaflet)
addResourcePath("mytiles", "C:/path/to/my/tiles/")
leaflet() %>%
addTiles(urlTemplate = "mytiles/{z}/{x}/{y}.png") %>%
addMouseCoordinates()
按照语法{z}/{x}/{y}
正确命名文件夹和文件,例如目录结构如下:path/to/my/files/6/30/42.png
。我也将文件上传到GitHub,并将回购URL传递到urlTemplate
,但无济于事。如果可以帮助任何人,则可以here找到我正在使用的图块。就文件和文件夹的数量而言,回购协议相当庞大(输入栅格的分辨率为25m,我需要足够的缩放级别),但尺寸却不大。
我注意到-在leaflet.html中放大我的图块时-有多种灰色阴影。这很奇怪,因为输入.tif是二进制的。森林存在(1)或不存在(NoData或NA)。我提供了一个屏幕截图,想知道这是否是Chrome中的渲染问题,或者是否导致图块无法显示在Shiny
中。可以查看here的屏幕截图。
有人可以帮我使用本地文件在R Shiny中显示我的图块吗?如果最好的解决方案是使用GitHub托管的磁贴,但我希望显示本地存储的文件,我将接受一个答案。
答案 0 :(得分:0)
我从软件包的Github repo问题页面获得了解决方案。对于将来可能遇到问题的任何人,事实证明tms=TRUE
中需要标记tileOptions
。感谢Barret Schloerke在此方面的帮助。他的完整(有效)代码已复制到下面,可以在Github上here找到。
library(leaflet)
library(rgdal)
library(leaflet.extras)
library(mapview)
leaflet() %>%
addMouseCoordinates() %>%
# Set high zoom level as I have only created tiles at zoom level 6 for a quick example. If you can get this to display, it'll be tough to discern as it's quite zoomed out!
# This should center the view somewhere over the UK where my tiles have been created
setView(0, 51.5135085, zoom = 6) %>%
# Added toner provider tiles as the white background makes it easier to see my custom tiles
addProviderTiles(group = "Toner", providers$Stamen.Toner) %>%
addTiles(group="test", urlTemplate = "https://simon-tarr.github.io/tilestest/tiles/{z}/{x}/{y}.png",
options = tileOptions(tms = TRUE, minZoom = 6, maxZoom = 6)) %>%
addLayersControl(
overlayGroups = c("test"),
options = layersControlOptions(collapsed = FALSE)
)