气象数据.txt读取与可视化

很多网站上都可以方便的下载到气象数据,如美国海洋和大气管理局NOAA、美国航空航天局NASA和英国气象局哈德利研究中心等,数据格式包括文本(.txt)、NetCDF(.nc)和普通的二进制格式(.ascii),txt格式读取灵活,占用空间小,在气象数据中非常常用。这里以哈德利研究中心提供的全球海洋表面温度(SST)数据为例,说明txt格式气象数据在SuperMap中的读取与可视化。

首先,哈德利研究中心SST数据格式为:

气象数据.txt读取与可视化
SST数据格式

其中,第一行说明数据的日期和行列数,上述数据为2008年1月的SST数据,包括180行和360列,代表经纬度1°*1°格子内的温度值。为了方便管理,气象数据经常将很多时间的数据存储在一个文件中,中间使用说明行隔开。

针对这种格点数据,我们的大概使用思路是:导入为栅格→提取等温线→制图可视化。SuperMap支持将txt格式的数据导入为栅格,但支持的栅格格式与SST数据格式略有不同:

气象数据.txt读取与可视化
SuperMap支持导入的txt格式

其中,前六行为说明行,分别说明数据的行数、列数、左上角x坐标、左上角y坐标、分辨率和无值,于是,我们可以将SST数据中某一个月的栅格值替换到SuperMap支持的txt文件中,并修改对应的说明行:

气象数据.txt读取与可视化
气象数据文件说明

由于是全球的数据,所以指定左上角坐标为[-180,90],分辨率指定为1,表示1度。替换好后,使用SuperMap中“导入数据集”功能导入数据,会发现还是导入失败。这是因为,很多气象数据生产软件生产的气象数据,里边的格点值是右对齐的方式,不能被SuperMap识别,所以需要借助Excel去掉右对齐格式,具体的做法为:

气象数据.txt读取与可视化
气象数据的右对齐

 

1、确保所有的温度值之间都用空格隔开,在SST数据集中,空值为“-32768”,空值之间没有隔开,会导致导入Excel后这些值无法分开,因此需要先使用替换的方式将所有的“-32768”替换为“-32768+空格”;

气象数据.txt读取与可视化
图:温度值之间未隔开
气象数据.txt读取与可视化
温度值之间隔开后

 

2、复制所有温度值到一个新的txt文件,并导入到Excel中,分隔符号选择“空格”;

气象数据.txt读取与可视化
导入Excel时的设置

3、将导入后的Excel另存为csv文件,Excel导出为csv默认会去掉右对齐,并以“,”作为分隔符号,需要使用替换的方式将“,”替换回“空格”;

4、将处理好后的csv文件中的温度值复制到SuperMap可以识别的txt文件中,保存,就可以成功导入啦!

气象数据.txt读取与可视化
2018年1月SST栅格

导入数据后,默认为平面坐标系,需要在数据集属性中重设数据的坐标系,这里设置为WGS1984。在SuperMap中提取等值面后制作分段专题图,设置合适的颜色方案,并设置地图的投影为罗宾逊投影,就可以得到2018年1月全球海平面温度分布图啦!

气象数据.txt读取与可视化
2018年1月SST数据可视化

最后,在布局中加入图名、图例、指北针、说明文字等要素,如下图。

气象数据.txt读取与可视化
2018年1月全球平均海洋表面温度图