使用R的sf包绘制SADC地图时缺失小岛国数据的技术求助
解决SADC地图缺失小岛国地理数据的问题
1. 手动添加MULTIPOLYGON数据的可行方案
完全可以手动补充这三个国家的几何数据,具体操作和数据来源如下:
- 快速获取缺失数据:使用
rnaturalearth包的高分辨率数据集就能直接拿到这三个小岛国的地理数据,步骤如下:# 安装并加载包 install.packages("rnaturalearth") library(rnaturalearth) # 获取高精度全球国家数据(sf格式) world_high_res <- ne_countries(scale = "large", returnclass = "sf") # 筛选出缺失的三个国家 missing_countries <- world_high_res %>% filter(name_long %in% c("Comoros", "Mauritius", "Seychelles")) %>% select(name_long, geom) # 和现有SADC数据合并 SADC_complete <- rbind(SADC1, missing_countries) plot(SADC_complete) - 手动构建几何数据:如果需要自定义,可获取目标国家的WKT格式几何字符串(从公开地理数据库导出),再转成sf对象:
# 示例:毛里求斯的WKT几何(实际需使用准确数据) mauritius_wkt <- "MULTIPOLYGON(((57.55 -20.32, 57.60 -20.35, 57.58 -20.40, 57.55 -20.32)))" mauritius_sf <- st_as_sf(data.frame(name_long = "Mauritius"), wkt = mauritius_wkt, crs = 4326)
2. 包含完整SADC国家的替代包
推荐几个能覆盖所有SADC国家的地理数据包:
- rnaturalearth:除了用来补全数据,直接使用它的中/高分辨率数据集,就能完整包含小岛国,和sf、ggplot2兼容性极佳。
- giscoR:欧盟官方的地理数据工具包,数据精度高,支持按ISO代码筛选(避免名称匹配错误),示例代码:
install.packages("giscoR") library(giscoR) # SADC国家的ISO 2位代码列表 sadc_iso <- c("AO", "BW", "CD", "SZ", "LS", "MG", "MW", "MZ", "NA", "SC", "ZA", "TZ", "ZM", "ZW") # 获取SADC国家地理数据 SADC_gisco <- gisco_get_countries(country = sadc_iso, resolution = "01", epsg = 4326) plot(SADC_gisco["NAME_ENGL"]) - maps:传统地图包,包含全球小岛国数据,只需转成sf格式即可和现有流程配合:
install.packages("maps") library(maps) library(sf) # 转成sf格式的世界地图 world_map <- st_as_sf(map("world", plot = FALSE, fill = TRUE)) # 筛选SADC国家(注意转小写匹配ID列) SADC_maps <- world_map %>% filter(ID %in% tolower(SADCvector2))
内容的提问来源于stack exchange,提问作者Melike
相关产品推荐
相关产品推荐

