R: преобразовать систему координат SpatialPolygon, которая пересекает долготу (-) 180 - PullRequest
0 голосов
/ 07 сентября 2018

Я создал полигоны с CRS = UTM (см. здесь ), которые мне нужно преобразовать в широту / долготу. Некоторые из моих многоугольников пересекают линию даты, что приводит к преобразованию в создание многоугольника, который пересекает весь земной шар.

library(sp)
library(rgeos)

points <- data.frame(x = c(-179.5, 0), y = c(-50, -30))
coordinates(points) <- ~x+y
proj4string(points) <- '+init=epsg:4326'

points_sp <- spTransform(points, CRS('+init=epsg:32621')) # wrong zone, but ignored for example
# expand point to circle
circles <- gBuffer(points_sp, width = 1e+5)
# transform back to WGS84
circles_latlon <- spTransform(circles, CRS(proj4string(points)))

par(mfrow = c(1, 2))
plot(circles, axes = TRUE, main = 'UTM')
plot(circles_latlon, axes = TRUE, main = 'WGS84')

enter image description here

Есть ли решение для разделения полигонов? Или альтернативное решение, которое решает проблему с датой?

1 Ответ

0 голосов
/ 14 марта 2019

Я только что нашел этот вопрос после того, как спросил аналогичный. Там предложил мне @Humpelstielzchen для использования st_wrap_dateline() из sf -пакета, который, похоже, работает до сих пор.

...