You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中下载读取WorldPop越南TIFF数据并计算性别比?

在R中处理WorldPop越南2000年分年龄性别网格数据

1. 安装并加载必备工具包

先搞定地理空间和数据处理的基础包:

# 首次运行安装依赖
install.packages(c("raster", "sf", "downloader", "dplyr", "giscoR"))

# 加载包
library(raster)
library(sf)
library(downloader)
library(dplyr)
library(giscoR)

2. 下载目标栅格数据

你指定的数据集是5岁年龄组的1km分辨率人口数据,20岁属于20-24岁分组,直接下载对应男女数据:

# 创建本地存储文件夹
dir.create("worldpop_vnm", showWarnings = FALSE)

# 下载2000年越南20-24岁男性/女性人口栅格
download(
  url = "https://data.worldpop.org/GIS/AgeSexDistribution/Global_2000_2020/1km/2000/VNM/VNM_male_2000_4.tif",
  destfile = "worldpop_vnm/VNM_male_2000_20-24.tif"
)
download(
  url = "https://data.worldpop.org/GIS/AgeSexDistribution/Global_2000_2020/1km/2000/VNM/VNM_female_2000_4.tif",
  destfile = "worldpop_vnm/VNM_female_2000_20-24.tif"
)

3. 读取栅格并提取网格人口数据

把TIFF栅格转成结构化数据,每个行对应一个网格的坐标和人口数:

# 读取栅格文件
male_raster <- raster("worldpop_vnm/VNM_male_2000_20-24.tif")
female_raster <- raster("worldpop_vnm/VNM_female_2000_20-24.tif")

# 转成数据框并合并男女数据
grid_pop <- as.data.frame(male_raster, xy = TRUE) %>%
  rename(male_pop = VNM_male_2000_4) %>%
  inner_join(
    as.data.frame(female_raster, xy = TRUE) %>% rename(female_pop = VNM_female_2000_4),
    by = c("x", "y")
  ) %>%
  filter(!is.na(male_pop) & !is.na(female_pop)) # 过滤无人口的网格

现在grid_pop就是包含每个网格坐标、男性人口、女性人口的数据集。

4. 聚合到行政区划计算性别比

用官方行政区划数据,把网格数据聚合到省级,计算分地区性别比:

# 获取越南省级行政区划(转成和栅格一致的坐标系)
vnm_provinces <- gisco_get_countries(country = "VNM", resolution = "10") %>%
  st_transform(crs = crs(male_raster))

# 将网格数据转成空间点,匹配到对应省份
grid_with_province <- st_as_sf(grid_pop, coords = c("x", "y"), crs = crs(male_raster)) %>%
  st_join(vnm_provinces, join = st_within)

# 按省份聚合计算性别比(每100名女性对应的男性数量)
province_gender_ratio <- grid_with_province %>%
  as.data.frame() %>%
  group_by(NAME_EN) %>% # NAME_EN是省份英文名,用NAME_VN可获取越南语名称
  summarise(
    total_male = sum(male_pop, na.rm = TRUE),
    total_female = sum(female_pop, na.rm = TRUE),
    gender_ratio = round((total_male / total_female) * 100, 2)
  ) %>%
  ungroup()

# 查看结果
print(province_gender_ratio)

新手注意点

  • 所有空间数据必须使用相同坐标系,不然空间匹配会出错
  • WorldPop栅格默认是WGS84坐标系(EPSG:4326),转坐标系时用这个参数即可
  • 如果需要县级数据,把gisco_get_countries换成gisco_get_adm(country = "VNM", level = 2)

内容的提问来源于stack exchange,提问作者anrisakaki96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:27:39