- 积分
- 3250
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2020-3-19
- 最后登录
- 1970-1-1
|
20金钱
本帖最后由 HANSEN 于 2023-8-23 20:33 编辑
参考了家园的帖子进行WRF高分辨率地形数据的替换,帖子:应用高精度地形数据到WRF中(ASTER,SRTM)-专业气象研究-气象家园_气象人自己的家园 (06climate.com)
step1:下载ASTER地形数据,选取了一个小范围区域做测试,如图1:26-29°N,109-113°E
step2:数据转换,利用gdal讲数据转换为bil文件,并进行文件重命名,转化代码直接贴出来(参考WRF中使用高精度地形数据(30m,aster) (qq.com)),如下:
import os import glob
aster_dir = "xxx/geog4WRF4.0/topo_ASTER"data_dir = "xxx"GDAL = "xxx/anaconda3/envs/gdal/bin/gdal_translate"
# 转格式print("========= gdal_translate =======")files = os.listdir(data_dir)for ifile in files: if ifile.endswith('dem.tif'): print(ifile)
outfile = ifile[:-3] + "bil" cmd = f"{GDAL} -of ENVI -co INTERLEAVE=BSQ {ifile} {outfile}" os.system(cmd)
# 重命名print("========= rename =======")files = glob.glob(f"{data_dir}/*bil")files.sort()
ll_file = files[0]ll_lat = int(ll_file[-14:-12])ll_lon = int(ll_file[-11:-8])
for ifile in files: lat = int(ifile[-14:-12]) lon = int(ifile[-11:-8])
x1 = (lon - ll_lon)*3601 + 1 x2 = (lon - ll_lon + 1)*3601 y1 = (lat - ll_lat)*3601 + 1 y2 = (lat - ll_lat + 1)*3601
os.system(f"mv {ifile} {aster_dir}/{x1:05d}-{x2:05d}.{y1:05d}-{y2:05d}")
转化前后的数据如图:
step3: index文件如下:
type = continuous
signed = yes
projection = regular_ll
dx = 0.00027777778
dy = 0.00027777778
known_x = 1.0
known_y = 1.0
known_lat = 26.000
known_lon = 109.000
wordsize = 2
endian = little
tile_x = 3601
tile_y = 3601
tile_z = 1
row_order = top_bottom
missing_value = 32768
units = "meters MSL"
description = "ASTER 1-sec Topography Height"
同时修改了GEOGRID.TBL和namelist
=========================到这里一切都看上去很正常==================================
执行geogrid.exe之后
显示运行成功,并且geogrid.log也显示使用了ASTER数据,但是geogrid.exe执行的非常快,感觉到不对劲,于是查看了一下geo_em.d01.nc中的HGT_M变量,发现他的值全部是0(图8) ???到底哪里出现了问题,求求大佬们帮帮我吧
|
|