使用R从shapefile中的美国地图中删除离岛

Removing outlying islands from US map in shapefile with R

我从 https://gadm.org/download_country_v3.html 下载了 R(sf) 格式的 0 级美国地图(国家边界)。我绘制了美国边界(0 级)如下:

library(tidyverse) 

us0 <- readRDS("<file.path>\gadm36_USA_0_sf.rds")

ggplot() +
    geom_sf(data = us0, size = 1, color = "steelblue", fill = NA)

生成的图像如下所示

我想去掉离岛A和B,把阿拉斯加从C移到C'。

我尝试从 us0 中提取经度和纬度数据,但未能成功。我在网上搜索但没有找到关于如何在 R 中执行此操作的足够答案。我想知道如何使用 R 从 us0 中提取经度和纬度数据,以便我可以自由删除 A 和 B 并删除 C .谢谢.

使用 raster 包和 geom() 函数,您可以从 RDS 对象中提取原始坐标,以及 island/state 坐标是哪个坐标的一部分以及它是否是固体或孔。 你的情况:

geom(us0)

然后只需找出哪些顶点属于哪些岛屿即可。删除 B 的一种快速方法是删除具有正 x 坐标的所有内容。如果要移动和缩放阿拉斯加,则需要找出哪些对象对应于阿拉斯加。夏威夷的顶部 (i.i.r.c) 低于佛罗里达群岛的底部,因此您也可以移除纬度小于 23 的所有内容。

此外,我怀疑许多夏威夷人会反对将夏威夷称为离岛....