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

如何从GHSL人口数据提取两万全球经纬度点的人口密度?

用GHSL数据为经纬度点匹配人口密度的可行方案

GHSL(全球人类住区层)的人口栅格数据完全能满足你的需求——它覆盖全球范围,提供不同精度(30米到1公里)的人口数量栅格,通过简单计算就能得到人口密度,适配你的20000条经纬度记录。

具体实现步骤:

  1. 获取GHSL人口数据

    • 下载对应年份、分辨率的GHS-POP数据集,数据为GeoTIFF格式,每个栅格单元存储对应区域的人口总数。
    • 人口密度可通过栅格面积计算:比如1公里分辨率的栅格对应1平方公里,直接用人口数除以1即可得到人/平方公里的密度;30米分辨率栅格面积为0.0009平方公里,需对应调整除数。
  2. 预处理你的DataFrame
    把普通DataFrame转为GeoDataFrame,确保坐标系为WGS84(EPSG:4326),和GHSL数据一致:

    import geopandas as gpd
    from shapely.geometry import Point
    
    # 假设你的经纬度列名为'lat'和'lon'
    gdf = gpd.GeoDataFrame(
        your_dataframe,
        geometry=gpd.points_from_xy(your_dataframe.lon, your_dataframe.lat),
        crs="EPSG:4326"
    )
    
  3. 提取栅格人口值并计算密度
    用rasterstats工具快速匹配每个点对应的栅格值:

    from rasterstats import point_query
    
    # 替换为你的GHSL栅格文件路径
    pop_raster_path = "ghsl_population.tif"
    
    # 提取每个点所在栅格的人口数
    gdf['total_pop'] = point_query(
        geometries=gdf.geometry,
        raster=pop_raster_path,
        interpolate='nearest'
    )
    
    # 以1公里分辨率为例,计算人口密度
    gdf['pop_density'] = gdf['total_pop'] / 1  # 单位:人/平方公里
    

注意事项

  • 若点落在海洋等无数据区域,提取结果会是NaN,可根据需求填充0或标记为无效值。
  • 20000条数据的处理速度极快,无需担心性能问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:36:03