0%

SAGEA卫星重力数据处理:产品数据读取(编辑中)

GRACE(-FO)二级重力产品以球谐系数形式给出了地球重力场异常在不同频段的分布情况,其后续使用以及科学分析等仍然需要进一步处理(如物理量分离、滤波去噪等)。SAGEA (Satellite Gravity Error Assessment) 项目基于Python,提供了相应的数据下载、数据处理和误差分析等功能,项目开源地址为https://github.com/NCSGgroup/SaGEA 。本系列作为使用手册,希望可以帮助你更好地使用该工具,如果你在使用过程中有任何问题,欢迎与我讨论(liushuhao@hust.edu.cn)。本文将介绍如何使用SAGEA读取数据,并简单介绍一些初步的应用场景。

按照项目中README.md的指引安装后,路径pysrc/auxiliary/read_file/下的源文件将提供读取文件的功能,包括读取各类球谐产品(如GRACE Level-2 时变重力场产品)、Shpfile地形文件等。

球谐产品读取

用户可通过pysrc/auxiliary/read_file/LoadL2SH.py中的load_SHC函数来读取球谐产品,得到类SHC的实例(后续介绍),其具体使用如下:

1
2
3
4
5
from pysrc.auxiliary.load_file.LoadL2SH import load_SHC

shc = load_SHC(*filepath, key: str, lmax: int, read_rows=None, get_dates=False, begin_date=None, end_date=None, dates_excluded=None)

shc, dates_begin, dates_end = load_SHC(*filepath, key: str, lmax: int, read_rows=None, get_dates=True, begin_date=None, end_date=None, dates_excluded=None)

这里,参数*filepath, keylmax是必须的,分别代表要读取文件的路径、识别符和最大阶次。

filepath 这里可以传一个和多个路径(strpathlib.Path实例对象)。当只有一个路径被传入时,若该路径指向一个文件,则读取该文件;若该路径指向一个文件夹,则读取该文件夹下(包括子文件夹下)的所有文件。同时,如果多个路径被传入,则按照上述规则读取每一个路径。

keystr类型给出,规定了文件的哪些行需要被作为数据读取。如一些文件的数据部分以字符串 gfcGRCOF2开头,如:

1
2
3
4
...
GRCOF2 0 0 0.100000000000E+01 0.000000000000E+00 0.0000E+00 0.0000E+00 20020405.0000 20020501.0000 nnnn
GRCOF2 1 0 0.000000000000E+00 0.000000000000E+00 0.0000E+00 0.0000E+00 20020405.0000 20020501.0000 nnnn
...

1
2
3
4
...
gfc 0 0 1.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00
gfc 1 0 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00
...

也有一些文件没有标识符,此时用户传入一个空字符串key=""即可。

lmax 是需要读取的最大阶次,以int类型给出,当然不能超过文件本身给的最大阶次,这没什么过多需要解释的。

另外还有一些参数,其本身已包含缺省值,用户可根据具体使用来修改。

read_rows 以可迭代对象传入,表示哪四列(从1开始索引)需要被分别读取为阶索引 (l)、次索引 (m)、cos系数 (Clm)和sin系数 (Slm)。一般情况下,如果key不为空字符,则默认read_rows=(2,3,4,5),否则,默认read_rows=(1,2,3,4)

get_dates以布尔值传入,默认为False。如果get_dates is False,则返回值为一个值,即SHC的实例;而当get_dates is True时,函数将额外从读取路径的文件名中匹配该文件所对应的开始、结束日期,并且返回值为三个元素构成的元组,按顺序为SHC的实例、开始日期(datetime.date实例)构成的列表和结束日期(datetime.date实例)构成的列表。需要注意的是,如果需要读取日期,读取路径的文件名中必须包含相应的字段以匹配,并且支持的字段有这样几类格式:yyyymmdd-yyyymmdd, yyyy-mm-dd-yyyy-mm-dd, yyyyddd-yyyyddd以及yyyy-mm,对于前三种格式,前后的日期分别对应开始日期和结束日期,而对于第四种近定位到月的格式,返回结果中的开始日期均为当月的第一天,结束日期则均为当月的最后一天。

begin_date, end_datedates_excluded 分别以datetime.date实例、datetime.date实例,以及以datetime.date实例构成的列表的形式给出,代表需要读取的起止时间,以及这之间不需要读取的月份(即仅匹配到月)。注意这三个参数仅在参数filepath为一个指向文件夹的路径时生效。