Создание полигонов, которые пересекают линию даты в R - PullRequest
1 голос
/ 08 марта 2019

Как создать и построить полигоны, пересекающие международную линию дат в R?

Я считаю, что следующий код создает многоугольник, который пересекает линию даты. Этот код использует стандартные значения долготы 180 градусов (+ значения для Востока, - значения для Запада). К сожалению, это не имеет ожидаемой формы при нанесении на график.

# long and lat values
x <- c(-130, 120, -140, -90, -130)
y <- c(30, 30, 50, 80, 30)

# create SpatialPolygons object
p1 = Polygons(list(Polygon(cbind(x, y))), "p1")
sp1 <- SpatialPolygons(list(p1))

# plot
plot(sp1, col = "red")

Я могу получить ожидаемую форму, преобразовав все значения долготы в градусы к востоку следующим образом:

# convert lat/lon to degrees East
convert_180_to_360.f <- function(longitude_value){
  ifelse(longitude_value < 0, longitude_value + 360, longitude_value)
}

x360 <- convert_180_to_360.f(x)

# create SpatialPolygons object
p2 <- Polygons(list(Polygon(cbind(x360, y))), "p2")
sp2 <- SpatialPolygons(list(p2))

# plot
plot(sp2, col = "red")

Однако этот многоугольник не может быть нанесен на график с другими пространственными данными, основанными на +/- 180 градусах широты.

library(maptools)

# get world map
data(wrld_simpl)

# plot map and polygon
plot(wrld_simpl)
plot(sp2, add = T, col = "red")

Есть ли способ сгенерировать многоугольник, чтобы форма была правильной, и ее можно было построить с помощью других стандартных геопространственных объектов с долготой +/- 180 °?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...