R sfオブジェクトをSpatialPolygonsDataFrameに戻す


27

sfオブジェクトをSpatialPolygonsDataFrameに戻すにはどうすればよいですか?

R 3.4.0およびsfバージョン0.4.1を実行しています。SFのドキュメントには言及してas_Spatial機能を、これは私の(何らかの理由で)インストールでは使用できません。


強制メソッドはsf 0.4-1で使用可能です。関数を呼び出そうとするとどうなりますか?
ジェフリーエヴァンス

2
as(sf、「空間」)
mdsumner

@ジェフリー・エヴァンス、以下の和人の答えは問題を再現します(そして部分的な慰めを提供します)
サイモン

回答:


38

使った

 as(nc, 'Spatial')

ビネットの一部2 Edzer Pebesmaによって(ページの一番下へスクロール)を示しました。


見た。しかし、私は最近これを理解し、この質問を見たときに適切な答えにしたい衝動を感じました;)
andschar

そして、受け入れられた答えが将来の読者によって見過ごされないことが重要です。
和人

1
:これは本当にSPDFのように機能するためには、私のような何かを行うために必要なtmp <-as(nc, 'Spatial')、その後、tmpid <- sapply(slot(tmp, "polygons"), function(x) slot(x, "ID"))その後、row.names(tmp) <- tmpid
サイモン

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()を使用して呼び出す必要があります。関数オブジェクトとしてエクスポートされないため、直接呼び出すには「:::」が必要です。
ジェフリーエヴァンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.