RのLon-LatからSimpleフィーチャー(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)

私はシンプルな機能を学習しようとしています(これがライブラリspを使用したくない理由です)。後でsfcでst_bufferを実行する必要があります。

ポイントごとにsfgを使用せずに、sfcを直接作成した方が良いでしょうか?

私はdata.tableを速度の理由に使用します(数十万のポイントも地理的側面なしで分析されます)。

私はsfgポイントのsfcが必要であり、MULTIPOINT-sfgは必要ないと思います。


:同様の質問がSOに頼まれたstackoverflow.com/questions/29736577/...
andschar

回答:


32

オブジェクト(sp、データフレームなど)を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がコメントしたとおり)。
和人
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.