Tak więc zwykły sposób, w jaki czytamy plik kształtu w R, odbywa się za pomocą pakietu maptools, takiego jak to:
sfdata <- readShapeSpatial("/path/to/my/shapefile.shp", proj4string=CRS("+proj=longlat"))
Mam jednak przypadek użycia, w którym nie mam pliku shapefile.shp, ale zamiast tego mam szereg współrzędnych wielokąta
16.484375 59.736328125,17.4951171875 55.1220703125,24.74609375 55.0341796875,22.5927734375 61.142578125,16.484375 59.736328125
i odpowiadający mu rzut
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
Jak „utworzyć instancję” sfdata (która będzie „obiektem wielokąta”) bezpośrednio z tych danych? (bez wchodzenia w okrężny sposób tworzenia pliku kształtu z tymi danymi, a następnie czytania z nowo utworzonego pliku kształtu)
Aby wypełnić doskonałą odpowiedź Spacedman dla przypadku, w którym dane zawierają wiele wielokątów, oto kod wykorzystujący
dplyr
:Dla zabawy możesz porównać z fabułą uzyskaną przy
ggplot2
użyciu początkowej ramki danych:Zauważ, że powyższy kod zakłada, że masz tylko jeden polyogn na identyfikator. Jeśli niektóre identyfikatory miały rozłączne wielokąty, myślę, że należy dodać kolejną kolumnę w zestawie danych, najpierw
group_by
sub-id, a następnie użyćgroup_by(upper-id)
zamiastrowwise
Ten sam kod za pomocą
purrr::map
funkcji:źródło