格点数据的处理方法及其相关设备与流程

文档序号:24790577发布日期:2021-04-23 13:46阅读:522来源:国知局
1.本公开的一个或多个实施例涉及数据的处理技术,尤其涉及一种格点数据的处理方法、格点数据的处理装置、电子设备及计算机可读存储介质。
背景技术
::2.随着气象观测资料种类的增多、观测频次的增多,导致气象数据量越来越大。气象数据是一类典型的大数据,具有数据量大、时效性高、数据种类丰富等特点。目前,很多气象数据是以格点数据的形式进行存储的,又称为气象格点数据,例如,某一地区的降水量数据或气温数据等等。气象格点数据通常是将空间按照经纬度分割成多个网格,每一个网格称为一个格点,每一个格点所代表的实体的位置由它的行列号定义,此外,还要为各格点赋予相应的值来表示该格点所代表的实体的数值。简单来讲,可以将格点数据简单看成一个二维矩阵,每个格点对应矩阵中的一个位置和一个值,这部分数据可以称为格点数据的数据部分。除了上述数据部分之外,上述格点数据还包括对上述数据部分进行描述的描述信息。例如,描述数据部分行数和列数、行和列的分辨率以及起始行和列对应的经纬度等等信息的描述信息。此外,上述格点数据中的每个格点还可以对应一个或多个描述格点数据属性的源数据。上述源数据可以包括一项或者多项格点数据的属性信息。例如,这些属性信息可以包括:格点数据对应的时间信息、高度信息或采样值等除了地理空间之外的其他维度的信息。通常情况下,气象格点数据可以包括多个格点数据文件,每个气象格点数据文件存储一类气象数据,且每个气象格点数据中的各个格点对应同一个或多个属性信息。例如,可以将某一天某一区域内的降水量存储在一个格点数据文件中,则该格点数据文件中的每个格点的行号对应一个纬度值,每个格点的列号对应一个经度值,因此,每个格点所代表的实体位置则可以由该格点的行列所对应的经纬度确定。而且,每个格点的值为该天该位置的降水量。可以看出,该降水量格点数据记录了某一天某区域内各个由不同经纬度确定的地理位置的降水量。又例如,可以将某一天某一区域内的平均日温存储在另一个格点数据文件中,每个格点的行号对应一个纬度值,每个格点的列号对应一个经度值,因此,每个格点所代表的实体位置则可以由该格点的行列所对应的经纬度确定。而且,每个格点的值为该天该位置的平均日温。可以看出,该日温格点数据记录了该天某区域内各个由不同经纬度确定的地理位置的平均日温。当然,需要说明的是,一个格点数据文件中的各个格点也可以对应不同的时间信息。3.目前,通常是采用关系型数据库加文件系统的方式来实现气象格点数据的存储和实时查询。然而,这种关系型数据库加文件系统的方式往往难以承受大数据量的文件数量增长,且文件目录的树形结构不能很好地满足对数据进行按序访问的特点,而且由于在对气象格点数据进行查询或分析处理时,文件系统需要首先从关系型数据库中下载全部气象格点数据然后才能对其进行分析处理,导致所需的处理时间非常长。因此,这种模式无法很好地满足气象格点数据的处理需求。技术实现要素:4.有鉴于此,本公开一个或多个实施例提出一种格点数据的处理方法。基于本公开的格点数据方法,可以实现格点数据的快速实时查询以及实时运算。5.本公开一个或多个实施例所述的格点数据的处理方法,可以包括:根据预先设定的格点数据结构,在数据库中创建一张数据库表;其中,所述数据库表包括:格点数据字段以及至少一个属性字段;从数据集中读取待处理的多组格点数据及每一组格点数据对应的至少一项属性信息;针对每一组格点数据,按照预先设定的格点数据对象结构将所述格点数据封装为格点数据对象;以及针对每一组格点数据,将所述格点数据对象写入所述数据库表一条数据记录的格点数据字段,以及将所述至少一项属性信息分别写入所述数据记录中与其对应的属性字段。6.其中,所述按照预先设定的格点数据对象结构将所述格点数据封装为格点数据对象包括:从所述格点数据中提取出描述信息和数据部分;按照预先设定的格点数据对象结构,分别对所述描述信息和数据部分进行处理;以及按照预先设定的格点数据对象结构,将处理后描述信息和数据部分封装为格点数据对象。7.上述方法可以进一步包括:接收针对一项或多项属性信息的查询条件;其中,所述查询条件包括一项或多项属性信息的值或者取值范围;根据所述查询条件从所述数据库表中选择满足所述查询条件的数据记录;输出所述数据记录中由格点数据字段记录的格点数据对象。8.上述方法可以进一步包括:接收待查询的空间信息;针对所述数据库表中的每一条记录,从所述格点数据字段中读取第一格点数据对象,并根据所述空间信息从所述第一格点数据对象中提取第二格点数据对象;以及输出所述第二格点数据对象。9.其中,从所述格点数据字段中读取第一格点数据对象,并根据所述空间信息从所述第一格点数据对象中提取第二格点数据对象包括:从所述格点数据字段中读取所述第一格点数据对象中的第一数据部分和第一描述信息;从所述第一数据部分中提取与所述空间信息对应的第二数据部分;根据所述空间信息对所述第一描述信息进行更新,生成与所述第二数据部分对应的第二描述信息;以及按照所述格点数据对象结构,将所述第二描述信息和所述第二数据部分封装为所述第二格点数据对象。10.上述方法可以进一步包括:确定需要进行的运算类型以及运算参数;提取待运算的格点数据对象的数据部分;根据所述运算类型以及所述运算参数对提取的数据部分的各个格点上的值分别进行运算;以及返回运算后得到的格点数据对象。11.上述方法可以进一步包括:确定需要进行的运算类型;提取待运算的格点数据对象的数据部分;根据所述运算类型对提取的数据部分的各个格点上的值进行运算;以及返回运算后得到的格点数据对象。12.上述方法可以进一步包括:确定需要进行的运算类型;提取待运算的两个或多个格点数据对象的数据部分;根据所述运算类型对提取的两个或多个数据部分的各个对应格点上的值分别进行运算;以及返回运算后得到的格点数据对象。13.对应上述方法,本公开的一个或多个实施例还公开了一种格点数据的处理装置,包括:数据库表生成模块,用于根据预先设定的格点数据结构,在数据库中创建一张数据库表;其中,所述数据库表包括:格点数据字段以及至少一个属性字段;数据读取模块,用于从数据集中读取待处理的多组格点数据及每一组格点数据对应的至少一项属性信息;数据封装模块,用于针对每一组格点数据,按照所述格点数据对象结构将上述格点数据封装为格点数据对象;以及数据写入模块,用于针对每一组格点数据,将所述格点数据对象写入所述数据库表一条数据记录的格点数据字段,以及将所述至少一项属性信息分别写入所述数据记录中与其对应的属性字段。14.本公开的一个或多个实施例还提供了一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述方法。15.可以看出,在本公开的实施例中,可以将格点数据从数据集迁移至数据库的一张数据库表中,从而可以充分利用数据库自身对数据的查询和运算能力,无需进行任何数据下载即可实现格点数据的实时查询和快速分析处理,大大缩短所需的处理时间,提高数据处理效率。16.特别是对于海量的气象格点数据而言,以上述方式在将气象格点数据迁移至数据库的数据库表之后,可以直接对数据库中的数据进行查询和各种运算,无需进行任何气象格点数据的下载,从而大大缩短查询、分析气象格点数据时所需的处理时间,提高数据处理效率。附图说明17.为了更清楚地说明本公开一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。18.图1为本公开一个或多个实施例所述的格点数据的处理方法的实现流程示意图;图2为本公开一个或多个实施例所述的按照预先设定的格点数据对象结构将上述格点数据封装为格点数据对象的具体实现方法流程示意图;图3为本公开一个或多个实施例所述的根据一项或多项属性信息进行数据查询的方法流程示意图;图4为本公开一个或多个实施例所述的根据空间信息进行数据查询方法流程示意图;图5为本公开一个或多个实施例所述的从格点数据字段中读取第一格点数据对象,并根据上述空间信息从第一格点数据对象中提取第二格点数据对象的方法流程示意图;图6为本公开一个或多个实施例所述的格点数据的处理装置的内部结构示意图;以及图7为本公开一个或多个实施例所述的电子设备的内部结构示意图。具体实施方式19.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。20.需要说明的是,除非另外定义,本公开一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。21.为了解决现有对气象格点数据进行查询时访问时间较长,无法满足气象数据高性能查询的问题,本公开的一个或多个实施例提出一种格点数据的存储及查询方法,可以实现格点数据的快速实时查询。22.在本公开的实施例中,为了实现格点数据的快速实时查询,可以将存储在关系数据库加文件系统内的格点数据迁移至数据库中。具体地,在本公开的一些实施例中,上述用于存储格点数据的数据库可以是开源数据库,具体可以是postgresql数据库等。23.为了实现格点数据在数据库中的存储,在本公开的实施例中,可以预先设定格点数据在数据库中的存储结构。在本公开中,可以将预先设定的格点数据的存储结构称为格点数据对象结构。从而在进行格点数据存储时,可以先将格点数据按照预先设定的格点数据对象结构封装为一个格点数据对象,然后再将格点数据对象存储在数据库的数据库表中。上述格点数据对象结构的设计与格点数据的具体内容有关,通常可以包括多个数据项,其中一个数据项可以是以二维矩阵形式存储的格点数据的数据部分,其他数据项则可以用于存储一条或者多条对上述格点数据的数据部分进行描述的描述信息。24.例如,在本公开的一些实施例中,当格点数据为气象格点数据时,上述格点数据对象结构可以按照如下表1所示的结构设置。数据项的名称数据项的含义数据类型用于记录格点数据对象结构中数据部分的数据类型有无无效值用于记录格点数据对象结构中数据部分是否有无效值是否为无效值用于记录格点数据对象结构中数据部分是否均为无效数据x轴位置用于记录格点数据对象结构中数据部分左上角的经度y轴位置用于记录格点数据对象结构中数据部分左下角的纬度x轴分辨率用于记录x轴(经度)的分辨率y轴分辨率用于记录y轴(纬度)的分辨率坐标信息用于记录格点数据对象结构中数据部分的坐标信息列数用于记录格点数据对象结构中数据部分的列数行数用于记录格点数据对象结构中数据部分的行数数据部分用于记录格点数据对象结构中的数据部分(通常以二维矩阵的形式存储)25.表1在本公开的示例中,还可以进一步根据业务需要设定上述表1所示格点数据对象结构中各个数据项的类型,例如,可以根据业务需要将其中一个数据项设置为无符号整型、有符号整型、双精度浮点型以及无类型指针型等等数据类型中的一种。26.此外,在本公开的示例中,还可以预先设置多种格点数据对象结构,或者随着业务的需求的改进不断对上述格点数据对象结构进行更新。为了区分不同的格点数据对象结构,可以在每个格点数据对象结构中增加一个版本号的数据项,来具体指明本格点数据结构所对应的版本。27.此外,还可以在上述格点数据对象结构进一步增加一个或多个预留数据项,以根据实际的业务需要灵活设置其上承载的具体数据内容,提高上述格点数据对象结构的通用性和可扩展性。28.在定义了格点数据对象结构之后,即可开始执行格点数据的处理方法了。29.图1显示了本公开一个或多个实施例所述的格点数据的处理方法的实现流程。通过图1所示的方法,可以将在关系型数据库加文件系统方式存储的多组格点数据迁移到数据库中。如图1所示,该方法可以包括:在步骤102,根据预先设定的格点数据结构,在数据库中创建一张数据库表。30.在本公开的实施例中,该数据库表主要用于存储格点数据。具体地,上述数据库表可以包括:一个格点数据字段以及至少一个属性字段。其中,上述格点数据字段用于承载上述格点数据对象;上述至少一个属性字段分别用于承载格点数据所对应的至少一项属性信息。31.例如,如果待处理的格点数据对应的源数据中包括时间信息和高度信息,则上述数据库表中,除了格点数据字段之外还应当包括时间字段和高度字段。如果待处理格点数据对应的源数据中包括时间信息、高度信息和采样信息,则上述数据库表中,除了格点数据字段之外还应当包括时间字段、高度字段和采样字段。32.此外,在本公开的另一些实施例中,为了标识上述数据库表中的每一条记录,上述数据库表中还可以进一步包括一个标识字段,用于记录该数据库表中各条记录的标识(id)。33.可以理解,上述数据库表中的每一条记录可以用于存储一组格点数据。34.具体地,在本公开的一些实施例中,可以使用结构化查询语言(sql)中的创建表的sql语句实现在上述根据至少一项属性信息在数据库中创建一张数据库表的操作。例如,在本公开的一个示例中,可以通过sql语句“createtableifnotexistspublic.test1(idserial,datagrid,timenumeric)”在数据库中创建一个名称为test1的包含标识字段、数据格点字段以及时间字段的数据库表;其中,id代表上述标识字段,其类型是序列号类型(serial);data代表上述格点数据字段,其类型是格点数据对象类型(grid);time代表上述时间字段,其类型是数值类型(numeric);test1代表上述数据库表的名称。35.在定义了格点数据对象结构并且在数据库中创建好数据库表之后,即可将存储在文件系统中的格点数据迁移到数据库的数据库表中,从而可以利用数据库的查询功能实现对格点数据的实时快速查询。36.在步骤104,从数据集中读取待处理的多组格点数据及每一组格点数据对应的至少一项属性信息。37.在本公开的实施例中,上述数据集泛指现有关系型数据库加文件系统中存储数据的数据集合。在本公开的示例中,上述数据集中存储有格点数据及其对应的源数据。具体地,上述数据集可以包括:grib、网络通用数据格式(networkcommondataformat,netcdf)以及层次数据格式(hierarchicaldataformat,hdf5)等等数据库文件。其中,grib格式是一种应用于气象领域的简明数据格式,由世界气象组织进行标准化,通常用来存储历史气象数据。netcdf文件开始的目的是用于存储气象科学中的数据,现在已经成为许多数据采集软件的生成文件的格式。hdf5由美国伊利诺伊大学厄巴纳‑香槟分校开发,是一种常见的跨平台数据储存文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。38.具体地,以存储格点数据的netcdf文件为例,在本公开的一些实施例中,在上述步骤104,首先,可以使用c语言从netcdf的数据库中读取netcdf文件,获取得到netcdf文件的经度的数组、纬度的数组以及数据本身的数组。以降水数据为列,从netcdf的数据库中读取存储降水数据的netcdf文件,获取降水数据的经度的数组、纬度的数组以及降水数据的数组。通过上述经度的数组和纬度的数组可以获取得到上述格点数据对象结构中x轴和y轴的分辨率、x轴和y轴的位置的坐标信息等。通过降水数组来判断是否有无效值或者是否为无效值。获取了上述这些数据信息后,将这些信息按照上述格点数据对象结构的结构顺序以二进制形式写入上述格点数据对象结构。39.可以理解,在本公开的实施例中,待处理的格点数据可以包括多组格点数据,其中,如前所述,上述每一组格点数据可以包括以二维矩阵形式存储的格点数据的数据部分以及对上述数据部分进行描述的描述信息。此外,上述每一组格点数据对应的至少一项属性信息可以包括:格点数据对应的时间信息、高度信息以及采样信息等等中的一项或多项,亦可称为上述格点数据的源数据。40.在本公开的一些实施例中,上述格点数据可以为气象格点数据。例如,上述格点数据可以具体为日降水量格点数据。在这种情况下,上述日降水量格点数据可以包括多组日降水量格点数据,也即一段时间内多天的日降水量格点数据。其中,每一组日降水量格点数据对应一个日期;每一组日降水量格点数据的数据部分为以二维矩阵形式存储的某区域内各个由不同经纬度确定的地理位置在其对应日期内的总降水量。数据部分所对应的描述信息则通常用于描述上述区域的地理位置,例如,上述区域的经纬度范围以及各个格点的精度等。此时,上述每一组日降水量格点数据对应的至少一项属性信息则可以包括该降水量格点数据对应的日期。又例如,上述格点数据可以具体为平均日温格点数据。在这种情况下,上述平均日温格点数据可以包括多组平均日温格点数据,其中,每一组平均日温格点数据对应一个日期以及一个地理高度;每一组平均日温格点数据的数据部分即为以二维矩阵形式存储的某区域内各个由不同经纬度确定的地理位置的平均日温。数据部分所对应的描述信息则通常用于描述上述区域的地理位置,例如,上述区域的经纬度范围以及各个格点的精度等。此时,上述每一组平均日温格点数据对应的至少一项属性信息则可以包括该平均日温格点数据对应的日期以及地理高度。41.在步骤106,针对每一组格点数据,按照预先设定的格点数据对象结构将上述格点数据封装为格点数据对象。42.在本公开的一个或多个实施例中,上述步骤106中,按照预先设定的格点数据对象结构将上述格点数据封装为格点数据对象的具体实现方法可以如图2所示,具体包括:在步骤202,从上述格点数据中提取出描述信息和数据部分。43.具体的,如前所述,上述格点数据通常都包括以二维矩阵形式存储的数据部分以及对数据部分进行描述的描述信息,因此,在本步骤中,可以根据格点数据的存储方式从上述格点数据中分离出描述信息和数据部分。44.在步骤204,按照预先设定的格点数据对象结构,分别对上述描述信息和数据部分进行处理。45.具体地,在本步骤中,可以根据格点数据对象结构中各个数据项的含义以及类型对提取的描述信息和数据部分分别进行处理,使其满足上述格点数据对象结构的要求。46.更进一步,还可以根据业务的需求对格点数据数据部分中各个格点的值进行预处理。例如,通常在现有数据集中,每个格点数据文件对应一个具体的日期和一个具体的时次。如果实际的业务需求仅需要对应一个具体日期的数据,则可以将对应相同日期不同时次的格点数据文件中的数据进行预处理(相加、平均等)得到满足实际的业务需求的数据。47.在步骤206,按照预先设定的格点数据对象结构,将处理后描述信息和数据部分封装为格点数据对象。48.具体地,在本步骤中,可以按照各个数据项在格点数据对象结构中的排列顺序将处理后的描述信息和数据部分按照格点数据对象结构组合在一起,得到上述格点数据对象。49.在本公开的示例中,上述图2所示的过程可以通过一个sql函数实现。该函数在底层可以用c语言编写。通过该函数可以按字节读取格点数据并将其转换成格点数据对象。50.仍以气象格点数据为例,若待处理的气象格点数据为日降水量格点数据,则通过上述步骤106,可以将每一日的降水量格点数据分别封装为一个格点数据对象。若待处理的气象格点数据为平均日温格点数据,则通过上述步骤106,可以将每一日对应同一地理高度的平均日温格点数据分别封装为一个格点数据对象。51.在步骤108,针对每一组格点数据,将上述格点数据对象写入上述数据库表一条数据记录的格点数据字段,以及将上述至少一项属性信息分别写入上述数据记录中与其对应的属性字段。52.在本公开的实施例中,对每一组格点数据可以生成一条数据记录。53.具体地,在本步骤中,可以使用sql中插入数据的sql语句实现将上述格点数据对象写入上述数据库表一条数据记录的格点数据字段,以及将上述至少一项属性信息分别写入上述数据记录中与其对应的属性字段的操作。例如,在一个示例中,可以通过sql语句“insertintotest1(data,attri1,attri2…)values(grid,value1,value2…)”在数据库中名称为test1的数据库表的各个字段中插入数据;其中,data代表上述数据库表中的格点数据对象字段;attri1,attri2等代表上述数据库表中的至少一个属性字段;grid代表格点数据对象;value1,value2等代表上述格点数据对应的至少一个属性信息。54.仍以气象格点数据为例,若待处理的气象格点数据为日降水量格点数据,则通过上述步骤108,可以在预先建立的数据库表中生成多条记录,其中每一条记录存储了一天的日降水量。也就是说,每一条记录中分别存储了该记录对应的日期以及对应的日降水量格点数据对象。若待处理的气象格点数据为平均日文格点数据,则通过上述步骤108,可以在预先建立的数据库表中生成多条记录,其中每一条记录存储了在一定地理高度下一天的平均日温。也就是说,每一条记录中分别存储了该记录对应的日期、地理高度,及其对应的平均日温格点数据对象。55.可以看出,在本公开的实施例中,通过上述图1所示的方法,可以将格点数据从数据集迁移至数据库的一张数据库表中,从而可以充分利用数据库自身对数据的查询和运算能力,无需进行任何数据下载即可实现格点数据的实时查询和快速分析处理,大大缩短所需的处理时间,提高数据处理效率。特别是对于海量的气象格点数据而言,以上述方式在将气象格点数据迁移至数据库的数据库表之后,可以直接对数据库中的数据进行查询和各种运算,无需进行任何气象格点数据的下载,从而大大缩短查询、分析气象格点数据时所需的处理时间,提高数据处理效率。56.下面以noaa_olr长波辐射信息作为上述格点数据为例,说明上述将格点数据从数据集迁移至数据库表的方法。noaa卫星是美国国家海洋大气局的第三代实用气象观测卫星。olr全称为射出长波辐射(outgoinglongwaveradiation),为极轨卫星遥感所监测的"地‑气"系统射出长波辐射信息。如此,noaa_olr即为noaa卫星遥感所监测的"地‑气"系统射出长波辐射信息,在本公开中可以简称为noaa_olr格点数据。从数据集中获取的noaa_olr格点数据的文本文件记录了同一天两次采集的olr辐射波长资料。则在本公开的方法中,首先,从noaa卫星的官网读取对应某一天的noaa_olr格点数据的文本文件;然后,获取该天内两次采集的olr辐射波长的数值;再对两次采集的olr辐射波长的数值计算平均值,并将计算得到的平均值作为格点数据对象的数据部分。接下来,根据noaa卫星官网给出的空间范围以及经纬度信息获取得到起始点坐标、x轴和y轴分辨率、行列数等;然后,将这些信息按照上述格点数据对象结构的结构顺序以二进制形式写入上述格点数据对象的描述部分。如此即可得到一个格点数据对象。之后,可以进一步生成该格点数据对象的标识;将其对应的时间作为该格点数据对象的时间属性信息,并进一步与格点数据对象一起生成一条数据记录,写入名为noaa_olr的数据库表中。如此,生成的noaa_olr的数据库表可以包含多条数据记录,其中每一条数据记录对应了某一天noaa卫星遥感所监测的"地‑气"系统射出长波辐射信息。57.在上述图1所示的将格点数据从文件系统迁移至数据库表的实施例的基础之上,本公开的一个或多个实施例还公开了对数据库表中的格点数据的数据查询方法和运算方法。58.下面就详细描述对数据库表中的格点数据的数据查询方法。在本公开的实施例中,上述数据查询方法可以包括根据一项或多项属性信息的数据查询和根据空间信息的空间查询两个方面的内容。当然,在本公开的实施例中,还可以同时根据一项或多项属性信息以及空间信息进行联合查询。具体地,在本公开的实施例中,上述空间信息具体是指上述格点数据中各个待查询格点的位置信息。对应气象格点数据,上述空间信息具体可以是指上述气象格点数据中各个待查询格点的经纬度信息。59.图3显示了根据一项或多项属性信息进行数据查询的方法流程图。如图3所示,该方法可以包括:在步骤302,接收针对一项或多项属性信息的查询条件。60.在本步骤中,上述查询条件可以是一项或多项属性信息的值或者取值范围。例如,对于气象格点数据,可以是待查询气象格点数据的时间值或时间范围,高度值或高度范围,采样值或采样值范围等等。61.在步骤304,根据接收的针对一项或多项属性信息的查询条件从上述数据库表中选择满足上述查询条件的数据记录。62.在步骤306,输出所选择的数据记录中由格点数据字段记录的格点数据对象。63.具体地,在本步骤中,可以使用sql中选择数据的sql语句实现将上述根据接收的针对一项或多项属性信息的查询条件从上述数据库表中选择满足上述查询条件的数据记录并输出对应的格点数据对象的操作。例如,在一个示例中,可以通过sql中的select语句实现上述数据查询。例如,在本公开的一个示例中,上述数据库表存储了中华人民共和国地域范围内2021年1月份每一天的日降水量数据。此外,上述查询条件可以具体为2021年1月1日。则通过图3所示的数据查询方法,可以得到存储了中华人民共和国地域范围内2021年1月1日的日降水量数据的格点数据对象。64.可见,通过上述查询方法可以根据一项或多项属性信息的进行格点数据的快速查询。并且,由于上述查询操作是对数据库中数据的直接操作,充分利用了数据库的查询能力,而无需将先将所有数据下载到本地,再进行数据查询,因而可以实现格点数据的快速查询。65.图4显示了根据空间信息进行数据查询的方法流程图。如图4所示,该方法可以包括:在步骤402,接收待查询的空间信息。66.在本步骤中,上述空间信息作为一种查询条件,可以为待查询的格点数据中数据部分所对应的x轴和y轴的坐标范围。以气象数据为例,上述空间信息通常是指待查询区域的经纬度范围。在本公开的一些实施例中,上述经纬度范围可以是根据用户输入的数值范围确定的经纬度范围,也可以是根据用户在图形用户界面上绘制的多边形确定的经纬度范围。在本公开的一些实施例中,上述空间信息可以由java脚本对象简谱(json)对象来承载。67.在步骤404,针对数据库表中的每一条记录,从格点数据字段中读取第一格点数据对象,并根据上述空间信息从第一格点数据对象中提取第二格点数据对象。68.在步骤406,输出上述第二格点数据对象。69.在本公开的实施例中,上述步骤404的具体实现方法可如图5所示,具体包括如下步骤:在步骤502,从格点数据字段中读取第一格点数据对象中的第一数据部分和第一描述信息;在步骤504,从上述第一数据部分中提取与上述空间信息对应的第二数据部分;在步骤506,根据上述空间信息对上述第一描述信息进行更新,生成与第二数据部分对应的第二描述信息;在步骤508,按照格点数据对象结构,将生成的第二描述信息和第二数据部分封装为第二格点数据对象。70.下面以一个具体的示例详细说明上述步骤504所述从上述第一数据部分中提取与上述空间信息对应的第二数据部分的方法。71.如前所述,在上述步骤502,可以从格点数据字段中读取第一数据部分和第一描述信息。72.则上述步骤504可以包括:在步骤5042,从上述第一描述信息中获取第一数据部分对应的x轴和y轴的位置(起始经纬度)、分辨率、以及第一数据部分的行列数。73.在步骤5044,第一数据部分对应的x轴和y轴的位置(起始经纬度)、分辨率、以及第一数据部分的行列数计算得到上述第一数据部分的空间范围。74.具体地,在本公开的实例中,上述第一数据部分空间范围的计算公式如下:x轴结束经度=x轴起始经度+x轴分辨率*列数;y轴结束纬度=y轴起始纬度+y轴分辨率*行数;在步骤5046,根据上述空间信息,确定上述空间信息所对应的第一数据部分的行列号。75.具体的,在本公开的示例中,上述空间信息可以具体为用户输入的经纬度范围maxlat、minlat、maxlon和minlon;其中,maxlat代表上述经纬度范围中纬度的最大值;minlat代表上述经纬度范围中纬度的最小值;maxlon代表上述经纬度范围中经度的最大值;以及minlon代表上述经纬度范围中经度的最小值。76.具体地,在上述步骤5046中,根据x轴的起始经度是最大经度还是最小经度以及y轴的起始纬度是最大纬度还是最小纬度的不同,具体确定上述空间信息所对应的第一数据部分的行列号的方法也是不同的。77.例如,如果x轴起始经度是最大经度,那么确定maxlon、minlon对应的列号方法如下:(1)确定maxlon是否大于x轴起始经度。响应于确定maxlon大于x轴起始经度,将maxlon赋值为x轴起始经度。响应于确定maxlon小于或等于x轴起始经度,保持maxlon不变。78.(2)确定minlon是否小于x轴结束经度。响应于确定minlon小于x轴结束经度,将minlon赋值为x轴结束经度。响应于确定minlon大于或等于x轴结束经度,保持minlon不变。79.(3)计算maxlon与minlon对应的列号,具体计算公式如下:(x轴起始经度‑minlon)/abs(x轴分辨率)=minlon的列号;(x轴起始经度‑maxlon)/abs(x轴分辨率)=maxlon的列号;其中,abs()代表求绝对值运算。80.又例如,如果x轴起始经度是最小经度,那么确定maxlon、minlon对应的列号方法如下:(1)确定minlon是否小于x轴起始经度。响应于确定minlon小于x轴起始经度,将minlon赋值为x轴起始经度。响应于确定minlon大于或等于x轴起始经度,保持minlon不变。81.(2)确定maxlon是否大于x轴结束经度。响应于确定maxlon大于x轴结束经度,将maxlon赋值为x轴结束经度。响应于确定maxlon小于或等于x轴结束经度,保持maxlon不变。82.(3)计算maxlon与minlon的对映的列号,具体计算公式如下:(minlon‑x轴起始经度)/abs(x轴分辨率)=minlon的列号;(maxlon‑x轴起始经度)/abs(x轴分辨率)=maxlon的列号;对于确定maxlat、minlat对应的行号的方法与确定maxlon、minlon对应列号的方法基本相同,在此就不重复说明了。这样,通过上述方法就获取得到maxlat、minlat、maxlon和minlon范围对映的行列号。83.在步骤5048,根据上述空间信息所对应的第一数据部分的行列号,从第一数据部分提取出相应行列号所对应的数据作为上述第二数据部分。84.接下来,在步骤506中,将根据上述空间信息所对应的第一数据部分的行列号重新确定上述第二数据部分对应的行列数,以及上述行列数内的x轴和x轴的起始经纬度、分辨率等信息,从而生成上述第二描述信息。接下来,在步骤508,将生成的第二描述信息和第二数据部分封装为第二格点数据对象,作为空间查询的结果返回给用户。85.可见,通过上述查询方法可以根据空间信息的进行格点数据的快速查询,也即实现格点数据的空间查询,由于上述空间查询操作是对数据库中数据的直接操作,充分利用了数据库自身的查询能力,而无需将先将数据下载到本地,因而可以实现格点数据的快速空间查询。例如,在本公开的一个示例中,上述第一格点数据对象存储了中华人民共和国地域范围内2021年1月1日的日降水量数据;其中,上述第一描述信息可以包括中华人民共和国地域范围的起始经纬度、分辨率、以及日降水量数据的行列数等等;上述第一数据部分包括对应上述第一描述信息所描述范围内各个经纬度格点的日降水量数值。此外,上述待查询的空间信息可以具体为北京市的经纬度范围。则通过上述图4和图5所示的空间查询方法,可以得到代表了北京市在2021年1月1日的日降水量数据的第二格点数据对象。其中,上述第二描述信息可以包括北京市地域范围的起始经纬度、分辨率、以及日降水量数据的行列数等等;上述第二数据部分包括对应上述第二描述信息所描述范围内各个经纬度格点的日降水量数据。86.可以看出,通过上述图4和图5所示的空间查询的方法,可以实现对格点数据的空间裁剪功能,也即根据给定的空间信息对格点数据进行空间裁剪。具体地,可以将待裁剪出的格点数据的空间信息作为上述图4所示的空间信息,这样,上述图4的执行结果,也即第二格点数据对象即可被视为是根据给定的空间信息对格点数据进行空间裁剪后的结果。进一步,还可以创建一张新的数据库表,并将上述第二格点数据对象写入到新数据库表的格点数据字段中即可得到用于存储对源数据库表中格点数据进行空间裁剪后的格点数据的新的数据库表。87.在本公开的另一些实施例中,还可以通过组合上述图3、图4和图5所示的方法实现同时根据一项或多项属性信息以及空间信息进行联合查询的方法,具体过程在此不再重复说明。并且,由于这种联合查询的方法也充分利用了数据库自身的查询能力,而无需将先将数据下载到本地,因而可以实现格点数据的快速联合查询。88.在生成了上述数据库表之后,除了上述数据查询功能,本公开的一些实施例还提供了对上述数据库表中格点数据进行数学运算的运算方法。在本公开的实施例中,上述运算可以包括:加、减、乘、除、求平均、求最大值、求最小值、求方差以及降维运算等等。89.从操作对象的角度来看,上述运算可以是对单一的一个格点数据对象进行的运算操作,还可以是对两个或者多个格点数据对象进行的运算操作。90.在本公开的一些实施例中,上述对一个格点数据对象进行的运算操作可以包括:加、减、乘、除以及降维运算等等。上述对一个格点数据对象进行的运算操作还可以进一步分为包括运算参数的运算操作,例如加、减、乘、除运算操作等等,以及不包括运算参数的运算操作,例如降维运算等等。91.具体地,在本公开的实施例中,上述对一个格点数据对象进行的运算且包括运算参数的运算可以通过如下方法实现:首先,确定需要进行的运算类型以及运算参数。92.其次,提取待运算的格点数据对象的数据部分。93.在本步骤中,可以先通过上述查询方法从已建立的数据库表中提取出待运算的格点数据对象,然后再从中提取出待运算的格点数据对象的数据部分。94.然后,根据上述运算类型以及运算参数对提取的数据部分的各个格点上的值分别进行运算。95.最后,返回运算后得到的格点数据对象。96.例如,对于加设定数值的运算,则运算类型为加,运算参数为该设定数值。在这种情况下,上述方法的运算结果即为将一个格点数据对象数据部分的每个格点的值加上该设定数值后得到的格点数据对象。97.在本公开的实施例中,上述对一个格点数据对象进行的运算且不包括运算参数的运算可以通过如下方法实现:首先,确定需要进行的运算类型。98.其次,提取待运算的格点数据对象的数据部分。99.在本步骤中,可以先通过上述查询方法从已建立的数据库表中提取出待运算的格点数据对象,然后再从中提取出待运算的格点数据对象的数据部分。100.然后,根据上述运算类型对提取的数据部分的各个格点上的值进行运算。101.最后,返回运算后得到的格点数据对象。102.例如,对于降维运算而言,则不需要运算参数。通常,上述降维运算包括按照x轴(经度)降维和按照y轴(纬度)降维两大类,具体的运算类型也包括求和、求平均、求最大值或求最小值等。其中,按照x轴的降维是指对数据部分的每一列中的多个数值进行运算(求和、求平均、求最大值或求最小值等),得到一个数值。按照y轴的降维是指对数据部分的每一行中的多个数值进行运算(求和、求平均、求最大值或求最小值等),得到一个数值。通过上述降维运算,每个格点数据对象的数据部分由二维矩阵降维成为一维数组。也即运算后得到的格点数据对象中的数据部分变成了一维数组。103.在本公开的另一些实施例中,对两个或者多个格点数据对象进行的运算操作包括:加、减、乘、除、求平均、求最大值或求最小值等。这种运算通常要求参与运算的两个或多个格点数据对象应当具有相同的规格和精度,也即参与运算的两个或多个格点数据对象中的数据部分应当是具有相同数量的行和列,并且行和列的精度应该是相同的。104.具体地,在本公开的实施例中,上述对两个或者多个格点数据对象进行的运算可以通过如下方法实现:首先,确定需要进行的运算类型。105.其次,提取待运算的两个或多个格点数据对象的数据部分。106.在本步骤中,可以先通过上述查询方法从已建立的数据库表中提取出待运算的两个或多个格点数据对象,然后再从中提取出待运算的两个或多个格点数据对象的数据部分。107.然后,根据上述运算类型对提取的两个或多个数据部分的各个对应格点上的值分别进行运算。108.最后,返回运算后得到的格点数据对象。109.例如,对于求平均的运算,则运算类型为求平均。在这种情况下,上述方法的运算结果即为多个格点数据对象数据部分的每个对应格点的值求平均后得到的格点数据对象。110.仍以日降水量格点数据为例,如果需要求一个月的总降水量则可以从数据库表中提取出待统计一个月内各日的降水量格点数据对象;再将各日的降水量格点数据对象的数据部分进行相加,得到上述待统计一个月的月降水总量的格点数据对象。具体地,其数据部分的每个格点的值为该月内该格点所对应经纬度位置的总降水量。如果在需要求一个月内的平均降水量,则可以从数据库表中提取出待统计一个月内各日的降水量格点数据对象;再将再将各日的降水量格点数据对象的数据部分进行求平均运算,得到上述待统计一个月的月平均降水量的格点数据对象。具体地,其数据部分的每个格点的值为该月内该格点所对应经纬度位置的平均降水量。111.通常情况下,上述查询和运算功能通常是可以结合使用的。也即,先给出查询条件(包括针对一项或多项属性信息的查询条件和/或空间信息),在查询到满足该查询条件的一个或多个格点数据对象之后,再对查询得到的一个或多个格点数据对象进行指定的运算操作,从而得到运算结果。该运算结果可以是一个或者多个格点数据对象。112.在本公开的示例中,上述各种查询和运算功能均可以通过sql函数实现。这些函数在底层可以用c语言编写。通过这些函数或者可以根据查询条件完成对格点数据的查询,或者可以根据运算类型和运算参数对格点数据进行相应的运算。113.在上述格点数据查询和运算功能的基础之上,可以实现各种对格点数据对象的统计和分析功能。而且由于这些查询和运算方法充分利用了数据库本身的查询和计算能力,而无需将先将数据下载到本地,因而可以实现格点数据的快速运算、各类统计以及分析。例如,对于降水数据来说,如果不采用本公开的格点数据处理方法,在进行空间查询、平均值计算、做差等计算功能以及在进最大值、最小值等统计功能时需要先将降水数据下载传输到本地,再通过本地部署的计算统计服务进行处理,最后才能将计算的结果发送给用户。显而易见,这样的数据处理方式会造成数据的冗余传输,导致整个数据计算流程的效率降低。而采用本公开的数据处理方法后,在进行数据查询时,只需要按照sql语法规范调用包装好的用于格点数据计算的计算函数,如查询、平均值计算、最大值最小值计算等。这种方法不需要将数据传输到本地再进行计算,而是直接在数据库中进行计算,并由数据库直接将结果返回给用户,从而可以提高整个数据计算流程的效率。114.如前所述,上述格点数据查询以及运算的结果返回的均是格点数据对象,如果根据业务的需求需要返回的是其他格式的格点数据文件,则本公开的实施例还可以进一步根据其他格式的标准要求,将待返回的格点数据重新封装为其他格式后,再返回给用户。115.需要说明的是,虽然本公开的示例均是以气象格点数据为例进行的说明,但是,除了气象格点数据之外,本公开所提供的上述方法也适用于其他格点数据。可以理解,气象格点数据与其他格点数据的区别仅在于描述信息的不同因而可能适用不同的格点数据对象结构,但是格点数据对象结构的不同并不影响本公开所提供方法的实施。因此,本公开提供的方法同样适用于其他格点数据。116.基于上述方法,本公开的一个或多个实施例还提供了一个格点数据的处理装置,其内部结构如图6所示,主要包括:数据库表生成模块602,用于根据预先设定的格点数据结构,在数据库中创建一张数据库表。其中,上述数据库表可以包括:一个格点数据字段以及至少一个属性字段。117.数据读取模块604,用于从数据集中读取待处理的多组格点数据及每一组格点数据对应的至少一项属性信息;数据封装模块606,用于针对每一组格点数据,按照上述格点数据对象结构将上述格点数据封装为格点数据对象;以及数据写入模块608,用于针对每一组格点数据,将上述格点数据对象写入上述数据库表一条数据记录的格点数据字段,以及将上述至少一项属性信息分别写入上述数据记录中与其对应的属性字段。118.在本公开的一些实施例中,上述格点数据的处理装置还可以进一步包括数据查询模块,用于接收查询条件,根据上述查询条件从数据库表中提取相应的格点数据对象,并返回提取的格点数据对象。具体地,上述查询条件包括针对一项或多项属性信息的查询条件和/或空间信息。119.在本公开的一些实施例中,上述格点数据的处理装置还可以进一步包括数据运算模块,用于确定运算类型,根据上述运算类型对一个或多个格点数据对象进行运算,并返回经过上述运算得到的格点数据对象。120.其中,上述各个模块的具体实现方式可以参考前述实施例的方法,在此不再重复说明。121.需要说明的是,本公开一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成上述的方法。122.上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。123.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。124.上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。125.图7为本公开实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器710、存储器720、输入/输出接口730、通信接口740和总线750。其中,处理器710、存储器720、输入/输出接口730和通信接口740通过总线750实现彼此之间在设备内部的通信连接。126.处理器710可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本公开实施例所提供的格点数据的处理方法。127.存储器720可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器720可以存储操作系统和其他应用程序,在通过软件或者固件来实现本公开实施例所提供的格点数据的处理方法时,相关的程序代码保存在存储器720中,并由处理器710来调用执行。128.输入/输出接口730用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。129.通信接口740用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。130.总线750包括一通路,在设备的各个组件(例如处理器710、存储器720、输入/输出接口730和通信接口740)之间传输信息。131.需要说明的是,尽管上述设备仅示出了处理器710、存储器720、输入/输出接口730、通信接口740以及总线750,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。132.本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd‑rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。133.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。134.另外,为简化说明和讨论,并且为了不会使本公开一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。135.尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。136.本公开一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1