参考自 https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.1/users_guide_chap3.html
-
Parallelism in the WPS ............................................................. 3-28
-
Checking WPS Output .............................................................. 3-29
-
WPS Utility Programs ............................................................... 3-30
-
Writing Meteorological Data to the Intermediate Format ........... 3-34
-
Required Meteorological Fields for Running WRF.....................3-36
-
Using MPAS Output for WRF Initial and Boundary Conditions..3-37
-
Creating and Editing Vtables .................................................... 3-39
-
Writing Static Data to the Geogrid Binary Format ..................... 3-41
-
Creating an Urban Fraction Field from NLCD Data .................. 3-44
-
Description of Namelist Variables ............................................. 3-46
-
Description of GEOGRID.TBL Options ..................................... 3-52
-
Description of index Options ..................................................... 3-55
-
Description of METGRID.TBL Options ..................................... 3-58
-
Available Interpolation Options in Geogrid and Metgrid ............ 3-61
-
Land Use and Soil Categories in the Static Data ...................... 3-64
-
WPS Output Fields ................................................................... 3-66
将静态数据转换成Geogrid Binary Format(的文件)
由geogrid程序插值得到的静态地理数据集,存储为常规的二维和三维数组,写入到一个简单的二进制栅格格式(文件)。用户可以使用WPS程序,将新的静态数据集写入此二进制格式(文件)中。这种geogrid格式能够支持单层和多层连续场,表示主导(土地利用)类型的(土地利用)类型场,以及表示各个(土地利用)类型的土地利用率场。在这种二进制格式(文件)中具有代表性的场是主导(土地利用)类别场,一个例子是美国地质勘探局USGS的30秒土地利用数据集。
对于给定为主导(土地利用)类型场,数据必须首先存储在常规的2维整型数组中,每个整数给出了相应格点的主导(土地利用)类型。在给定此数组的情况下,数据将从底部或最南端的行开始逐行写入文件。例如,在上图中,n × m数组的元素将按照x11, x12, ..., x1m, x21,..., x2m,...,xn1,...,xnm的顺序写入。写入文件时,每个元素都以大端字节序(big-endian byte order)存储为1、2、3或4字节整数(即,对于4字节整数ABCD,字节A存储在最低地址,字节D存储在最高地址),尽管可以通过在数据集的“index”文件中设置endian=Little来使用小端文件。文件中的每个元素必须使用相同数量的字节进行存储,当然,使用尽可能最少的字节表示数组中完整范围的是有利的。
将二进制数据写入文件时,不要写入任何头、记录标记或附加字节。例如,一个2字节的1000 × 1000数组应该产生一个大小正好为2,000,000字节的文件。由于Fortran的无格式写入会加入记录标记(record marker),因此不能直接从Fortran写入geogrid二进制格式的文件;相反,建议在写入数据时调用read_geogrid.c和write_geogrid.c(在geogrid/src目录中)C子程序,实现以上功能。
与主导(土地利用)类型格式类似的是,在一个连续,或者实数的变量的情况。与主导(土地利用)类型一样,单层连续场首先以一个二维数组的形式出现,它被逐行地写入到一个二进制文件中。然而,因为一个连续场可能包含非整数或者负数值,所以在文件中对每个元素的存储方式要稍微复杂一些。数组中的所有元素必须首先转换成为整数值。这个是通过以下步骤实现,首先将所有元素乘以一个常数进行缩放(选取的常数保证了所需的精度),随后通过舍入(rounding)从而删除任何剩余的小数部分。例如,如果需要精确到小数点后三位,则值-2.71828需要除以0.001并四舍五入到-2718。在将所有数组元素转换为整型值之后,如果在数组中找到任何负数,则必须进行第二次转换:如果每个元素存储为1字节,则对每个负数元素的值加28;对于使用2字节的存储,每个负元素加216;对于使用3字节的存储,每个负元素加224;对于使用4字节的存储,为每个负元素添加一个值232。请注意,对正的元素不进行转换。最后,所得到的正整数数组被写入为一个主导类别场中。
多层次连续场的处理方式与单层连续场的处理方式大致相同。对于n × m × r数组,首先如上所述转换为正的整数场。然后,从最小的r-索引开始,每个n × m的子数组像以前一样连续写入二进制文件。
(土地利用)类别场,作为每个可能的类型以分数场给出,可以被视为多层连续场,其中对每层k(1≤k≤r)表示类别k所占的分数。
以geogrid二进制格式将变量写入到文件时,用户应该遵守geogrid程序使用的命名约定,该程序要求数据文件的名称采用xstart-xend.ystart-yend的形式,其中xstart、xend、ystart和yend是五位正整数,分别指定文件中包含的数组的起始x索引、数组的结束x索引、数组的起始y索引和数组的结束y索引;在这里,索引的开始是1,而不是0。因此,例如,800×1200数组(即800行和1200列)可以命名为为00001-01200.00001-1200。
当数据集被分成几个片段时,每个片段可以形成为规则的矩形阵列,并且每个阵列可以被写入单独的文件。在这种情况下,数组的相对位置由每个数组的文件名中的x和y索引范围确定。但是,重要的是要注意,数据集中的每个“碎片”(tile)必须具有相同的x和y维,并且数据集中的数据碎片不得重叠;此外,所有碎片必须在索引范围的倍数上开始和结束。例如,全球30秒的USGS地形数据集被划分为1200×1200维的数组,每个数组包含一个10度×10度的数据集;西南角位于(90S,180W)的文件被命名为00001-01200.00001-01200,东北角位于(90N,180E)的文件被命名为42001-43200.20401-1200。
如果要将数据集拆分为多个碎片,并且x方向上的网格点的数量不是平均除以x方向上的平铺的数量,那么最后一列碎片必须填充一个标志值(在index文件中使用missing_value关键字指定),以便所有碎片具有相同的尺寸。例如,如果数据集在x方向上具有2456个点,并且将使用x方向上的三个瓦片,则碎片的x坐标范围可以是1-820、821-1640和1641-2460,其中列2457到2460用标志值填充。
显然,由于起始索引和结束索引必须为五位数,因此一个变量在x或y方向上的数据点不能超过99999个。如果一个字段在任何一个维度上都有超过99999个数据点,用户可以简单地将数据集分割成几个较小的数据集,这些数据集将被geogrid分开识别。例如,一个非常大的全球数据集可以被分成东半球和西半球的数据集。
除了二进制数据文件外,每个数据集还需要一个额外的元数据文件。此元数据文件始终命名为“index”,因此,两个数据集不能放在在同一目录中。从本质上讲,此元数据文件是Geogrid在处理数据集时查找的第一个文件,该文件的内容为Geoggrid提供了构建可能的数据文件名称所需的所有信息。下面给出了一个示例索引文件的内容。
type = continuous
signed = yes
projection = regular_ll
dx = 0.00833333
dy = 0.00833333
known_x = 1.0
known_y = 1.0
known_lat = -89.99583
known_lon = -179.99583
wordsize = 2
tile_x = 1200
tile_y = 1200
tile_z = 1
tile_bdr=3
units="meters MSL"
description="Topography height"
想要了解索引文件中的关键字的完整列表,以及每个关键字的含义,请可以参考索引文件选项。
从NLCD数据创建Urban fraction场
注:自WPS v4.0发布以来,美国大陆地区可获得基于30米NLCD 2011土地覆盖的urban fraction场; 该数据集可从WPS地理下载页面的“可选变量”部分中获得。下面的细节对其他地区的Urban fraction的准备工作仍有帮助。
In order to create a more inhomogeneous and detailed urban fraction field for use with NUDAPT, users may obtain high-resolution land cover information from the National Land Cover Database (NLCD) through the Multi-Resolution Land Characteristics Consortium. Generation of the urban fraction field, called FRC_URB2D in WRF, involves first downloading the NLCD data over the region covered by the WRF domain, converting the data into the binary format used by geogrid, and finally extracting only the urban categories to a new urban fraction field. The following steps can serve as a guide through this process.
为了创建一个更加不均匀和详细的Urban fraction场供NUDAPT使用,用户可以通过多分辨率土地特征联盟(Multi-Resolution Land Characteristics Consortium),从国家土地覆盖数据库(National Land Cover Database,NLCD)获得高分辨率的土地覆盖信息。Urban fraction场的生成,在WRF中称为FRC_URB2D,首先下载WRF域覆盖区域的NLCD数据,将数据转换为geogrid使用的二进制格式,最后仅提取城市类别到一个新的Urban fraction场。以下步骤可以作为这个过程的指导。
- 下载NLCD数据,从这个网站 http://gisdata.usgs.net/website/MRLC/viewer.php 。1992年、2001年或2006年的数据集都可以使用。选择要下载的区域后,请确保在“Request Summary Page”中选择GeoTIFF格式(通过点击“修改数据请求”)。如果可以的话,数据也可以下载成BIL格式,在这种情况下,可以跳过下一步中描述的格式转换。
- 下载数据之后,解压缩归档文件将生成一个目录,其中包含.tif文件和.tfw文件等。为了使GeoTIFF文件中的信息有用,.tif图像必须转换为WPS使用的二进制格式。通过运行这个命令,使用GDAL转换工具gdal_translate,(http://gdal.org),完成这个转换
gdal_translate -of ENVI foo.tif data.bil
其中foo.tif是第1步中下载的GeoTIFF图像的名称。输出格式“ENVI”是一种简单的二进制光栅格式,它与geogrid使用的格式相匹配。将GeoTIFF转换为二进制文件后,生成的数据。bil文件必须重命名为00001-ncols.00001-nrows,其中ncols是图像中的列数(i5.5格式),nrows是行数(也是i5.5格式);这些值应该在运行gdal_translate程序时打印到屏幕上。
-
使用http://www2.mmm.ucar.edu/people/duda/uf/提供的转换程序从二进制碎片中提取城市类别,并写入到包含Urban fraction场的新碎片数据。这个转换器的输出文件应该复制到原来的土地使用碎片上,也就是说,Urban fraction文件应该被重命名为00001-ncols.00001-nrows,其中ncols是平铺中的列数(i5.5格式),nrows是行数(也是i5.5格式),如步骤2所示。
-
为Urban fraction数据创建索引元数据文件。在解压缩土地使用数据创建的目录中,还应该存在一个.tfw文件。这个文件的最后两行给出了数据块的西北角的位置,这在变量known_lat和known_lon的索引文件中使用。如果此位置以(x,y)坐标的形式给出,单位为米,则可以使用从[http://www2.mmm.ucar.edu/people/duda/uf/]()提供的坐标转换工具将其转换为(纬度,经度),这是索引文件所要求的。基本索引文件应该包含以下元素:
projection=albers_nad83
dx=30.0
dy=30.0
known_x=1.0
known_y=2351.0 # <- edit
known_lat = 40.096571 # <- edit
known_lon = -105.405615 # <- edit
truelat1=29.5
truelat2=45.5
stdlon=-96.0
wordsize=1
scale_factor=0.01
row_order=top_bottom
tile_x=2407 # <- edit
tile_y=2351 # <- edit
tile_z=1
units="unitless"
description="urban fraction"
- 重新运行geogrid.exe程序之前,向GEOGRID添加以下条目。:
===============================
name=FRC_URB2D
priority=1
dest_type=continuous
fill_missing = 0.
interp_option=default: average_gcell(1.0)+four_pt
abs_path=default:/path/to/dataset/ ===============================
在步骤3和步骤4中创建的数据集和索引文件的路径应该分别替换上面条目中的' /path/to/dataset/ '。