创建与R中的日期线交叉的多边形

时间:2019-03-08 02:03:26

标签: r gis geospatial polygon

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

0 个答案:

没有答案