#r #shiny
Вопрос:
Я столкнулся с проблемой с downloadHandler
моим блестящим приложением. Приложение отображает два реактивных объекта (полигоны и точки). Я хочу, чтобы в зависимости от выбора, который делают посетители-они могут отображать либо полигоны, либо точки, либо и то, и другое, — когда они нажимают «Загрузить», они получают результат своего выбора.
Проблема: когда я нажимаю на кнопку загрузить, я получаю либо polygons
если polygons
написано первым в строке shp_files lt;- list.files(temp_shp,c("polygons","points"),full.names = TRUE)
, либо points
если points
написано первым в строке shp_files lt;- list.files(temp_shp,c("points ","polygons"),full.names = TRUE)
. Однако я никогда не получаю и то, и другое … именно этого я и хочу. Есть идеи, как это решить?
Спасибо!
output$download_shp lt;- downloadHandler( filename = paste0("Shapefiles_",paste0(Country), "_", Sys.Date(),".zip"), content = function(file) { # Polygons polygons = data() # Points points = data_point() # create a temp folder for shp files temp_shp lt;- tempdir() # write shp files writeOGR(polygons, temp_shp, "polygons", "ESRI Shapefile", overwrite_layer = TRUE) writeOGR(points, temp_shp, "points", "ESRI Shapefile", overwrite_layer = TRUE) # zip all the shp files zip_file lt;- file.path(temp_shp, "trk_buff_shp.zip") shp_files lt;- list.files(temp_shp, c("polygons","points"), full.names = TRUE) # zip zip_command lt;- paste("zip -j", zip_file, paste(shp_files, collapse = " ")) system(zip_command) # copy the zip file to the file argument file.copy(zip_file, file) # remove all the files created file.remove(zip_file, shp_files) } )
Комментарии:
1. Попробуй
shp_files lt;- list.files(temp_shp, all.files = TRUE, full.names = TRUE)
2. Привет @YBS, я бы сказал, что это решение работает на 50%. Когда я нажимаю на кнопку загрузить, я получаю шейп-файлы как полигонов, так и точек. Однако, если полигоны не выбраны, папка загрузки будет содержать пустой файл формы полигона. То же самое касается очков…