Estou tentando gravar várias camadas no mesmo GeoPackage no R, mas recebo um erro Creation of output file failed
,. Eu tentei procurar documentação de leitura e gravação em arquivos .gpkg com RGDAL, por exemplo, para descobrir se writeOGR()
realmente suporta várias camadas, com pouco sucesso. Isso é possível, se sim, como fazê-lo? Exemplo de trabalho mínimo:
library(sp)
library(maptools)
library(rgdal)
data(wrld_simpl)
norway <- wrld_simpl[wrld_simpl$NAME == "Norway", ]
sweden <- wrld_simpl[wrld_simpl$NAME == "Sweden", ]
file <- tempfile("scandinavia", fileext = c(".gpkg"))
writeOGR(norway, dsn = file, layer = "norway", driver = "GPKG")
writeOGR(sweden, dsn = file, layer = "sweden", driver = "GPKG")
ogrListLayers(file)
Aparentemente, existe um ogr2ogr
comando shell que executa o truque (hat tip mdsumner ), que eu posso agrupar em uma função R. No entanto, seria interessante se writeOGR () e / ou st_write () no sf
pacote tivessem isso embutido. Acho que depende dos GDALs layer_options
, mas não parece haver uma opção do tipo append para GPKG no GDAL .
Eu poderia escrever uma função de wrapper simples para st_write()
suporte nativo sf
ou rgdal
seria melhor.
Respostas:
Você pode fazer isso usando a
append
bandeira emsf::st_write()
:fonte