web-dev-qa-db-ja.com

R:ラスターパッケージ内のsfオブジェクトの処理

以前は、クラスSpatial *のシェープファイルで_raster::crop_と_raster::mask_を使用していましたが、_rgal::readOGR_を使用して読み込まれました。

ポリゴンの読み取りと操作にsfを使用するように、スクリプトを「アップグレード」しているだけです。

ラスター::切り抜き

_raster::crop_は、2番目の引数として「extent」オブジェクトを想定しています。これまで、これはSpatial *オブジェクトから自動的に抽出されていました。だから私はraster::crop(raster, polygon)をすることができました。
これをsfオブジェクトで機能させるには、醜い回避策としてraster::crop(raster, as.vector(st_bbox(polygon)))を呼び出すことができます。

ラスター::マスク

_raster::mask_は明らかに_Raster* object or a Spatial* object_を予期しているため、唯一の解決策は、as("Spatial")を使用してsfオブジェクトをSpatial *オブジェクトに強制的に戻すことでした。

この問題はすべてのraster関数に一般化されていると思いますか?私は何かを見落としましたか、それともrasterパッケージが(まだ)sfオブジェクトで機能しない場合ですか?

16
pat-s

将来の参考のために、それは今動作します!これは?cropから少し変更されたサンプルコードで、rasterバージョン2.6-7 でテストされています。 2017-11-13。

library(raster)
library(sf)

r <- raster(nrow=45, ncol=90)
r[] <- 1:ncell(r)

# crop Raster* with sf object
b <- as(extent(0, 8, 42, 50), 'SpatialPolygons')
crs(b) <- crs(r)
b <- st_as_sf(b) # convert polygons to 'sf' object
rb <- crop(r, b)

# mask Raster* with sf object
mb <- mask(r, b)
10
fdetsch

「sf」パッケージの発表 CRANで利用可能は2017年1月に書かれました。
「ラスター」パッケージの最後のリリース は2016年6月でした。

「sf」パッケージは新しすぎて、ラスターパッケージではまだ機能しません。
したがって、今のところ、「醜い回避策」を使用する必要があります...

2