R पैकेज sf से sfc ऑब्जेक्ट को कैसे संयोजित करें


12

आर पैकेज का उपयोग करना sf, sfcवस्तुओं को कैसे संयोजित करता है ? उदाहरण के लिए, निम्नलिखित कोड को देखते हुए, कोई एकल sfcऑब्जेक्ट कैसे बनाएगा sfc12जिसमें दोनों से ज्यामिति शामिल हैं sfc1और sfc2? ( length(sfc12)होना चाहिए 2.)

library(sf)
pt1 = st_point(c(0,1))
pt2 = st_point(c(1,1))
sfc1 = st_sfc(pt1) # An sfc object
sfc2 = st_sfc(pt2) # Another sfc object
# sfc12 = ?

कुछ दृष्टिकोण जो काम नहीं करते हैं:

sf_sfc(sfc1, sfc2) 
# Error in vapply(lst, class, rep("", 3)) : values must be length 3,
# but FUN(X[[1]]) result is length 2

sfc1 + sfc2 # Seems to add the points coordinate-wise.
# Geometry set for 1 feature 
# geometry type:  POINT
# dimension:      XY
# bbox:           xmin: 1 ymin: 2 xmax: 1 ymax: 2
# epsg (SRID):    NA
# proj4string:    NA
# POINT(1 2)

rbind(sfc1, sfc2)
# [,1]     
# sfc1 Numeric,2
# sfc2 Numeric,2

जवाबों:


11

बस cइसके सदिश की तरह उपयोग करें :

> (sfc12 = c(sfc1, sfc2))
Geometry set for 2 features 
geometry type:  POINT
dimension:      XY
bbox:           xmin: 0 ymin: 1 xmax: 1 ymax: 1
epsg (SRID):    NA
proj4string:    NA
POINT(0 1)
POINT(1 1)

और लंबाई 2 है:

> length(sfc12)
[1] 2

1
और आप sfc वस्तुओं की सूची से कई sfc वस्तुओं को कैसे संयोजित करेंगे?
बेरंड वी।

क्या आपने इसे बर्नड हल किया? मुझे इसे करने का सुविधाजनक तरीका भी नहीं मिल रहा है।
मार्को

@ मर्को अगर यह आपके और बर्नड के लिए एक मुद्दा है तो एक नए प्रश्न को एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण के साथ शुरू करें।
Spacedman

6
@ मर्को do.call(c, list(sfc1, sfc2))ने मेरे लिए काम किया।
जोहान्स

1
sfcउपयोग की जाने वाली वस्तुओं की सूची का संयोजन करें Reduce(c, sfcs)याpurrr::reduce(sfcs , c)
ल्यूक1018

3

@ TimSalabim के उत्तर से आरेखण , यदि आपकी sfcवस्तुएँ उसी CRS में हैं, जिसका आप उपयोग कर सकते हैं

do.call(rbind, list(sfc1, sfc2))

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