如何在Leaflet for R中渲染使用gdal2tiles创建的自定义地图图块?

时间:2017-01-12 18:14:02

标签: r shiny leaflet tiles gdal

我正在使用ESA's landcover raster layer并最终希望在Leaflet Shiny应用中显示全球的数据。渲染如此庞大的文件是不可能的,所以我决定创建地图图块来显示数据。

创建切片很简单 - 我在QGIS中使用了gdal2tiles工具。这是输出的快速查看,它位于我的计算机上的本地目录中: enter image description here

当我点击leaflet.html file时,瓷砖会在我的浏览器中呈现,如下所示:

enter image description here

显然瓷砖处于正常工作状态。 问题是我不知道如何在Leaflet for R中渲染这些图块。我尝试了this tutorial,但是当我修改代码以适应示例时,没有渲染任何内容。我也从this StackOverflow question探索了答案,但所有的答案似乎已经过时了几年。

这是我用来尝试以任何方式呈现图块的R代码:

library(leaflet)

leaflet() %>% 
  setView(0, 0, zoom = 1) %>% 
  addTiles(urlTemplate = "http://my-username.github.io/tiles/{z}/{x}/{y}.png", 
           options = tileOptions(minZoom = 1, maxZoom = 2, tms = TRUE)) %>% 
  addCircles(lat = 0, lng = 0, radius = 100) #just to see if anything is rendering

这段代码渲染了我绘制的圆圈,但没有别的。

有没有办法直接从本地机器渲染这些图块?如果没有,我如何托管这些瓷砖,以便它们可以在Leaflet for R中呈现?看起来这应该是非常简单的,但我无法弄明白!

1 个答案:

答案 0 :(得分:0)

想出来。您必须在Shiny目录中使用“www”文件夹。所以在这个问题中,我只有文件夹“Tiles”和其中列出的所有平铺文件夹(0 - 7)。相反,将Tiles文件夹移动到www目录中(在我的示例中,它们将进一步移动到名为“map”的文件夹中)。

因此,代替上述结构Tiles > x,它必须是www > map > Tiles > x

leaflet() %>%
    addTiles(urlTemplate = "map/Tiles/{z}/{x}/{y}.png",
             option = tileOptions(tms = T, minZoom = 5, maxZoom = 9))