发明内容
基于此,本发明提供一种电网模型数据的分类分块抽取方法及系统,能够快速的对大数据量电网模型数据进行分类、分块抽取。
为解决上述问题,本发明采用如下的技术方案:
一种电网模型数据的分类分块抽取方法,包括以下步骤:
顺序解析源CIM XML文件中的对象,判断每个对象所对应的分类文件是否存在,若否则创建该类型的分类文件,若是则追加此对象的数据到该分类文件中,并最终形成全部分类文件;
解析所述分类文件中对象类型为变电站的根类型文件,针对每个变电站对象创建一个CIM XML的分块文件,并将每个变电站对象写入其对应的变电站文件中;
创建对象编码与分块文件的映射表,记录变电站对象编码与输出的分块文件之间的映射关系;
根据预先制定的类型处理顺序解析所有分类文件中的每个对象,并根据对象类型以及预先制定的每个类型对象在电网模型层次中所采用的关联,查找到当前对象所对应的上层对象的编码,通过所述上层对象的编码及所述映射表查找到所述上层对象所对应的分块文件,然后将当前对象追加写入到所述上层对象所对应的分块文件中。
一种电网模型数据的分类分块抽取系统,包括:
分类模块,用于顺序解析源CIM XML文件中的对象,判断每个对象所对应的分类文件是否存在,若否则创建该类型的分类文件,若是则追加此对象的数据到该分类文件中,并最终形成全部分类文件;
分块文件创建模块,用于解析所述分类文件中对象类型为变电站的根类型文件,针对每个变电站对象创建一个CIM XML的分块文件,并将每个变电站对象写入其对应的变电站文件中;
映射表创建模块,用于创建对象编码与分块文件的映射表,记录变电站对象编码与输出的分块文件之间的映射关系;
分块模块,用于根据预先制定的类型处理顺序解析所有分类文件中的每个对象,并根据对象类型以及预先制定的每个类型对象在电网模型层次中所采用的关联,查找到当前对象所对应的上层对象的编码,通过所述上层对象的编码及所述映射表查找到所述上层对象所对应的分块文件,然后将当前对象追加写入到所述上层对象所对应的分块文件中。
由以上方案可以看出,本发明的一种电网模型数据的分类分块抽取方法及系统,首先解析源文件输出分类文件,然后依赖该分类文件并结合制定的类型处理顺序以及对象类型所采用的关联进行分块处理,从而将电网模型全数据的XML文件快速分类、分块输出到多个基于CIM的XML文件中。本发明采用内存结合CIM XML文件的方式处理数据,解决了基于内存或者数据库的传统方法所存在的问题,仅需要在依赖内存存储对象的唯一标识信息,代替了在内存中建立完整的数据对象关联关系网,这样极大减少了内存的使用,加快了数据的处理速度,也消除了对数据库的依赖,扩大了的程序的适用范围。
具体实施方式
下面结合附图以及具体的实施例,对本发明的技术方案作进一步的描述。
参见图1所示,一种电网模型数据的分类分块抽取方法,包括以下步骤:
步骤S101,顺序解析源CIM XML文件中的对象,判断每个对象所对应的分类文件是否存在,若否则创建该类型的分类文件,若是则追加此对象的数据到该分类文件中,并最终形成全部分类文件,完成分类处理,然后进入步骤S102。
解析源XML文件,最终形成全部分类文件,如Substation.xml、VoltageLevel.xml、Bay.xml、Breaker.xml、Asset.xml、AssetModelFeature.xml、BreakerTest.xml等(如下表1所示,需要说明的是,表中还有很多如Breaker类的设备类型在表中未全部列出),这些分类文件中分别包含的内容是相应类的对象,如Substation类(变电站)、VoltageLevel类(电压等级区)、Bay类(间隔)、Breaker类(开关)、Asset类(资产)、AssetModelFeature类(技术参数)、BreakerTest类(试验)等。
表1分类CIM XML文件
分类文件 |
分类文件中包含的对象类型 |
Substation.xml |
Substation(变电站) |
VoltageLevel.xml |
VoltageLevel(电压等级区) |
Bay.xml |
Bay(间隔) |
Breaker.xml |
Breaker(开关) |
Asset.xml |
Asset(资产) |
AssetModelFeature.xml |
AssetModelFeature(技术参数) |
BreakerTest.xml |
BreakerTest(试验) |
步骤S102,解析所述分类文件中对象类型为变电站的根类型文件(Substation.xml),针对每个变电站对象创建一个CIM XML的分块文件,并将每个变电站对象写入其对应的变电站文件中,然后进入步骤S103。
作为一个较好的实施例,本步骤中所创建的CIM XML分块文件的文件名称可以设置为变电站对象编码,例如:03-06-B-12000016.xml。
本步骤中初步建立了所有分块文件,分块的单位变电站(本实施例中以变电系统为例进行说明,即变电系统下分块的单位为变电站。当为输电系统时,分块的单位为线路)。因此,分块文件的个数为源模型文件中变电站(或线路)对象的个数,各个分块文件的名称可以为其对应的变电站(或线路)对象的编码。至此步骤,各个分块文件中的内容仅写入了其对应的变电站(或线路)对象,后续步骤将剩余的所有对象不断增加写入其对应的分块文件,最终将完成分块文件的完全建立。
步骤S103,创建对象编码与分块文件的映射表,记录变电站对象编码与输出的分块文件之间的映射关系;
如下表2所示,映射表中将记录源模型文件中各个对象与其写入的分块文件间的映射关系。至此步骤,映射表中的内容仅记录了变电站或线路对象与其写入的分块文件间的映射关系,后续步骤会将剩余的所有对象与其写入的分块文件间的映射关系不断于映射表中增加记录,最终完成完整的映射表。
表2对象编码与分块文件的映射
对象编码 |
分块文件名称 |
03-06-B-12000016 |
03-06-B-12000016.xml |
… |
… |
步骤S104,根据预先制定的类型处理顺序解析所有分类文件中的每个对象,并根据对象类型以及预先制定的每个类型对象在电网模型层次中所采用的关联,查找到当前对象所对应的上层对象的编码,通过所述上层对象的编码及所述映射表查找到所述上层对象所对应的分块文件,然后将当前对象追加写入到所述上层对象所对应的分块文件中。
作为一个较好的实施例,所述预先制定的类型处理顺序可以如下:Substation类(变电站)--VoltageLevel类(电压等级区)--Bay类(间隔)--Breaker类(开关)--Asset类(资产)--AssetModelFeature类(技术参数)--BreakerTest类(试验)……并且,作为一个较好的实施例,如下表3所示,所述预先制定的每个类型对象在电网模型层次中所采用的关联可以分别为:根类型无关联、VoltageLevel.MemberOf_Substation、Bay.MemberOf_VoltageLevel、Breaker.MemberOf_EquipmentContainer、Asset.PowerSystemResources、AssetModelFeature.Asset、BreakerTest.Asset……
表3对象类型的处理顺序及其采用的关联
处理顺序号 |
对象类型 |
对应的关联 |
1 |
Substation |
根类型,不需要特征关联 |
2 |
VoltageLevel |
VoltageLevel.MemberOf_Substation |
3 |
Bay |
Bay.MemberOf_VoltageLevel |
4 |
Breaker |
Breaker.MemberOf_EquipmentContainer |
5 |
Asset |
Asset.PowerSystemResources |
6 |
AssetModelFeature |
AssetModelFeature.Asset |
7 |
BreakerTest |
BreakerTest.Asset |
需要说明的是,本发明实施例中的类型处理顺序以及对象类型所采用的关联是可灵活配置的,这极大的增强了程序的适用范围,可通过简单的更改配置实现对不同CIM版本的电网模型数据分类、分块处理。
在制定好类型处理顺序以及每个类型对象在电网模型层次中所采用的关联之后,下面举例对本步骤进行详细说明:
假设步骤S102创建了分块文件03-06-B-12000016.xml,其中包含变电站对象03-06-B-12000016,并且步骤S104在映射表中记录了03-06-B-12000016<->03-06-B-12000016.xml间的映射关系。按照预先制定的类型处理顺序,在Substation类后,将处理VoltageLevel类。比如对于VoltageLevel对象03-06-B-12000016-0-E,根据步骤预先制定的关联为VoltageLevel.MemberOf_Substation,找到其关联对象为03-06-B-12000016,根据映射表中的记录,03-06-B-12000016的分块文件为03-06-B-12000016.xml,因此,将VoltageLevel对象03-06-B-12000016-0-E也写入分块文件03-06-B-12000016.xml中。
同上面的方法,对每类对象做处理,追加写入到其上层对象对应的输出文件中。其处理过程见下列表4-表9(每类对象采用的关联及对应的分块文件):
表4VoltageLevel与Substation的关联及对应的分块文件
表5Bay与VoltageLevel的关联及对应的分块文件
表6Breaker与Bay的关联及对应的分块文件
表7Asset与Breaker的关联及对应的分块文件
表8AssetModelFreature与Asset的关联及对应的分块文件
表9BreakerTest与Asset的关联及对应的分块文件
作为一个较好的实施例,在所述步骤S104将当前对象追加写入到所述上层对象所对应的分块文件中之后,还可以包括步骤S105:增加当前对象编码与其写入的分块文件的映射,并记录到所述步骤S103中所创建的映射表中。事实上这里存在一个循环,即在步骤S104中每处理一个对象写入到其对应的输出文件中,都需要将此对象与其对应输出文件的映射关系写入映射表(这些映射将在处理后续对象时使用到),直至步骤S101中生成的所有分类文件的所有内容都处理完,则循环结束,完成分块处理。
当按步骤S104和步骤S105完成所有类型所有对象的解析时,所有对象的数据已被分块至其对应的变电站分块文件,并已在映射文件中建立了其对象编码与分块文件映射,至此完成分块处理。作为一个较好的实施例,在所述步骤S105增加当前对象编码与其写入的分块文件的映射并记录到所述映射表中之后,还可以包括步骤S106:将未能找到对应的分块文件并写入的对象(即孤立数据对象)进行分类统计输出,且该输出同样为基于CIM的XML文件,以便于对源数据正确性的校验。
需要说明的是,本发明实施例中最终输出的分类、分块数据文件都是基于CIM的XML文件,可以直接作为电网模型数据的交换文件使用,从而大大方便了数据信息的交互共享。另外,本发明实施例中是以变电站为根类型作为分块的单位作最先处理,并建立相应的分块文件的。本领域的技术人员需知:当对变电部分的模型进行处理时,应使用变电站作为根类型;而当对输电部分的模型进行分类分块处理时,相应地,应该使用线路作为根类型。
与上述一种电网模型数据的分类分块抽取方法相对应,本发明还提供一种电网模型数据的分类分块抽取系统,如图2所示,包括:
分类模块101,用于顺序解析源CIM XML文件中的对象,判断每个对象所对应的分类文件是否存在,若否则创建该类型的分类文件,若是则追加此对象的数据到该分类文件中,并最终形成全部分类文件;
分块文件创建模块102,用于解析所述分类文件中对象类型为变电站的根类型文件,针对每个变电站对象创建一个CIM XML的分块文件,并将每个变电站对象写入其对应的变电站文件中;
映射表创建模块103,用于创建对象编码与分块文件的映射表,记录变电站对象编码与输出的分块文件之间的映射关系;
分块模块104,用于根据预先制定的类型处理顺序解析所有分类文件中的每个对象,并根据对象类型以及预先制定的每个类型对象在电网模型层次中所采用的关联,查找到当前对象所对应的上层对象的编码,通过所述上层对象的编码及所述映射表查找到所述上层对象所对应的分块文件,然后将当前对象追加写入到所述上层对象所对应的分块文件中。
作为一个较好的实施例,所述分块模块还可以用于在所述将当前对象追加写入到所述上层对象所对应的分块文件中之后,增加当前对象编码与其写入的分块文件的映射,并记录到所述映射表中。
作为一个较好的实施例,本发明实施例的电网模型数据的分类分块抽取系统还可以包括:孤立数据对象输出模块,用于在所述增加当前对象编码与其写入的分块文件的映射并记录到所述映射表中之后,将未能找到对应的分块文件并写入的孤立数据对象进行分类统计输出,且该输出为CIM XML文件,以便于对源数据正确性的校验。
作为一个较好的实施例,所述预先制定的类型处理顺序可以如下:变电站-电压等级区-间隔-开关-设备资产-试验。本发明实施例中的类型处理顺序以及对象类型所采用的关联是可灵活配置的,可通过简单的更改配置实现对不同CIM版本的电网模型数据分类、分块处理。
上述一种电网模型数据的分类分块抽取系统的其它技术特征与本发明的一种电网模型数据的分类分块抽取方法相同,此处不予赘述。
通过以上方案可以看出,本发明的一种电网模型数据的分类分块抽取方法及系统,首先解析源文件输出分类文件,然后依赖该分类文件并结合制定的类型处理顺序以及对象类型所采用的关联进行分块处理,从而将电网模型全数据的XML文件快速分类、分块输出到多个基于CIM的XML文件中。本发明采用内存结合CIM XML文件的方式处理数据,解决了基于内存或者数据库的传统方法所存在的问题,仅需要在依赖内存存储对象的唯一标识信息,代替了在内存中建立完整的数据对象关联关系网,这样极大减少了内存的使用,加快了数据的处理速度,也消除了对数据库的依赖,扩大了的程序的适用范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。