R sf-Objekt zurück in SpatialPolygonsDataFrame konvertieren


27

Wie konvertiere ich ein sf-Objekt zurück in einen SpatialPolygonsDataFrame?

Ich verwende R 3.4.0 und sf Version 0.4.1. In der sf-Dokumentation wird eine as_SpatialFunktion erwähnt, die in meiner Installation jedoch nicht verfügbar ist (aus irgendeinem Grund).


Die Coversion-Methode ist ab sf 0.4-1 verfügbar. Was passiert, wenn Sie versuchen, die Funktion aufzurufen?
Jeffrey Evans

2
as (sf, "Spatial")
mdsumner

@ Jeffrey Evans, Kazuhito Antwort unten repliziert das Problem (und bietet eine teilweise Lösung)
Simon

Antworten:


38

ich benutzte

 as(nc, 'Spatial')

als Teil 2 der Vignette von Edzer Pebesma angegeben (Bildlauf nach unten).


sah es. Allerdings habe ich das erst kürzlich herausgefunden und ich hatte das Bedürfnis, es richtig zu beantworten, als ich diese Frage sah;)
andschar

Und es ist wichtig, dass die akzeptierte Antwort von zukünftigen Lesern nicht übersehen wird.
Kazuhito

1
Für diese wirklich wie ein SPDF- arbeiten, musste ich so etwas tun: tmp <-as(nc, 'Spatial'), dann tmpid <- sapply(slot(tmp, "polygons"), function(x) slot(x, "ID"))dannrow.names(tmp) <- tmpid
Simon

1
Was bedeutet "wirklich wie ein SPDF arbeiten"? Ich sehe keinen Nachteil durch die Umstellung.
Andschar

8

Ich musste sf:::as_Spatial()als Workaround verwenden.

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)

Gibt es eine Möglichkeit, den Datenrahmen intakt zu halten?
Simon

Ausführen as(sf, "Spatial")von @mdsumner bestätige ich , es produziert SpatialPolygonsDataFrame, die für Ihre Anforderung besser ist. Es scheint, dass as_Spatial()nur sfc (dh Geometrie) benötigt wird.
Kazuhito

1
Diese Funktion ist eine Methode und soll mit as () aufgerufen werden. Es wird nicht als Funktionsobjekt exportiert. Um es direkt aufzurufen, benötigen Sie ":::".
Jeffrey Evans
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.