如何在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经度地理空间对象一起绘制?