1. MODIS土地利用数据与WRF模型的关系第一次接触WRF模型时我被geo_em.d0N.nc文件里那些神秘的数字搞得一头雾水。直到把MODIS数据导入WRF后才发现原来这些数字背后藏着整个地球表面的身份证。MODIS的MCD12Q1v006数据集就像给地球拍了一张500米精度的证件照而WRF模型需要我们把这张照片翻译成它能理解的语言。MODIS数据最让人头疼的就是它的HDF格式。我至今记得第一次用ncdump查看HDF文件时满屏的乱码让我差点放弃。后来发现用Python的h5py库就能轻松读取import h5py file h5py.File(MCD12Q1.A2020001.h25v05.006.2021349233251.hdf,r) print(list(file.keys()))这个数据集最厉害的地方在于它提供了多达17种分类方案。我常用的是IGBP分类因为它和WRF默认的USGS 24类有较好的对应关系。不过要注意MODIS的常绿阔叶林在WRF里可能对应好几个类别这个映射关系需要仔细处理。2. 数据预处理全流程详解2.1 从原始HDF到GeoTIFF的转换处理MODIS数据就像在玩拼图游戏。每个HDF文件只是全球数据的一小块我们需要用MRT工具或者GDAL把它们拼接起来。我最喜欢用GDAL的gdal_merge.py脚本gdal_merge.py -o China_2020.tif -of GTiff HDF4_EOS:EOS_GRID:MCD12Q1.A2020001.h25v05.006.2021349233251.hdf:MOD12Q1:Land_Cover_Type_1 HDF4_EOS:EOS_GRID:MCD12Q1.A2020001.h26v05.006.2021349233251.hdf:MOD12Q1:Land_Cover_Type_1这里有个坑要注意MODIS用的是正弦曲线投影(Sinusoidal)而WRF需要经纬度坐标。我曾在投影转换上栽过跟头导致后续所有工作都白费。正确的做法是先用gdalwarp进行重投影gdalwarp -t_srs EPSG:4326 China_2020.tif China_2020_WGS84.tif2.2 重分类从IGBP到USGS这个步骤就像把中文翻译成英文但不是简单的单词替换。MODIS的17类和WRF的24类不是一一对应的。我整理了一个转换表MODIS IGBP类WRF USGS类处理建议常绿针叶林1直接映射城市建筑区13需区分高低密度农田3注意灌溉农田对于中国区域我特别建议处理城市类别时要小心。很多MODIS数据会把城中村识别为农田这时候需要辅助使用夜间灯光数据来校正。3. 与WRF地理静态数据的融合3.1 修改geo_em.d0N.nc的关键变量第一次修改geo_em文件时我手抖把整个长三角都变成了水域导致模拟结果异常。后来发现必须同时修改三个变量LANDUSEF每个格点24类土地占比LU_INDEX主导土地类型LANDMASK陆地/水体标志位用NCO工具修改最稳妥ncap2 -s LANDUSEF[0,3,:,:]0.8; LANDUSEF[0,16,:,:]0.2 geo_em.d01.nc -o geo_em_new.d01.nc3.2 保持面积比例的技巧这里有个重要原则修改后每个格点的LANDUSEF总和必须等于1。我写了个Python函数来自动校正def normalize_landusef(ncfile): with xr.open_dataset(ncfile) as ds: landusef ds[LANDUSEF].values totals landusef.sum(axis1) landusef landusef / totals[:, None, :, :] ds[LANDUSEF].values landusef ds.to_netcdf(normalized_ncfile)4. 参数化方案的影响评估4.1 Noah-MP方案的关键参数更新土地利用数据后Noah-MP的16个参数都需要重新检查。最重要的是反照率城市区域常被低估粗糙度长度森林地区需要调整植被覆盖率影响潜热通量计算我建议先用WRF的ideal_case测试参数敏感性。曾经有个项目因为粗糙度设置不当导致风速模拟偏差达2m/s。4.2 中国区域的特殊处理中国东部的农田-城市混合区域需要特别注意。我的经验是城市热岛效应增加城市区域的热容量农田灌溉调整土壤湿度初始场三北防护林修正植被季节性变化一个实用的方法是结合GLDAS数据来初始化土壤湿度这样能更好地反映实际下垫面状况。5. 效果验证与案例分析去年更新华北平原土地利用数据后2米温度模拟的RMSE降低了0.8℃。关键步骤是准备对照试验新旧土地利用数据各跑一次重点验证城市站vs郊区站差异统计分析泰勒图展示改进程度验证时最容易忽略的是降水模拟。有次更新森林覆盖率后虽然温度模拟改善了但降水模式却变差了。后来发现是植被覆盖率改变影响了对流触发机制。6. 常见问题排查指南遇到过最诡异的问题是模拟结果出现规律的条带状异常。排查后发现是重采样时用了最近邻法改用双线性插值后问题消失。其他常见陷阱包括投影定义错误导致数据偏移类别映射错误如把湿地误认为农田时间戳不匹配引发初始化错误建议每次修改都先用ncdump检查元数据再用Panoply快速可视化确认。
【WRF实战】从MODIS到模式格点:高精度土地利用数据融合与参数化指南
1. MODIS土地利用数据与WRF模型的关系第一次接触WRF模型时我被geo_em.d0N.nc文件里那些神秘的数字搞得一头雾水。直到把MODIS数据导入WRF后才发现原来这些数字背后藏着整个地球表面的身份证。MODIS的MCD12Q1v006数据集就像给地球拍了一张500米精度的证件照而WRF模型需要我们把这张照片翻译成它能理解的语言。MODIS数据最让人头疼的就是它的HDF格式。我至今记得第一次用ncdump查看HDF文件时满屏的乱码让我差点放弃。后来发现用Python的h5py库就能轻松读取import h5py file h5py.File(MCD12Q1.A2020001.h25v05.006.2021349233251.hdf,r) print(list(file.keys()))这个数据集最厉害的地方在于它提供了多达17种分类方案。我常用的是IGBP分类因为它和WRF默认的USGS 24类有较好的对应关系。不过要注意MODIS的常绿阔叶林在WRF里可能对应好几个类别这个映射关系需要仔细处理。2. 数据预处理全流程详解2.1 从原始HDF到GeoTIFF的转换处理MODIS数据就像在玩拼图游戏。每个HDF文件只是全球数据的一小块我们需要用MRT工具或者GDAL把它们拼接起来。我最喜欢用GDAL的gdal_merge.py脚本gdal_merge.py -o China_2020.tif -of GTiff HDF4_EOS:EOS_GRID:MCD12Q1.A2020001.h25v05.006.2021349233251.hdf:MOD12Q1:Land_Cover_Type_1 HDF4_EOS:EOS_GRID:MCD12Q1.A2020001.h26v05.006.2021349233251.hdf:MOD12Q1:Land_Cover_Type_1这里有个坑要注意MODIS用的是正弦曲线投影(Sinusoidal)而WRF需要经纬度坐标。我曾在投影转换上栽过跟头导致后续所有工作都白费。正确的做法是先用gdalwarp进行重投影gdalwarp -t_srs EPSG:4326 China_2020.tif China_2020_WGS84.tif2.2 重分类从IGBP到USGS这个步骤就像把中文翻译成英文但不是简单的单词替换。MODIS的17类和WRF的24类不是一一对应的。我整理了一个转换表MODIS IGBP类WRF USGS类处理建议常绿针叶林1直接映射城市建筑区13需区分高低密度农田3注意灌溉农田对于中国区域我特别建议处理城市类别时要小心。很多MODIS数据会把城中村识别为农田这时候需要辅助使用夜间灯光数据来校正。3. 与WRF地理静态数据的融合3.1 修改geo_em.d0N.nc的关键变量第一次修改geo_em文件时我手抖把整个长三角都变成了水域导致模拟结果异常。后来发现必须同时修改三个变量LANDUSEF每个格点24类土地占比LU_INDEX主导土地类型LANDMASK陆地/水体标志位用NCO工具修改最稳妥ncap2 -s LANDUSEF[0,3,:,:]0.8; LANDUSEF[0,16,:,:]0.2 geo_em.d01.nc -o geo_em_new.d01.nc3.2 保持面积比例的技巧这里有个重要原则修改后每个格点的LANDUSEF总和必须等于1。我写了个Python函数来自动校正def normalize_landusef(ncfile): with xr.open_dataset(ncfile) as ds: landusef ds[LANDUSEF].values totals landusef.sum(axis1) landusef landusef / totals[:, None, :, :] ds[LANDUSEF].values landusef ds.to_netcdf(normalized_ncfile)4. 参数化方案的影响评估4.1 Noah-MP方案的关键参数更新土地利用数据后Noah-MP的16个参数都需要重新检查。最重要的是反照率城市区域常被低估粗糙度长度森林地区需要调整植被覆盖率影响潜热通量计算我建议先用WRF的ideal_case测试参数敏感性。曾经有个项目因为粗糙度设置不当导致风速模拟偏差达2m/s。4.2 中国区域的特殊处理中国东部的农田-城市混合区域需要特别注意。我的经验是城市热岛效应增加城市区域的热容量农田灌溉调整土壤湿度初始场三北防护林修正植被季节性变化一个实用的方法是结合GLDAS数据来初始化土壤湿度这样能更好地反映实际下垫面状况。5. 效果验证与案例分析去年更新华北平原土地利用数据后2米温度模拟的RMSE降低了0.8℃。关键步骤是准备对照试验新旧土地利用数据各跑一次重点验证城市站vs郊区站差异统计分析泰勒图展示改进程度验证时最容易忽略的是降水模拟。有次更新森林覆盖率后虽然温度模拟改善了但降水模式却变差了。后来发现是植被覆盖率改变影响了对流触发机制。6. 常见问题排查指南遇到过最诡异的问题是模拟结果出现规律的条带状异常。排查后发现是重采样时用了最近邻法改用双线性插值后问题消失。其他常见陷阱包括投影定义错误导致数据偏移类别映射错误如把湿地误认为农田时间戳不匹配引发初始化错误建议每次修改都先用ncdump检查元数据再用Panoply快速可视化确认。