如何使用R从下载的gzip文件中提取KML文件?



我正在尝试从网上下载一个压缩文件,然后在其中提取单个 kml 文件。我已经尝试了几种不同的实用程序函数来解压缩和提取,但不确定如何获得我可以开始使用的 kml(在 sf 包中(。

zipFileName <- "http://satepsanone.nesdis.noaa.gov/pub/volcano/FIRE/HMS_ARCHIVE/2010/KML/smoke20100101.kml.gz"
smokeFileName <- "smoke20100101.kml"
temp <- tempfile()
download.file(url = zipFileName, destfile = temp)

untar(tarfile = temp, files = smokeFileName)
# Error in getOctD(x, offset, len) : invalid octal digit

untar(tarfile = zipFileName, files = smokeFileName)
# Error in gzfile(path.expand(tarfile), "rb") : cannot open the connection
# In addition: Warning message:
#   In gzfile(path.expand(tarfile), "rb") :
#   cannot open compressed file 'http://satepsanone.nesdis.noaa.gov/pub/volcano/FIRE/HMS_ARCHIVE/2010/KML/smoke20100101.kml.gz', probable reason 'Invalid argument'
unz(temp, smokeFileName)
# A connection with                                                                                                     
# description "C:\Users\jvargo\AppData\Local\Temp\RtmpemFaXC\file33f82dd83714:smoke20100101.kml"
# class       "unz"                                                                                    
# mode        "r"                                                                                      
# text        "text"                                                                                   
# opened      "closed"                                                                                 
# can read    "yes"                                                                                    
# can write   "yes"

改编自 https://community.rstudio.com/t/download-gz-file-and-extract-kml/13783

library(R.utils)
gzFileURL <- "http://satepsanone.nesdis.noaa.gov/pub/volcano/FIRE/HMS_ARCHIVE/2010/KML/smoke20100101.kml.gz") 
smokeZipName <-"smoke20100101.kml.gz"
smokeFileName <- "smoke20100101.kml"
directory <- tempdir()
setwd(directory)
temp <- tempfile(pattern = "", fileext = ".kml.gz")
download.file(url = gzFileURL, destfile = temp)
gunzip(temp)
kmlFile <- list.files(tempdir(), pattern = ".kml")
layers <- st_layers(kmlFile)$name

相关内容

  • 没有找到相关文章

最新更新