1.数据来源
以下两个精细的人口估计数据来源,你可以通过所附链接下载文件(以发表日期为准):
1、欧盟委员会的全球人类居住层(GHSL)测量每个网格单元的人口水平。点击这里查看总体描述,点击这里查看我从其 2023 年报告中使用的空间分辨率为 100 米的特定数据集。
2、我将以德国为例,使用分辨率为 100 米的受限单个国家数据集。点击这里查看列表,点击这里查看德国的数据。
2.全球人口居住可视化
2.1.导入数据!
首先,使用 xarray 软件包解析光栅文件。
import rioxarray
file_path = "GHS_POP_E2030_GLOBE_R2023A_54009_100_V1_0/GHS_POP_E2030_GLOBE_R2023A_54009_100_V1_0.tif"
data_array = rioxarray.open_rasterio(file_path, chunks=True, lock=False)
data_array
该单元的输出是对数据集的详细描述:
2.2.可视化数据片段
我们可以看到,对于大多数标准笔记本电脑来说,这是一个相当具有挑战性的数据量。无论如何,让我们尝试使用 Datashader 将其可视化,这是一款非常方便的工具,适用于如此庞大的地理空间数据集:
import datashader as ds
import xarray as xr
from colorcet import palette
from datashader import transfer_functions as tf
# prepare to plot
data_array_p = xr.DataArray(data_array)[0]
data_array_p = data_array_p.where(data_array_p > 0)
data_array_p = data_array_p.compute()
# get the image size
size = 1200
asp = data_array_p.shape[0] / data_array_p.shape[1]
# create the data shader canvas
cvs = ds.Canvas(plot_width=size, plot_height=int(asp*size))
raster = cvs.raster(data_array_p)
# draw the image
cmap = palette["fire"]
img = tf.shade(raster, how="eq_hist", cmap=cmap)
img
虽然这段代码在技术上看起来没有问题,但我这台配备 16GB 内存的 2021 M1 Macbook Pro 却出现了内存溢出的错误。因此,让我们裁剪图片,查看数据!为此,我沿用了 "架构性能",并将重点放在欧洲。
不过,我稍后要回答的主要问题是,我们如何才能在内存如此有限的情况下,仍然使用本地机器可视化整个地球的数据?等着瞧吧!
import datashader as ds
import xarray as xr
from colorcet import palette
from datashader import transfer_functions as tf
import numpy as np
#