R의 단순 기능에서 간단한 기능 (sfg 및 sfc)


20

lon-lat 포인트를 단순 피쳐 (sfg)로 변환 한 다음 단순 피쳐 콜렉션 (sfc)에 넣을 수 있습니까?

작동하지 않지만 가장 근접한 MWE가 있습니다.

library(data.table)
library(sf)
# The DT data.table is the data I have (but 10,000s of rows, each row is a point)
DT <- data.table(
    place=c("Finland", "Canada", "Tanzania", "Bolivia", "France"),
    longitude=c(27.472918, -90.476303, 34.679950, -65.691146, 4.533465),
    latitude=c(63.293001, 54.239631, -2.855123, -13.795272, 48.603949),
    crs="+proj=longlat +datum=WGS84")
DT[, rowid:=1:.N]
# The following two rows do not work
DT[, place.sfg:=st_point(x=c(longitude, latitude), dim="XY"), by=rowid]
places.sfc <- st_sfc(DT[, place.sfg], crs=DT[, crs])
# This should result in five points, which it doesn't
plot(places.sfc)

Simple Features (라이브러리 sp를 사용하지 않는 이유)를 배우려고하고 나중에 sfc에서 st_buffer를 실행해야합니다.

포인트 당 sfg없이 sfc를 직접 만드는 것이 더 좋을까요?

나는 속도 이유 (지리적 측면없이 분석되는 10,000,000 점)에 data.table을 사용합니다.

나는 MULTIPOINT-sfg가 아닌 sfc-sfg 포인트가 필요하다고 생각합니다.


SO에 비슷한 질문이 있습니다 : stackoverflow.com/questions/29736577/…
andschar

답변:


32

객체 (sp, dataframe , ...)를 sf 객체 로 변환하는 st_as_sf () 를 사용해 보셨습니까 ?

library(data.table)
library(sf)
# your data (removed crs column)
DT <- data.table(
                 place=c("Finland", "Canada", "Tanzania", "Bolivia", "France"),
                 longitude=c(27.472918, -90.476303, 34.679950, -65.691146, 4.533465),
                 latitude=c(63.293001, 54.239631, -2.855123, -13.795272, 48.603949))
# st_as_sf() ######
# sf version 0.2-7
DT_sf = st_as_sf(DT, coords = c("longitude", "latitude"), 
                 crs = 4326, relation_to_geometry = "field")
# sf version 0.3-4, 0.4-0
DT_sf = st_as_sf(DT, coords = c("longitude", "latitude"), 
                 crs = 4326, agr = "constant")
plot(DT_sf)

[업데이트] cengel에 의해 언급 된 바와 같이,이 패키지의 빠른 개발을 따라가는 것이 중요합니다.


2
이 코드를 실행하면 오류가 발생합니다.Error in st_sf(x, ..., agr = agr) : no simple features geometry column present
cengel

2
@cengel 고맙습니다. 이 답변 (2017 년 1 월)을 게시했을 때 sf 패키지 의 버전 은 0.2-7이며 relation_to_geometry 인수 를 사용했습니다 . 최신 sf (0.3-4 : 2017 년 3 월)에서 귀하의 의견에 오류가 있음을 확인합니다. 이제 논증은 agr 이어야합니다 (@ jeffrey-evans의 논평).
Kazuhito
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.