采用数据是v1.0 BLD(融合站点的)daily数据,分辨率是0.25*0.25.数据说明和下载网址见前一篇博客。
CMORPH的官方文档暂时没有找到很详细的说明。
发现很多人对这个数据的处理都存在疑问,参考了论坛和官网,记录下来供大家参考。欢迎提出更好的思路。
首先数据是以二进制字符计录的,4byte float32,这个很重要,找了很久才找到。二进制文件需要转换成能看的数字。文档的readme暂时没发现太多干货,直接打开CTL文件。
这个文件记录了一些基本的信息,类似于头文件。
需要重点看的是XDEF和YDEF分别对应的起点和步长,(注意点是位于格网中心的)。x是从0.125度开始的,那么一直会加到359.875度,(也就是西经的179.875度)共1440个点。y是从-89.5开始的,那么会一直到89.875度,共720个点。
本例子数据是从左到右,从上到下排列的。读出来是shape是:正好等于1440*720。
一共是1036800行,那么数据是怎么排列的呢?如何把数据转换成1440*720的矩阵?
按照CTL文件给的顺序:应该是从左到右,从上到下依次排列。
用matlab或者python等软件的reshae功能,把矩阵reshape为1440*720的矩阵。但是reshape后注意上下翻转一次,因为一共1036800行,reshape后会默认从上到下排,而CTL文件给的是从下到上排列。python代码如下,供大家参考。后续如何处理请见下一篇博客。
import numpy as np
file = 'F:/mytest/tCMORPH_V1.0BETA_BLD_0.25deg-DLY_EOD_19980101' # 文件路径
with open(file, 'rb') as f: # 用with open 打开文件更智能
a = np.fromfile(f, dtype=np.float32) # 把二进制文件转为可读的数字
a = np.reshape(a, (1440,720)) # rashape
a = a[::-1] # 翻转矩阵