Использование ggOceanMaps для построения графиков с обеих сторон линии 180 дат

#r #ggplot2 #maps

Вопрос:

Я пытаюсь создать карту Новой Зеландии и островов Чатем, подобную этой, специально используя пакет ggOceanMaps (до н. э. Мне нужен этот стиль батиметрии) и базовые карты функций().

Однако эта функция не позволяет мне перейти по линии дат. Есть ли что-нибудь вокруг этого?

Это код, который у меня есть:

 install.packages(c("ggOceanMapsData", "ggOceanMaps"), 
                 repos = c("https://cloud.r-project.org", "https://mikkovihtakari.github.io/drat")
)
library(ggOceanMaps)

nzmap1<-basemap(limits = c(165, 180, -32, -51), bathymetry = TRUE,resolution = "high",
               land.col="darkseagreen4",lon.interval = 5,lat.interval = 5) 
               xlab("Longitude") ylab("Latitude")
nzmap1
 

Таким образом, он отлично работает от 165 до 180 градусов долготы, но если я попытаюсь выйти за пределы 180/-180 (в идеале я хотел бы перейти к -170), он выдает код ошибки:

 Error in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y,  : 
  polygon edge not found
 

Спасибо,
Тори

Ответ №1:

Выбранные вами ограничения приводят к десятичной степени CRS. Когда десятичные градусы отображаются в двух декартовых измерениях, карты не могут быть нанесены по антимеридиану без изменения определения CRS (шаг от 180 до -180 не является непрерывным и, следовательно, не может быть нанесен на ось x без изменения масштаба).

Чтобы решить эту проблему, вы можете использовать стереографическую проекцию Антарктики:

 library(ggOceanMaps)

packageVersion("ggOceanMaps")
#> [1] ‘1.1.10’

basemap(limits = c(165, -170, -32, -51), shapefiles = "Antarctic",
        bathymetry = TRUE, lon.interval = 5, rotate = TRUE)

#> Using lon and lat as longitude and latitude columns, respectively.
#> projection transformed from EPSG:4326 to  proj=stere  lat_0=-90  lat_ts=-71  lon_0=177.5  x_0=0  y_0=0  datum=WGS84  units=m  no_defs
#> Warning message:
#> In sp::proj4string(eval(parse(text = shapefiles$land))) :
#>  CRS object has comment, which is lost in output
 

введите описание изображения здесь

Подробнее читайте здесь