我有一个世界国家数据集,想在本初子午线上拆分它,并将数据重新集中在太平洋上。
我正在尝试使用简单功能 (sf) 来执行此操作,但遇到了一个我无法解决的对象类型问题。
为了拆分数据,我尝试了以下操作:
st_wg84 <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
# world country layer
sfpolys <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
%>% st_sfc(crs = st_wg84 )
# shift central/prime meridian towards west
shift <- 152
# create "split line" to split worldmap (split at Prime Meridian)
split.line <- st_linestring(
x = cbind(matrix(shift-180, 181, 1), matrix(-90:90,181,1))
) %>%
st_sfc(crs=st_wg84)
# split country polygons along prime meridian
sfpolys.split <- lwgeom::st_split(sfpolys, split.line)
Run Code Online (Sandbox Code Playgroud)
哪个有效,产生一个GEOMETRYCOLLECTION对象,沿着所需的线分割,包含与传入的相同数量的特征MULTIPOLYGON。
接下来,我需要移动坐标以使地图重新居中,为此我必须将多边形坐标转换为数据框。
countries <- …Run Code Online (Sandbox Code Playgroud)