Die übliche Art, wie wir ein Shapefile in R lesen, ist über das maptools-Paket:
sfdata <- readShapeSpatial("/path/to/my/shapefile.shp", proj4string=CRS("+proj=longlat"))
Ich habe jedoch einen Anwendungsfall, bei dem ich kein shapefile.shp habe, sondern stattdessen eine Reihe von Polygonkoordinaten
16.484375 59.736328125,17.4951171875 55.1220703125,24.74609375 55.0341796875,22.5927734375 61.142578125,16.484375 59.736328125
und seine entsprechende Projektion
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
Wie kann ich sfdata (die ein "Polygonobjekt" sein werden) direkt aus diesen Daten "instanziieren"? (ohne auf Umwegen ein Shapefile mit diesen Daten zu erstellen und dann aus dem neu erstellten Shapefile zu lesen)
Um die ausgezeichnete Antwort von Spacedman für den Fall zu vervollständigen, dass Ihre Daten mehrere Polygone enthalten würden, verwenden Sie folgenden Code
dplyr
:Nur zum Spaß können Sie mit dem Diagramm vergleichen, das mit
ggplot2
dem anfänglichen Datenrahmen erhalten wurde:Beachten Sie, dass der obige Code davon ausgeht, dass Sie nur ein Polyogn pro ID haben. Wenn einige IDs disjunkte Polygone hatten, sollte man dem Datensatz vermutlich eine weitere Spalte hinzufügen, zuerst
group_by
die Unter-ID, danngroup_by(upper-id)
statt verwendenrowwise
Gleicher Code mit der
purrr::map
Funktion:quelle