R 패키지 SF에서 SF 객체를 결합하는 방법


12

R 패키지를 사용하면 sf어떻게 sfc객체를 결합 합니까? 예를 들어, 다음 코드가 주어지면 과 ? 모두에서 지오메트리를 포함 하는 단일 sfc객체 sfc12를 어떻게 만들 수 있습니까? (2 여야 함)sfc1sfc2length(sfc12)

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 객체를 어떻게 결합합니까?
Bernd V.

Bernd 문제를 해결 했습니까? 또한 편리한 방법을 찾지 못했습니다.
Marco

@Marco 이것이 귀하와 Bernd에게 문제가된다면 재현 가능한 예를 들어 새로운 질문을 시작하십시오.
Spacedman

6
@Marco do.call(c, list(sfc1, sfc2))가 나를 위해 일했습니다.
johannes

1
또는sfcReduce(c, sfcs)purrr::reduce(sfcs , c)
Luke1018

3

@TimSalabim의 답변 에서 그리기 , sfc객체가 동일한 CRS에 있으면 사용할 수 있습니다

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.