Записать файл KML в R

#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 для рабочей (хотя и не идеальной) реализации.