Я пытаюсь построить перепроецированную карту мира, используя данные из пакета cshapes
и sp::spTransform
, но проекция приводит к искаженным графикам. Как правильно перепроектировать и построить cshapes
карту?
Вот пример, который показывает, что карта сама по себе отображает график (код адаптирован из это сообщение в блоге):
library("cshapes")
library("ggplot2")
library("rgdal")
wmap <- cshp(date=as.Date("2012-06-30"))
wmap_df <- fortify(wmap)
ggplot(wmap_df, aes(long,lat, group=group)) +
geom_polygon() +
labs(title="World map (longlat)") +
coord_equal()
ggsave("~/Desktop/map1.png", height=4, width=7)
А вот искаженная версия, когда я перепроецирую Робинсону:
wmap_robin <- spTransform(wmap, CRS("+proj=robin"))
wmap_df_robin <- fortify(wmap_robin)
ggplot(wmap_df_robin, aes(long,lat, group=group)) +
geom_polygon() +
labs(title="World map (robinson)") +
coord_equal()
ggsave("~/Desktop/map2.png", height=4, width=7)
Дополнительная информация:
- Я знаю, что есть и другие источники данных о границах страны, но мне нужны карты, отражающие изменения границ страны, что
cshapes
делает. - Я предполагаю, что проблема связана с проблемами с лежащими в основе полигонами карты, но я понятия не имею, с чего начать поиск, и, вероятно, лучше спросить, что я хочу получить в итоге, а не как исправить догадку.
- Проблема не в
ggplot2
, построение карты с базовой графикой показывает те же искажения (plot(wmap_robin)
).