爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8471|回复: 10

在线制作WRF中使用的高分辨率地形数据(aster30m)

[复制链接]

新浪微博达人勋

发表于 2022-2-23 22:54:15 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 晋陵小生 于 2022-2-23 22:55 编辑

本文已发布于微信公众号【气象备忘录】,所有代码和数据均同步至和鲸社区
传送门:公众号文章在线代码

                               
登录/注册后可看大图



旧文新发,1. 修复了数据偏移的问题;2. 操作更加简单,fork代码后只需要修改经纬度就能在线制作WPS可用的地形数据。以下是正文部分。

利用ASTER-30米地形数据,制作WPS中可以使用的高分辨率地形高度数据,可以为高分辨率数值模拟(如大涡)提供较为准确的地形高度信息。
某度网盘下载速度实在感人,我直接把数据搬到和鲸了。大家可以自行设定经纬度,在线完成数据的制作,最后打包下载到本地使用。上传的数据集中包括中国区域的数据,只需要设定好经纬度范围即可,其他内容无需修改。
处理思路主要参考:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=50088&highlight=aster

tips1: 上面链接存在一个问题,两个数据块之间存在一条重复记录。即每拼接一块数据就会产生一条记录的偏移,因此需要在格式转换的时候剔除重复记录(感谢宝哥@内蒙气象局)。
tips2: 选取范围不能过大,静态数据命名上限为99999,1个数据块3600,即范围不能超过27个经纬度 。

以下是全部代码:
  1. import os
  2. import shutil
  3. import zipfile
  4. import glob

  5. # 需要解压的文件夹
  6. ZIP_ROOT = "/home/mw/input"

  7. # 解压到的根目录
  8. EXTRACT_BASE_PATH = r"/home/mw/project/Extracted"
  9. aster_dir = "/home/mw/project/topo_ASTER"

  10. if not os.path.exists(aster_dir):
  11.     os.makedirs(aster_dir)

  12. if not os.path.exists(EXTRACT_BASE_PATH):
  13.     os.makedirs(EXTRACT_BASE_PATH)

  14. lat1, lat2, lon1, lon2 = 40, 42, 115, 117
  15. ziplist = [ f"ASTGTMV003_N{lat}E{lon}.zip" for lat in range(lat1, lat2+1) for lon in range(lon1, lon2+1) ]


  16. for root, dirs, files in os.walk(ZIP_ROOT):
  17.   for file in files:
  18.       if file in ziplist:
  19.           fn = os.path.join(root,file)
  20.           print(f"正在解压->{fn}")
  21.           zip = zipfile.ZipFile(fn,'r')
  22.           zip.extractall(path=EXTRACT_BASE_PATH)
  23.           zip.close()

  24. os.environ['PROJ_LIB'] = "/opt/conda/share/proj"  # 不加这句会报proj的错

  25. files = glob.glob(f"{EXTRACT_BASE_PATH}/*dem.tif")
  26. files.sort()
  27. for infile in files:
  28.     print(infile)
  29.     outfile = infile[:-3] + "bil"
  30.     cmd = f"/opt/conda/bin/gdal_translate -of ENVI -co INTERLEAVE=BSQ -srcwin 1 0 3600 3600 {infile} {outfile}"
  31.     # print(cmd)
  32.     os.system(cmd)

  33. files = glob.glob(f"{EXTRACT_BASE_PATH}/*bil")
  34. files.sort()

  35. for ifile in files:
  36.     lat = int(ifile[-14:-12])
  37.     lon = int(ifile[-11:-8])

  38.     x1 = (lon - lon1)*3600 + 1
  39.     x2 = (lon - lon1 + 1)*3600
  40.     y1 = (lat - lat1)*3600 + 1
  41.     y2 = (lat - lat1 + 1)*3600

  42.     to_ = os.path.join(aster_dir, f"{x1:05d}-{x2:05d}.{y1:05d}-{y2:05d}")
  43.     shutil.move(ifile,to_ )


  44. index = f'''\
  45. type = continuous
  46. signed = yes
  47. projection = regular_ll
  48. dx = 0.00027777778
  49. dy = 0.00027777778
  50. known_x = 1.0
  51. known_y = 1.0
  52. known_lat = {lat1}.000
  53. known_lon = {lon1}.000
  54. wordsize = 2
  55. endian = little
  56. tile_x = 3600
  57. tile_y = 3600
  58. tile_z = 1
  59. row_order = top_bottom
  60. missing_value = 32768
  61. units = "meters MSL"
  62. description = "ASTER 1-sec Topography Height"
  63. '''

  64. with open(os.path.join(aster_dir, 'index'),'w') as f:
  65.     f.write(index)


  66. # cd /home/mw/project && tar -cvf aster.tar topo_ASTER
复制代码
欢迎fork&测试


评分

参与人数 2金钱 +40 贡献 +2 收起 理由
阳春白雪雨纷纷 + 20 + 2 很给力!
baishizhou + 20 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2022-2-24 11:55:05 | 显示全部楼层
公众号里的链接似乎不对,大家可以用这个链接
https://www.heywhale.com/mw/project/621230f168364e0017a4865c
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 成长值: 0
发表于 2022-2-24 11:46:07 | 显示全部楼层
前来帮顶,学习一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-24 12:05:26 | 显示全部楼层
强,正好用得到!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-2-24 15:17:48 | 显示全部楼层
tbag 发表于 2022-2-24 11:55
公众号里的链接似乎不对,大家可以用这个链接
https://www.heywhale.com/mw/project/621230f168364e0017a4 ...

感谢! 我确实贴错了hhh
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-21 23:01:05 | 显示全部楼层
您好,请问生成的“aster.tar”数据非常大(有12.9G...),要怎么在和鲸社区下载呢?试了好多次,都是下载到100多m就中断了...
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-7-28 09:07:03 | 显示全部楼层
阳春白雪雨纷纷 发表于 2022-7-21 23:01
您好,请问生成的“aster.tar”数据非常大(有12.9G...),要怎么在和鲸社区下载呢?试了好多次,都是下载 ...

公众号后台可以获取百度网盘链接
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 成长值: 0
发表于 2022-7-29 02:45:13 | 显示全部楼层
更新一下,目前主流认为SRTM要比ASTER要好些

如:
https://www.researchgate.net/pos ... d%20more%20accurate,photogrammetrically%20processed%20to%20derive%20DEM.

https://www.researchgate.net/pos ... SRTM_satellite_data
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-8-1 10:29:28 | 显示全部楼层
tbag 发表于 2022-7-29 02:45
更新一下,目前主流认为SRTM要比ASTER要好些

如:

学习到了! 另外想请教一个问题,convert_geotiff生成的地形数据文件名是5位数 xxxxx-xxxxx,如果范围过大,convert_geotiff可以将输出文件调整为6位数吗?之前碰到过这个问题,但是一直没有研究
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-7-10 11:35:48 | 显示全部楼层
tbag 发表于 2022-7-29 02:45
更新一下,目前主流认为SRTM要比ASTER要好些

如:

请问你是否知道下载srtm的完整流程呀?看了一些帖子有点懵
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表