#r #shiny #plotkml
#r #блестящий #plotkml
Вопрос:
Я создаю блестящее приложение, в котором я разрешаю пользователю записывать данные либо в csv, либо в kml. Однако мой приведенный ниже код не записывает функции в файл kml, так что, когда я открываю KML в Google планета Земля, он показывает черные точки, а при нажатии на него отображается индекс строки исходных данных, а не все значения столбцов для этой конкретной точки. Я использовал функцию writeOGR, но она не записывала файл, поэтому я переключился на использование пакета plotKML. Я хочу, чтобы пользователь выбирал, где будет сохранен файл (используя имя файла, которое я указываю, с указанием даты и времени), и отображал в Google Планета Земля все функции любой заданной точки данных.
output$downloadData <- downloadHandler(
filename = function() {
paste0("data_",Sys.Date(), input$download_type)
},
content = function(file) {
if (input$download_type == ".csv"){
write.csv(data, file, row.names = FALSE)
} else if (input$download_type == ".KML") {
features <- c("COLUMN_1", "COLUMN_2", "COLUMN_3") #These are the features I want displayed in Google Earth
data[features] <- as.character(data[features])
coordinates(data) <- ~X Y
proj4string(data) <- CRS(" proj=longlat datum=WGS84")
kml_description(data, caption = "Data",
delim.sign = "_", asText = F)
kml(data, file = file) #Not sure why this produces points but doesn't display features in Google Earth
#writeOGR(data, dsn = file, layer="Data", driver = "KML")
}
})
Ответ №1:
Получить KML таким образом, чтобы его можно было легко прочитать с помощью Google Maps, пока не так просто, как должно быть.
Возможно, вы захотите попробовать экспортировать через sf
пакет и libkml
.
sf::st_write(obj = an_sf_object, dsn = kml_file_path, driver = «libkml»)
(возможно, вам потребуется установить libkml на свой сервер)
Смотрите также эту функцию из пакета latlon2map для рабочей (хотя и не идеальной) реализации.