Найти центр полигонов с помощью dplyr - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю карту с линиями дуг, соединяющими графства в американском штате Миссури.Я рассчитал «достаточно хорошие» центры каждого графства, взяв среднее значение длинного / лат каждого многоугольника.Это хорошо работает для округов с более или менее квадратной формой, но в меньшей степени для округов с более сложной формой.Я думаю, что это должно быть обычным явлением, но я не могу найти ответ в Интернете или с помощью любой функции, которую я создал.Я хотел бы использовать рабочий процесс по принципу Tidyverse (т.е. не преобразовывать в пространственные объекты, если я могу помочь).Есть ли какие-либо решения проблемы под рукой.

Вы можете увидеть проблему в примерах ниже.

library(tidyverse)

# import all state/county fortified
all_states <- as_tibble(map_data('county'))

# filter for missouri
mo_fortify <- all_states %>%
  filter(region == 'missouri')

## Pull Iron county, which is relatively oddly shaped
mo_iron_fortify <- mo_fortify %>% 
 group_by(subregion) %>% 
  mutate(long_c =  mean(long),
         lat_c = mean(lat),
         iron = ifelse(subregion == 'iron','Iron','Others')) %>% 
  ungroup()  

# map a ggplot2 map
mo_iron_fortify %>% 
  ggplot(aes(long, lat, group = group))+
  geom_polygon(aes(fill = iron), 
               color = 'white')+
  geom_point(aes(long_c, lat_c))+
  scale_fill_grey('Iron county is\na good example')+
  coord_map()+
  theme_bw()

Example from code above

...