我有几个星期都有这个问题。我不知道如何让RShiny允许导出.kml或.kmz文件,特别是从源Python包创建的文件。
前天我终于想出来了。我不知道怎么回答,所以我会把它作为其他可能遇到这个问题的人的公认答案。在我的故障排除过程中找不到任何帮助.希望这能帮助下一个人。
发布于 2022-12-01 13:57:43
为了解决这个问题,我搜索了几乎所有我能想到的地方,但是没有任何帮助。我最终通过在R和Python方面的代码的尝试和错误获得了它。下面是我在RShiny中发现的工作:
在ui中,只需确保有一个downloadButton,它的id是您试图用downloadHandler导出的东西的id。在本例中,需要有两个:一个用于'download_kml‘,另一个用于'download_kmz’。
server <- function(input,output) {
function_object <- reactive({python_class(args)})
kml_show_object <- reactive({function_object()$show_kml})
#------------------------------------------
# TO EXPORT .KML
output$download_kml <- downloadHandler(
filename <- function() {
'export.kml'
},
content <- function(file) {
write(kml_show_object(), file)
},
contentType = 'application/vnd.google-earth.kml+xml'
)
#------------------------------------------
# TO EXPORT .KMZ
output$download_kmz <- downloadHandler(
filename <- function() {
'export.kmz'
},
content <- function(file) {
write(kml_show_object(), file)
},
contentType = 'application/vnd.google-earth.kmz'
)
}
shinyApp(ui = ui, server = server)这是使用Python中的simplekml包来创建kml对象。要使它正确运行(在R端),您不能只创建kml对象。R不知道该怎么处理它。您必须在Python代码中为kml.kml()分配一个变量。在本例中,它是一个名为'show_kml‘的类变量,它在R中本地分配给kml_show_object。
如果您需要帮助生成kml对象的Python代码,我可以编辑它来包含它。
希望这能帮上忙!
https://stackoverflow.com/questions/74642898
复制相似问题