求助:如何用R包获取各国质心坐标以制作双变量地图
获取世界各国质心坐标的R实现方案
以下是用R的sf和rnaturalearth包获取世界地图数据并生成各国质心坐标数据框的步骤:
- 安装并加载依赖包
# 首次运行需安装 install.packages(c("sf", "rnaturalearth")) # 加载包 library(sf) library(rnaturalearth)
- 获取世界国家边界数据
# 获取中等分辨率的国家边界,返回sf格式数据 world_countries <- ne_countries(scale = "medium", returnclass = "sf")
- 计算各国质心(非简单几何中心,考虑地理特性)
# 计算质心,针对多岛屿国家取最大多边形的质心 world_centroids <- st_centroid(world_countries, of_largest_polygon = TRUE)
- 提取坐标并生成普通数据框
# 提取经纬度,筛选所需字段并移除几何属性 world_centroids_df <- world_centroids %>% mutate( lon = st_coordinates(.)[,1], lat = st_coordinates(.)[,2] ) %>% select(name, lon, lat) %>% st_drop_geometry()
- 查看结果
head(world_centroids_df)
补充说明
- 调整
ne_countries的scale参数可切换分辨率:"small"(低)、"medium"(中)、"large"(高),按需选择; - 若需要人口加权质心,可结合各国人口统计数据,通过加权计算得到更贴合实际人口分布的质心;
- 生成的
world_centroids_df就是包含国家名称、经度、纬度的数据框,可直接用于后续绘制圆形的操作。
内容的提问来源于stack exchange,提问作者AYda
相关产品推荐
相关产品推荐

