So exportieren Sie ein Dataset mit "SpatialPolygonsDataFrame" als Shapefile

12

Wie exportiere ich räumliche Datensätze in R, z. B. einen tornadosDatensatz im GISToolsPaket, als Shapefile mit genau demselben räumlichen Bezug und den genauen Werten?

library(GISTools)

data(tornados)

Gewünscht:

  • "SpatialPolygonsDataFrame" zu "Shapefile"
  • "(Forced) SpatialPointsDataFrame" zu "Shapefile"
  • "(Nicht erzwungen) SpatialPointsDataFrame" zu "Shapefile"
  • "SpatialLinesDataFrame" zu "Shapefile".
Mokhless
quelle
1
rgdal::writeOGR
hrbrmstr
Was bedeutet Forced hier?
Mdsumner
Ich bin nicht sicher, was "Forced" bedeutet, aber ich habe es in der "GISTools" -Dokumentation unter dem Tornado-Datentyp gefunden.
Mokhless

Antworten:

16

Wesleys Antwort ist richtig. Um die Tornado-Daten gezielt zu exportieren, müssen Sie Folgendes tun:

library(GISTools)
library(rgdal)
data(tornados)

writeOGR(obj=torn, dsn="tempdir", layer="torn", driver="ESRI Shapefile") # this is in geographical projection

writeOGR(obj=torn2, dsn="tempdir", layer="torn2", driver="ESRI Shapefile") # this is in equal area projection

Für R werden diese beiden Datensätze einfach als SpatialPointsDataFrames behandelt.

> class(torn)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"

> class(torn2)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
cengel
quelle
8

Beachten Sie, dass das maptoolsPaket auch eine Funktion enthält , um dies zu erreichen, nämlich writeSpatialShape:

library(maptools)
writeSpatialShape(torn, "torn").

Siehe ?writeSpatialShapefür Optionen.

MichaelChirico
quelle
2
Diese Funktion speichert die proj4string-Informationen nicht.
Jeffrey Evans
@ JeffreyEvans: Gibt es eine Möglichkeit, das zu bestehen? Vielleicht ordnen Sie es dem GIS-Paket zu, das es verwenden wird.
Val
@val nur verwendenwriteOGR
MichaelChirico
@ MichaelChirico: Danke, aber hier habe ich angefangen und das Problem ist, dass es zu einem Fehler abgeschnitten wird ... doppelte Felder. Es gibt Beiträge darüber.
Val
6

Sie sollten sich das Paket rgdal ansehen , insbesondere die writeOGRFunktion.

Zum Beispiel habe ich heruntergeladen zunächst die 110m-Resolution „Staaten und Provinzen“ Shape - Dateien von Natural Earth , Auspacken sie ~/scratch/ne_110m_admin_1_states_provinces. Ich habe sie in R gelesen über:

library(rgdal)
setwd("~/scratch")
states <- readOGR(dsn="ne_110m_admin_1_states_provinces",
    layer="ne_110m_admin_1_states_provinces")

Zu diesem Zeitpunkt ist das Objekt statesa SpatialPolygonsDataFrame. Jetzt erstelle ich ein neues Verzeichnis (" tempdir") und speichere dort die Shapefiles:

dir.create("tempdir")
writeOGR(obj=states, dsn="tempdir", layer="states", driver="ESRI Shapefile")

Die Formen werden jetzt im Verzeichnis gespeichert ~/scratch/tempdir, z. B. in den Dateien files.shp usw. Sie können dasselbe mit a tun. Sehen Sie sich SpatialPointsDataFramenur das erste Beispiel in der Dokumentation der writeOGRFunktion an.

Wesley
quelle
4
library(raster)
shapefile(tornados, filename='path/to/file.shp')

Stellen Sie sicher, dass Sie über die Berechtigung zum Schreiben in das Verzeichnis verfügen (oder sich selbst diese erteilt haben).

Momchill
quelle