WRF更换静态下垫面数据

WRF更换静态下垫面数据

对于更换WRF的下垫面数据,主要存在两种方法。1、对geogrid.exe生成的geo_d*.nc中有关土地利用类型的变量进行更改。2、对原始的静态下垫面数据进行更改。方法一没有从根本解决更换下垫面的问题,相比较而言,方法二是最根本也是最理想的方法。

准备数据

WRF使用的下垫面数据(土地利用数据)有三种分类体系可供选择,分别为USGS-24类分类标准IGBP-17类分类标准IGBP-18类分类标准

坐标系选择

WRF使用的数据为地理坐标系,需要将土地利用影像的坐标系转为WGS84坐标系。

读取栅格文件

python中可以通过rasterio库读取geotif文件,图像存储为numpy.array格式。代码如下:

import rasterio

tifPath = "../modis_landuse/mcd12/landuse.tif"
rasterDataset = rasterio.open(tifPath)

二进制文件生成

下垫面数据在WRF中以二进制文件存储,python中,可以使用numpy直接保存为二进制文件。但需要注意WRF中数据上下颠倒,即影像第一行在二级制文件表达时为最后一行。
同时,WRF对二进制文件的命名有所规定,数据文件的名称采用xstart-xend.ystart-yend的形式,其中xstartxendystartyend是五位正整数,分别指定文件中包含的数组的起始x索引、数组的结束x索引、数组的起始y索引和数组的结束y索引。
代码如下:

xstart = "00001"
ystart = "00001"
xend = str(rasterDataset.width).zfill(5)
yend = str(rasterDataset.height).zfill(5)

outputFile = xstart + "-" + xend + "." + ystart + "-" + yend

data = rasterDataset.read(1)[::-1]
data.tofile("../modis_landuse/tif_to_bin/" + outputFile)

索引文件生成

除了二进制数据文件外,每个数据集还需要一个额外的索引文件,此文件始终命名为index。下面给出了一个索引文件的示例。

type=categorical
category_min=1
category_max=21
projection=regular_ll
dx=0.00530227
dy=0.00530227
known_x=1.0
known_y=1.0
known_lat=35.10073
known_lon=111.50223
wordsize=1
tile_x=1514
tile_y=1817
tile_z=1
units=“category”
description=“Noah-modified 21-category IGBP-MODIS landuse”
mminlu=“MODIFIED_IGBP_MODIS_NOAH”
iswater=17
islake=21
isice=15
isurban=13

具体内容解释如下:
type:为文件描述类型
category_min:分类代码的最小值
category_max:分类代码的最大值
projection:投影类型
dx:横向格点间的间隔,即栅格影像的横向分辨率
dy:纵向格点间的间隔,即栅格影像的纵向分辨率
known_x:指定一个标记点横向坐标
known_y:指定一个标记点纵向坐标
known_lat:标记点横向坐标的纬度
known_lon:标记点纵向坐标的经度
tile_x:横向格点数
tile_y:纵向格点数
units:格点值的单位
description:文件描述
iswater:水体类别的编号
islake:湖泊类别的编号
isice:冰川类别的编号
isurban:城市类别的编号

设置GEOGRID.TBL

将生成好的二进制数据文件索引文件存入同一个文件夹中,将该文件夹存放至WRF静态数据文件夹WPS_GEOG中。
同时修改WPS/geogrid文件夹下的GEOGRID.TBL文件。
在该文件LANDUSEF类别后增加以下三个内容:

rel_path = user:myself
interp_option = user:nearest_neighbor
landmask_water = user:17

具体内容解释如下:
rel_path:文件存储的相对位置
user:自定义的标识名
myself:存储二进制数据文件索引文件的文件夹名
interp_option:插值方式
nearest_neighbor:最近邻插值法
landmask_water:水体类型编号

使用方法

更改完所有文件后,在编写namelist.wps时,在geogrid分类下的geog_data_res写为自定义的标识名(myself)即可。

备注

  1. 在生成二进制数据文件时,可以将数据文件分为多个文件存储,但每个文件需要有相同的尺寸。如无法正好分割,则需要填充一个标志值(在index文件中使用missing_value关键字指定)。
  2. 由于起始索引结束索引必须为五位数,因此一个变量在xy方向上的数据点不能超过99999个。如果一个字段在任何一个维度上都有超过99999个数据点,可以简单地将数据集分割成几个较小的数据集,这些数据集将被geogrid分开识别。
  • 15
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值