Визуализация большого набора данных плитки - PullRequest
0 голосов
/ 25 апреля 2019

Я потратил много времени на устранение этой проблемы в SO, но не смог найти подходящий ответ. Короче говоря, я не могу просматривать локально сохраненные фрагменты карты, используя R Shiny и leaflet.

Я использовал gdal2tiles.py для создания вложенного каталога плиток из исходного файла .tif с высоким разрешением, спроецированного в EPSG: 27700 . Выходные данные процесса листов можно просмотреть с помощью автоматически сгенерированных файлов .html функции (например, googlemaps.html, leaflet.html, openlayers.html; см. Ниже ссылку на репозиторий GitHub с плитками и leaflet.html для просмотра. ). Поэтому я пришел к выводу, что gdal2tiles.py правильно генерирует плитки, которые могут отображаться в браузере.

Проблема возникает при попытке использовать leaflet и R Shiny. Я следовал следующим инструкциям здесь и здесь , чтобы указать 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, но безрезультатно. Если это кому-нибудь поможет, то плитки, которые я использую, можно найти здесь . Репозиторий довольно большой с точки зрения количества файлов и папок (входной растр имеет разрешение 25 м, и мне требуется много уровней масштабирования), но не по размеру.

Я заметил - при приближении к моим плиткам в leaflet.html - существует несколько оттенков серого. Это странно, потому что входной файл .tif был двоичным; либо лес присутствует (1), либо отсутствует (NoData или NA). Я включил снимок экрана и задаюсь вопросом: это проблема рендеринга в Chrome или это приводит к тому, что плитки не отображаются в Shiny. Скриншот можно посмотреть здесь .

Может кто-нибудь помочь мне отобразить мои плитки в R Shiny с использованием локальных файлов? Я приму ответ, если лучшим решением будет использование плиток, размещенных на GitHub, но я предпочитаю отображать локально сохраненные файлы.

1 Ответ

0 голосов
/ 07 мая 2019

У меня есть решение со страницы Github repo пакета. Для любого, кто может столкнуться с проблемами в будущем, выясняется, что флаг tms=TRUE требуется в tileOptions. Я благодарю Баррета Шлоерке за его помощь в этом. Его полный (рабочий) код скопирован ниже и может быть найден здесь на Github.

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)

  )
...