目录
1. 背景
基于全球水文模型的计算需求,我花费接近一周的时间自学了PCR-GLOBWB模型,期间走了不少弯路,也学习到了很多知识,最终顺利运行了该模型,得到了较为满意的输出结果。现将学习过程整理如下,供大家参考。
2. PCR-GLOBWB介绍
PCR-GLOBWB模型是一种广泛使用的全球水文模型(Global Hydrological Model, GHM),能够对陆地水储量及其各个分量,以及产汇流过程进行高精度的模拟。相比于陆面模型(Land Surface Model, LSM),GHM在模拟地表水、地下水以及人类用水等方面有着显著的优势,这也是我学习它的主要原因。
更多内容参考:Global Hydrology | PCR-GLOBWB 2.0
3. PCR-GLOBWB下载与运行
3.1 下载
模型下载:模型
输入数据下载:输入数据
我们将它们解压,并放到同一文件夹下,如图所示。
3.2 Python环境配置
PCR-GLOBWB2以软件包的形式发布,只需要运行相应的文件即可。模型使用Python编写,运行前须确保安装了Python环境,官方推荐使用miniconda,我们尝试使用miniconda安装Python环境,并安装模型运行必须的模块。
3.2.1 miniconda安装Python环境
进入miniconda官网:Miniconda — conda documentation,在"Windows installers"栏中选择合适的版本,我选择的是Python3.9,下载并安装;同时,参考windows下安装miniconda详细教程_JessieZeng aaa的博客-CSDN博客_windows miniconda,我们将三个路径添加到环境变量中。这时,点击"Windows"键,出现这两个软件,即证明安装成功。
3.2.2 miniconda安装模块
打开软件Anaconda Prompt (miniconda3),进入PCR-GLOBWB_model-master\conda_env文件夹:
输入:
conda env create --name pcrglobwb_python39 -f pcrglobwb_py3_standard.yml
即可安装一个名为pcrglobwb_python39的python环境,并根据文件pcrglobwb_py3_standard.yml的内容,安装numpy、python-dateutil、zlib、pcraster等必须的模块。如下图所示,即证明安装成功。
注意,这时如果使用了代理VPN,可能会出现报错:ProxyError: Conda cannot proceed due to an error in your proxy configuration. Check for typos and other configuration errors in any ‘.netrc’ file in your home directory, any environment variables ending n ‘_PROXY’, and any other system-wide proxy configuration settings. 参考windows使用conda时出现报错ProxyError: Conda cannot proceed due to an error in your proxy configuration - 啦啦啦小石头 - 博客园,修改~/.condarc文件,可以解决问题。
3.3 运行与debug
3.3.1 miniconda运行PCR-GLOBWB
进入3.2.2新建的名为pcrglobwb_python39的python环境:
conda activate pcrglobwb_python39
在输入运行命令前,需要修改配置文件的各项参数。我们打开D:\PCR_GLOBWB\PCR-GLOBWB_model-master\config\setup_30min_windows.ini,该文件保存了各项配置参数,并会在后续的计算中一一调用,因此需要根据个人的计算需求一一修改。例如,输出文件路径、运行起始年份、运行终止年份、输入文件路径等。注意,很多输入文件的后缀为.map,但在该配置文件中则为.nc的后缀,一定要全部改正,否则模型会报错。这里,我提供了一份自己改完的版本,起始时间为:2000-01-01,终止时间为:2000-01-31,可以免费下载,供大家参考:PCR-GLOBWB运行的配置文件,测试有效-数据集文档类资源-CSDN下载。进入文件夹:D:\PCR_GLOBWB\PCR-GLOBWB_model-master\model,输入:
python deterministic_runner.py D:\PCR_GLOBWB\PCR-GLOBWB_model-master\config\setup_30min_windows.ini
即可成功运行,下图为运行过程的截图。
但运行速度较慢。由于输出结果为日尺度,计算完一年约需要25分钟。运行成功后,可以在文件夹D:\PCR_GLOBWB\outputs\netcdf中获取模型输出。
3.3.2 python debug
在部分情况下,由于numpy模块的版本问题,可能会出现报错:AttributeError: module 'numpy' has no attribute 'int',参考module ‘numpy‘ has no attribute ‘int‘_AI视觉网奇的博客-CSDN博客,根据报错信息找到相应文件,将np.int改为np.int64,问题得到解决。
同时,由于编码问题,可能会出现报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xb0 in position 6538: illegal multibyte sequence,参考真正解决Windows下UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xff in position 0错误的方法_mighty13的博客-CSDN博客,根据报错信息找到相应文件,将'encoding'参数改为'UTF-8',即可解决。
4. PCR-GLOBWB部分结果展示
如下图为PCR-GLOBWB估算的2000年1月,全球地表径流、陆面潜在蒸散发、地表水、地下水的空间分布,分辨率为0.5度。图片使用GMT绘制,强烈建议大家使用这款优秀的地学软件,功能非常强大,基本能够满足地学绘图的所有需求。最新版的GMT6十分新手友好,学习成本比较低,推荐大家学习使用。