Итак, обычный способ, которым мы читаем шейп-файл в R, - это пакет maptools, например:
sfdata <- readShapeSpatial("/path/to/my/shapefile.shp", proj4string=CRS("+proj=longlat"))
Тем не менее, у меня есть сценарий использования, при котором у меня нет shapefile.shp, но вместо этого у меня есть ряд многоугольных координат
16.484375 59.736328125,17.4951171875 55.1220703125,24.74609375 55.0341796875,22.5927734375 61.142578125,16.484375 59.736328125
и его соответствующая проекция
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
Как мне "создать" sfdata (который будет "объектом многоугольника") непосредственно из этих данных? (без обходного пути создания шейп-файла с этими данными и последующего чтения из вновь созданного шейп-файла)
Чтобы завершить отличный ответ Spacedman для случая, когда ваши данные будут содержать несколько полигонов, вот код, использующий
dplyr
:Просто для удовольствия, вы можете сравнить с графиком, полученным с
ggplot2
использованием исходного фрейма данных:Обратите внимание, что в приведенном выше коде предполагается, что у вас есть только один polyogn для каждого идентификатора. Если у некоторых идентификаторов были непересекающиеся многоугольники, я думаю, что нужно добавить еще один столбец в набор данных, сначала
group_by
субидид, а затем использоватьgroup_by(upper-id)
вместоrowwise
Тот же код, используя
purrr::map
функции:источник