Я пытаюсь составить некоторые базовые концепции с отображением пространственных данных в R. Я начал с землетрясений, чтобы получить несколько простых данных для тестирования.Сначала я загрузил базу данных о землетрясениях по этой ссылке:
https://www.ngdc.noaa.gov/nndc/struts/results?type_0=Exact&query_0=$ID&t=101650&s=13&d=189&dfn=signif.txt
Затем запустил следующий код для очистки / организации этого набора данных:
library(dplyr)
library(tmap)
library(sf)
earthquake<-read.table("signif.txt",sep="\t",header=TRUE,fill=TRUE) %>% filter(!is.na(LATITUDE) & !is.na(LONGITUDE)) %>% st_as_sf(coords=c("LONGITUDE","LATITUDE"))
Затем запустил следующеекод для отображения карты всех землетрясений магнитудой 9 и более:
tmap_mode("view")
tm_shape(earthquake %>% filter(EQ_PRIMARY > 9))+tm_bubbles(size = "EQ_PRIMARY",col="red",popup.vars=c("EQ_PRIMARY"))
Я получаю это сообщение об ошибке, поскольку я никогда не назначал проекцию на данные: Currect projection of shape earthquake %>% filter(EQ_PRIMARY > 9) unknown. Long-lat (WGS84) is assumed.
Это нормально, и я получаю прикрепленную картинку:
Проблема заключается в том, что величина этого землетрясения на Аляске на самом деле составляет 9,2, тогда как сила южного в Чили составляет 9,5,все же круг Аляски заметно больше!Значки пузырьков дальше от экватора проецируются и искажаются под проекцией Меркатора.
Поэтому я пытаюсь изменить проекцию моих данных на LAEA:
st_crs(earthquake)<-"+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs "
Но теперь, когда я бегута же карта, что и выше, круги отображаются в правильном размере, но базовая карта не отображается, так как я полагаю, что tmap не имеет базовой карты LAEA?Вот где я заблудился.
В качестве идентификатора это не проблема для режима печати, поскольку я, очевидно, могу поместить свой собственный слой под этимразделяет ту же проекцию и все денди.Моя путаница возникает во взаимодействии с листовкой.
Какое здесь решение?Я хотел бы использовать красивую карту Меркатора, потому что она выглядит красиво, но я не хочу, чтобы такие вещи, как символы, искажались ею.Нужно ли определять новый столбец размера, чтобы противодействовать искажению Меркатора, например earthquake %>% mutate(EQ_PRIMARY1 = EQ_PRIMARY / (abs(LATITUDE)+1))
, но заменить его фактической исследуемой функцией, которая будет противодействовать эффекту размера?Это распространенная проблема в этой области, или этот пакет просто не работает правильно?