R SF 객체를 SpatialPolygonsDataFrame으로 다시 변환


27

sf 객체를 SpatialPolygonsDataFrame으로 다시 변환하는 방법은 무엇입니까?

R 3.4.0 및 sf 버전 0.4.1을 실행 중입니다. 김포 문서는 언급 as_Spatial기능을하지만 내가 (어떤 이유로) 설치에 사용할 수 없습니다.


강제 방법은 sf 0.4-1에서 사용할 수 있습니다. 함수를 호출하려고 할 때 어떤 문제가 발생합니까?
Jeffrey Evans

2
as (sf, "Spatial")
mdsumner

@Jeffrey Evans, Kazuhito의 아래 답변은 문제를 재현합니다 (일부 해결 방법 제공)
Simon

답변:


38

나는 사용했다

 as(nc, 'Spatial')

같은 네트 부분의 2 Edzer Pebesma 의해이 (페이지 아래로 이동)를 나타내었다.


그것을 봤다. 그러나 나는 최근에 이것을 알아
냈고이

그리고 미래의 독자들이 받아 들여지는 대답을 간과하지 않는 것이 중요합니다.
Kazuhito

1
이것이 실제로 SPDF처럼 작동하기 위해서는 다음과 같은 작업이 필요했습니다.tmp <-as(nc, 'Spatial')tmpid <- sapply(slot(tmp, "polygons"), function(x) slot(x, "ID"))row.names(tmp) <- tmpid
Simon

1
'SPDF와 같이 실제로 작동'한다는 것은 무엇을 의미합니까? 전환으로 인한 단점은 없습니다.
andschar

8

sf:::as_Spatial()해결 방법 으로 사용해야 했습니다.

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

# sf -> sp
nc_sp <- as_Spatial(nc$geom)      # Error: could not find function "as_Spatial"

nc_sp <- sf:::as_Spatial(nc$geom) # This works

library(sp)
plot(nc_sp)

데이터 프레임을 그대로 유지하는 방법이 있습니까?
사이먼

as(sf, "Spatial")@mdsumner 실행 하면 SpatialPolygonsDataFrame이 생성되므로 요구 사항에 더 좋습니다. 보인다 as_Spatial()SFC (즉 기하학) 만합니다.
카즈 히토

1
이 함수는 메소드이며 as ()를 사용하여 호출해야합니다. 함수 객체로 내보내지지 않기 때문에 직접 호출하려면 ":::"가 필요합니다.
Jeffrey Evans
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.