利用ioapi工具制作CMAQ-ISAM 区域文件(注意:文件生成之后的地区变量是int格式,需要将其转为float格式才可以正常使用)

最近在制作CMAQ-MASK文件,使用了python制作但是没有办法识别,在论坛里寻找一番得知可以通过ioapi的m3mask程序制作,故写下此文记录。

一、数据准备

        脚本需要mcip输出的2D网格文件(本脚本选用GRIDCRO2D文件),对应的网格区域划分csv文件,具体格式如下图所示:

二、bash脚本

​​​​​​​#!/bin/bash
export  COLROW=Y
export  LLFILE=GRIDCRO2D_D01.nc  ##mcip输出网格文件
awk -F, '! /#N/ {print $1,$2,$3,$5}' mask.csv > temp.csv  ##将mask.csv中没有划分区域的网格删除,提取第三列数值为1的行到temp.csv
for NAME in $(awk '!a[$4]++{print $4}' temp.csv)  ##根据第五列读取区域名称列表
do
awk "/$NAME/"'{print $1,$2,$3}' temp.csv > $NAME.csv  ##将不同区域的名称分别提取到不同的csv中
mv $NAME.csv outputcsv/
export  MASKDATA=outputcsv/$NAME.csv
export  MASKFILE=output/$NAME.nc
echo yes|./m3mask  ##使用m3mask生成对应的nc文件
done


export LIST=$(awk '!a[$4]++{print $4}' temp.csv)
NAME=($LIST)
export INFILE1=output/${NAME[0]}.nc   ##定义输入文件,有多少个区域就设置多少个
export INFILE2=output/${NAME[1]}.nc
export INFILE3=output/${NAME[2]}.nc
export INFILE4=output/${NAME[3]}.nc
export INFILE5=output/${NAME[4]}.nc
export INFILE6=output/${NAME[5]}.nc
export INFILE7=output/${NAME[6]}.nc
export INFILE8=output/${NAME[7]}.nc
export INFILE9=output/${NAME[8]}.nc
export INFILE10=output/${NAME[9]}.nc
export INFILE11=output/${NAME[10]}.nc
export INFILE12=output/${NAME[11]}.nc
export INFILE13=output/${NAME[12]}.nc
export INFILE14=output/${NAME[13]}.nc
export INFILE15=output/${NAME[14]}.nc
export INFILE16=output/${NAME[15]}.nc
export INFILE17=output/${NAME[16]}.nc
echo -e "Y\n\nN\n1\n"${NAME[0]}"\n0\n\nN\n1\n"${NAME[1]}"\n0\n\nN\n1\n"${NAME[2]}"\n0\n\nN\n1\n"${NAME[3]}"\n0\n\nN\n1\n"${NAME[4]}"\n0\n\nN\n1\n"${NAME[5]}"\n0\n\nN\n1\n"${NAME[6]}"\n0\n\nN\n1\n"${NAME[7]}"\n0\n\nN\n1\n"${NAME[8]}"\n0\n\nN\n1\n"${NAME[9]}"\n0\n\nN\n1\n"${NAME[10]}"\n0\n\nN\n1\n"${NAME[11]}"\n0\n\nN\n1\n"${NAME[12]}"\n0\n\nN\n1\n"${NAME[13]}"\n0\n\nN\n1\n"${NAME[14]}"\n0\n\nN\n1\n"${NAME[15]}"\n0\n\nN\n1\n"${NAME[16]}"\n0\nNONE\n0\n0\n0\n0\nmask.nc"|./m3merge
##设置m3merge运行指令,\n代表enter,开始运行为“Y\n”一组为“\nN\n1\n"${NAME[i]}"\n0\n”,结束指令为“NONE\n0\n0\n0\n0\nmask.nc”,其中“mask.nc”为输出文件名称。
##在编写过程中按照  “Y\n” + 区域个数个“\nN\n1\n"${NAME[i]}"\n0\n” + “NONE\n0\n0\n0\n0\nmask.nc” 即可
##例如三个区域就可以写为  “Y\n\nN\n1\n"${NAME[0]}"\n0\n\nN\n1\n"${NAME[1]}"\n0\n\nN\n1\n"${NAME[2]}"\n0\nNONE\n0\n0\n0\n0\nmask.nc”
 

        运行完毕之后即可得到名为mask.nc的区域划分文件,可使用ncview进行查看。

三、运行结果

        以河北地区为例,结果如下图所示,标记的区域为红色,数值为1,其余区域为蓝色,数值为0。CMAQ运行所需的OCEAN文件也可以用此方法制作。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值