R에서 writeOGR ()을 사용하여 GeoPackage에 여러 계층을 작성 하시겠습니까?


11

R의 동일한 GeoPackage에 여러 레이어를 쓰려고하는데 오류가 발생 Creation of output file failed합니다. RGDAL을 사용하여 .gpkg 파일을 읽고 쓰는 문서를 검색하려고 시도했습니다 writeOGR(). 가능하다면 어떻게 할 수 있습니까? 최소 작업 예 :

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)

R 함수를 래핑 할 수 있는 트릭 (hat tip mdsumner ) 을 수행 하는 ogr2ogr 쉘 명령 이 분명히 있습니다. 에서 writeOGR () 및 / 또는 st_write () 그러나, 그것은 깔끔한 것 패키지이 내장했다. 나는 GDAL의에 따라 계산한다 ,하지만에 GPKG에 대한 _가 형의 옵션이 될 것 같지 않습니다 GDAL .sflayer_options


나는에 대한 간단한 래퍼 함수 쓸 수 st_write()에 있지만 기본적으로 지원 sf또는 rgdal더 나은 될 것입니다.


가능하지 않습니다. 나뿐만 아니라 탐구하게 행복 할 것이다, 김포와 시도 - 그것은 한 가지에 대한 rgdal 이상의 수정을 쉽게
mdsumner

1
SF의 @mdsumner st_write ()는 동일한 결과를 제공합니다. GDAL의 레이어 생성 옵션에 추가 옵션이 없으면 writeOGR () 및 st_write ()의 문제의 원인이라고 생각합니다.
eivindhammers

답변:


10

append플래그를 사용하여이를 수행 할 수 있습니다 sf::st_write().

library(sf)

nc     <- st_read(system.file("shape/nc.shp", package="sf"))
storms <- st_read(system.file("shape/storms_xyz.shp", package="sf"))

st_write(nc,     "nc.gpkg", "nc")
st_write(storms, "nc.gpkg", "storms", append = TRUE)

st_layers("nc.gpkg")
## Driver: GPKG 
## Available layers:
##   layer_name  geometry_type features fields
## 1         nc  Multi Polygon      100     14
## 2     storms 3D Line String       71      0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.