आर में राइटॉग () का उपयोग करके जियोपैकेज के लिए कई परतें लिखना?


11

मैं, आर में एक ही GeoPackage को कई परतों लिखने के लिए कोशिश कर रहा हूँ, लेकिन मैं कोई त्रुटि मिलती है Creation of output file failed। मैंने पढ़ने और लिखने के प्रलेखन के लिए खोज करने की कोशिश की है 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)

जाहिरा तौर पर एक ogr2ogr शेल कमांड है जो चाल (हैट टिप मडसमनर ) करता है, जिसे मैं आर फ़ंक्शन में लपेट सकता हूं। हालाँकि, यह साफ-सुथरा होगा अगर पैकेज में राइटऑर्ग () और / या st_write () का sfनिर्माण किया गया था। मुझे लगता है कि यह GDAL पर निर्भर करता है layer_options, लेकिन GDAL में GPKG के लिए एक एपेंड-टाइप विकल्प प्रतीत नहीं होता है ।


मैं के लिए एक सरल आवरण समारोह लिख सकता है st_write(), लेकिन देशी समर्थन sfया rgdalबेहतर होगा।


संभव नहीं है। एसएफ के साथ प्रयास करें, जिसे मैं भी पता लगाने में खुशी होगी - एक चीज के लिए rgdal से ठीक करना आसान है
mdsumner

1
@ mdsumner st_write () sf में वही परिणाम देता है। मुझे लगता है कि GDAL की परत निर्माण विकल्पों में एक परिशिष्ट विकल्प की कमी, राइटऑर्ग () और st_write () दोनों के लिए समस्या का स्रोत है।
ईविंधमर्स

जवाबों:


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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.