Cara menggabungkan objek sfc dari paket R sf


12

Menggunakan paket R sf, bagaimana cara menggabungkan sfcobjek? Misalnya, diberi kode berikut, bagaimana cara membuat sfcobjek tunggal sfc12yang menyertakan geometri dari keduanya sfc1dan sfc2? ( length(sfc12)seharusnya 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 = ?

Beberapa pendekatan yang tidak berhasil:

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

Jawaban:


11

Cukup gunakan cseperti vektornya:

> (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)

Dan panjangnya 2:

> length(sfc12)
[1] 2

1
dan bagaimana Anda menggabungkan banyak objek sfc misalnya dari daftar objek sfc?
Bernd V.

Apakah Anda mengatasinya Bernd? Saya juga tidak menemukan cara yang nyaman untuk melakukannya.
Marco

@ Marco jika ini merupakan masalah bagi Anda dan Bernd, maka mulailah pertanyaan baru dengan contoh yang dapat direproduksi.
Spacedman

6
@Marco do.call(c, list(sfc1, sfc2))bekerja untuk saya.
johannes

1
Gabungkan daftar sfcobjek menggunakan Reduce(c, sfcs)ataupurrr::reduce(sfcs , c)
Luke1018

3

Menggambar dari jawaban @ TimSalabim , jika sfcobjek Anda berada di CRS yang sama yang dapat Anda gunakan

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.