一种变电站矢量图形的转换方法
技术领域
本发明涉及移动电力系统自动化技术领域,具体涉及一种变电站矢量图形转换方法。
背景技术
国网“大运行”建设体系下的变电站监控系统须具有远程浏览功能,也就是说调度主站可以实时浏览到变电站的画面和实时刷新数据,而目前调度和变电站图形系统异构,图形文件格式不兼容,无法实现调度系统和变电站系统图形的无缝对接,智能调度系统普遍采用G语言(图形化的程序语言)格式的图形文件,而变电站监控系统大都支持SVG(Scalable Vector Graphics,可缩放矢量图形)格式的图形文件,要实现变电站远程浏览的功能需在变电站监控平台上部署SVG到G语言图形转换模块,实现SVG到G图形格式的转换,这样调度主站才能远程浏览到变电站监控系统的画面和数据。
变电站监控系统大都支持的SVG格式的图形文件,是一种基于XML(extensible markup language,可扩展标记语言)的用来描述二维图形的标记语言,如图1所示为SVG图形包含对象的示意图,由图1可知,SVG图形包括矢量图形、点阵图像和文本三部分,矢量图形包括基本图形和路径,基本图形包括直线、圆、椭圆、矩形、多边形和点划线六种,点阵图像中的图像处理定义了蒙板和滤镜两种特殊效果,文本中的文字方面,定义了按路径排列、文字排版、内嵌字型等应用特征。
智能调度系统普遍采用的G语言格式的图形文件,是一种基于标记的遵循XML标准的纯文本语言,G语言组成元素及其关系示意图如图2所示,G语言组成元素按照其类型分为基本绘图元素和电网图形元素,基本绘图元素用以在目标画布上画出图形元素,包括矩形、圆形、椭圆形、直线、折线和多边形等标准形状;电网图形元素用来表示电力设备,分为图元方式、间隔模板方式和其他方式三大类。图元方式通过引用外部定义的图元表达图形绘制形状;间隔模板方式通过图元和连接线采用不同绘制方式,表达同一类电力间隔模板类型,如二分之三接线、三分之四接线、双母带旁路、单母带旁路、双母接线、单母接线等间隔模板类型,电力图形元素通过引用间隔模板实例化电力间隔设备图形对象;其它方式电网图形元素主要指线状类型电力设备,通过直接存储基本绘图元素和电力领域属性表达电网设备对象特征,如母线、线路、连接线等。
如图3所示为SVG与G语言元素之间的对应关系图,SVG与G语言元素之间的对应关系从基本图形元素和电力图形元素两个方面来分析:基本图形元素包括线段、矩形、椭圆、圆、折线、多边形、弧线、静态文本等,电力图形元素包括母线、断路器、隔离刀闸、接地 刀闸、三卷变压器、两卷变压器、负荷、动态文本、连接线、热敏点、光字牌等。基本图形元素中SVG的circle元素以pin=”yes”和不含pin属性来对应G语言的pin(端子)和circle元素,电力图形元素中EnergyConsumer为负荷、ConnectLine为连接线、poke为热敏点、Gzp为光字牌、Status为状态、State为工况、Token为标志牌。
发明内容
本发明提供的一种将变电站监控系统支持的SVG格式的图形文件转换为智能调度系统采用的G语言格式的图形文件,所述方法包括:
步骤S1,解析SVG图形文件对各个电力设备层节点进行分析;
所述电力设备层节点为所述SVG图形节点;
步骤S2,将所述SVG图形文件里电力设备层的电力图形对象分为母线、电力变压器、文本层、连接线层、光字牌、椭圆弧和其它普通导电设备九种类别,按照属性分别转换为G语言格式的图形。
本发明提供的第一优选技术方案中:所述步骤S2中:
所述图形对象为母线时,如果所述母线的属性为x,y,transform,xlink:href,将所述母线转化为端点坐标序列d属性的G语言文件母线;否则将所述母线转换为对应的属性的G语言文件母线;
所述图形对象为电力变压器时,所述电力变压器包括三卷变压器和两卷变压器:
将所述三卷变压器三侧的key和class属性提取出来,添加至转换后对应的G语言文件三卷变压器的key1、key2、key3、voltype1、voltype2、voltype3属性中,其它属性一一转换为对应G语言文件变压器属性;将两卷变压器两侧的key和class属性提取出来,添加至转换后对应的G语言文件两卷变压器的key1、key2、voltype1、voltype2属性中,其它属性一一转换为对应G语言文件变压器属性;
所述图形对象为文本层时,根据节点是否含有key属性判断所述文本是静态文本或者动态文本,如果是静态文本,转换为对应G语言文件中的Text,并根据对应关系一一转换为对应的Text属性;如果是动态文本,转换为对应G语言文件中的DText,并根据对应关系一一转换为对应的DText属性;
所述图形对象为连接线层时,将points转换为G语言文件连接线的d属性,将obj1、obj2、pin1、pin2属性组合后转化为G语言文件连接线的link属性;
所述图形对象为其它普通电导设备时,按照其属性对应关系,一一转换为对应的G语言格式的普通导电设备元素。
本发明提供的第二优选技术方案中:所述图形对象为椭圆弧线时,rx,ry分别表示所述椭圆弧线所在椭圆的长、短半轴长度;
SVG图形文件中,
表示所述椭圆弧线是否以x轴旋转;(x
1,y
1)表示所述椭圆弧线的起始点坐标;fA表示所述椭圆弧线是否为大弧;fS表示所述椭圆弧线是否顺时针;(x
2,y
2)表示所述椭圆弧线终点坐标;
G语言图形中,(cx,cy)所述椭圆的中心点坐标;θ1表示所述椭圆弧线起始点弧度;△θ表示椭圆弧线终点与起点弧度的差值;
所述椭圆弧线从SVG图形格式到G语言图形格式的转换步骤流程包括:
步骤a,根据SVG图形中的 以及起始点坐标(x1,y1)得出(x1,y1)的导数(x1',y1'):
步骤b,根据所述椭圆的长短半轴长度rx、ry和起始点坐标的导数(x1',y1')计算G语言图形中所述椭圆的中心点坐标的导数(cx',cy'):
其中,如果fA≠fS,符号取正;如果fA=fS,符号取负;
步骤c,根据(c
x',c
y')和
计算所述椭圆的中心点坐标(c
x,c
y):
步骤d:根据所述椭圆的长短半轴长度和SVG图形中的起始点坐标的导数(rx',ry')和(x1',y1')计算G语言图形中的起始点弧度θ1和终点与起点弧度的差值△θ:
其中mod360°表示对360°取余运算,如果左侧夹角运算结果处于(-360°,360°)范围之外, 通过取余运算使Δθ处于(-360°,360°)范围之内。
本发明提供的第三优选技术方案中:所述步骤S2中,所述光字牌从SVG图形格式到G语言图形格式的转换步骤流程包括:
步骤A:遍历所有SVG图形中的光字牌中的描述文本,设定汉字占用1个单元的宽度,字符占用0.5个单元的宽度,找到该描述最大文本占用的单元数txtMaxLen。
步骤B:设定光字牌占用1个单元的宽度,光字牌和描述文本间隙占用0.5个单元,按照步骤A计算出的最大文本占用的单元数(txtMaxLen)作为一个单元占用大小的计算依据,即一个单元占用大小(unitSize)=光字牌对象宽度(cohumnWidth)/(txtMaxLen+1.5),保证每列宽度能容纳所有光字牌的描述文本,同时计算出光字牌图元的缩放因子(scale)=unitSize/20.0;
步骤C:根据光字牌行列布局参数,包括光字牌对象的数目、行数、列数、每个光字牌对象的宽度、水平间距、竖直间距,按照列优先布局的原则,光字牌先从上到下排列,然后再从左到右排列,光字牌对应的文本紧贴光字牌横向间隔半个单元向右排列,计算出每个光字牌图元和所对应描述文本的左上角位置坐标(gzpX,gzpY)和(textX,textY):
textX=gzpX+1.5*unitSize;
tentY=gzpY。
其中(X,Y)表示整个光字牌控件左上角坐标,i表示第i个光字牌图元,horInterval表示光字牌对象的水平间距,rowNum表示光字牌对象布局的行数,height表示整个光字牌控件的高度;
步骤D:在计算出的坐标基础上做一个补偿,所述补偿的大小根据所述步骤B中计算出的缩放因子scale求出:(1-scale)*unitSize/2。
本发明提供的第四优选技术方案中:所述字符包括数字、字母和符号,所述汉字和字符的宽度按照经验设定;按照光字牌大小和描述文本一致性,设定光字牌占用1个单元的宽度,为保证布局美观,设定光字牌和描述文本间隙占用0.5个单元。
本发明提供的第五优选技术方案中:所述方法还包括:
步骤S1′,解析所述SVG图形文件defs下的所有symbol节点,提取获得并统计出所有图元的图元类型,在G图元的存储目录下分别建立提取的所有图元类型的子目录,根据图元 名称将不同图元类型的图元放在其对应的图元类型子目录中;将同一图元类型不同的图元放在该图元类型子目录下不同的图元文件中;将同一图元不同状态的图元放在同一个图元文件中并用sta属性对不同的状态加以区分;
其中,所述SVG图形文件defs下的所有symbol节点为SVG图元节点;
步骤S2′,提取所述相同图元名称不同状态号的图元定义节点作为一个G语言图元文件的转换数据源,将组成所述G语言图元文件的基本图形元素转换成对应的G语言格式的图形元素,在所述图形元素中增加sta属性对应图元名称中的状态号;
步骤S3′,根据步骤S2′中转换的G语言格式的图形元素生成一个G语言格式的图元文件,按照所述图元文件的图元类型放在对应的图元类型子目录下;
步骤S4′,判断是否所有图元都分类分层的放在对应的图元类型子目录下,是,执行步骤S2′,否,结束转换。
本发明提供的第六优选技术方案中:所述步骤S2′还包括:按照属性分别转换为G语言格式的图形,同时生成图形对应的信号转发点表,以作为远程浏览数据刷新的数据源。
本发明提供的一种变电站矢量图形的转换方法的有益效果包括:
1、本发明提供的一种变电站矢量图形的转换方法,具体为一种将变电站监控系统大都支持的SVG格式的图形文件转换为智能调度系统普遍采用的G语言格式的图形文件的方法,实现变电站监控系统远程浏览的功能,同时采用模块化功能区分,各个模块之间耦合性较弱,方便程序的升级和改造。
2、该转换方法对图形对象进行分类,按照其属性对应关系进行转换,其中,图形对象为椭圆弧线时,采用坐标平移和旋转的方法进行转换,大大简化了计算过程,并且优化了参数转化算法;图形对象为光字牌时,在基于SVG光字牌控件参数的基础上,采用布局优化算法,使得光字牌图元和描述文本分布均匀和整体布局美观。
附图说明
图1为SVG图形包含对象的示意图;
图2为G语言组成元素及其关系示意图;
图3为SVG与G语言元素之间的对应关系图;
图4为本发明提供的一种矢量图像转换的实施例一的方法流程图;
图5为本发明提供的一种矢量图像转换的实施例二的转换框架图;
图6为本发明提供的一种矢量图像转换的实施例二的方法流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明提供一种变电站矢量图形的转换方法,具体为一种将变电站监控系统大都支持的SVG格式的图形文件转换为智能调度系统普遍采用的G语言格式的图形文件的方法,实现变电站监控系统远程浏览的功能。
该转换方法的实施例一具体步骤流程图如图4所示,包括:
步骤S1,解析SVG图形文件对各个电力设备层(G/XXX_Layer,其中XXX表示任意可能的字符)节点进行分析。
电力设备层节点为SVG图形节点。
步骤S2,将SVG图形文件里电力设备层的电力图形对象分为母线、电力变压器、文本层、连接线层、光字牌、椭圆弧和其它普通导电设备九种类别,按照属性分别转换为G语言格式的图形。
绝大数图形的对象属性存在一一对应关系或者进行简单拆分组合后可对应。
图形对象为母线时,如果母线的属性为x,y,transform,xlink:href,将该母线转化为端点坐标序列d属性的G语言文件母线;其它属性的母线转换为对应的属性的G语言文件母线。
图形对象为电力变压器时,该电力变压器包括三卷变压器和两卷变压器,将三卷变压器三侧的key和class属性提取出来,添加至转换后对应的G语言文件三卷变压器的key1、key2、key3、voltype1、voltype2、voltype3属性中,其它属性一一转换为对应G语言文件变压器属性;将两卷变压器两侧的key和class属性提取出来,添加至转换后对应的G语言文件两卷变压器的key1、key2、voltype1、voltype2属性中,其它属性一一转换为对应G语言文件变压器属性。
图形对象为文本层时,根据节点是否含有key属性判断该文本是静态文本或者动态文本,如果是静态文本,转换为对应G语言文件中的Text,并根据对应关系一一转换为对应的Text属性;如果是动态文本,转换为对应G语言文件中的DText,并根据对应关系一一转换为对应的DText属性。
图形对象为连接线层时,将points转换为G语言文件连接线的d属性,将obj1、obj2、pin1、pin2属性组合后转化为G语言文件连接线的link属性。
图形对象为其它普通电导设备时,按照其属性对应关系,一一转换为对应的G语言格式的普通导电设备元素。
图形对象的属性在SVG图形文件和G语言格式的图形文件中不存在对应关系并且在进行组合拆分后不形成对应关系的,经过处理后将SVG图形对象转换成G语言格式的图形对象。
其中,属性在SVG图形文件和G语言格式的图形文件中不存在对应关系并且在进行组合拆分后不形成对应关系的图形对象包括椭圆弧线和光字牌。
SVG图形文件中的椭圆弧线对象,由弧上首尾两点坐标、外围椭圆半轴长度、旋转角度和绘制方向描述的,即d="M x0 y0 A rx ry x-axis-rotation large-arc-flag sweep-flag x y";而G语言图形文件中的椭圆弧线对象是由圆弧的外接矩形的形状和圆弧首尾两点的角度决定的,即"cx,cy,rx,ry,a1,a2",其中rx,ry分别表示椭圆的长、短半轴长度;(x0,y0)为SVG图形中椭圆弧起始点坐标;x-axis-rotation表示SVG图形中椭圆弧线是否以x轴旋转;large-arc-flag表示SVG图形中椭圆弧线是否为大弧;sweep-flag表示SVG图形中椭圆弧线是否顺时针;(x,y)为SVG图形中椭圆弧终点坐标;(cx,cy)分别表示G语言图形文件中椭圆的中心点坐标;a1,a2表示G语言图形文件中椭圆弧起点、终点角度。
要实现椭圆弧从SVG图形格式到G语言图形格式的转换,关键是计算出椭圆弧中心点的坐标,把坐标轴源点平移到(x
1,y
1)与(x
2,y
2)连线的中心点,然后旋转到与椭圆坐标轴平齐的位置,其中SVG图形文件中,x-axis-rotation用
表示;(x
0,y
0)用(x
1,y
1)表示;large-arc-flag用fA表示;sweep-flag用fS表示;(x,y)用(x
2,y
2)表示。G语言图形中a
1用θ
1表示;a
2-a
2用△θ表示。
具体的,椭圆弧从SVG图形格式到G语言图形格式的转换步骤流程包括:
步骤a,根据SVG图形中的
以及起始点坐标(x
1,y
1)得出(x
1,y
1)的导数(x
1',y
1'):
步骤b,根据椭圆的长短半轴长度rx和ry和起始点坐标的导数(x1',y1')计算G语言图形中椭圆的中心点坐标(cx,cy)的导数(cx',cy'):
其中,如果fA≠fS,符号取正;如果fA=fS,符号取负。
步骤c,根据(cx',cy')计算椭圆弧中心点(cx,cy):
步骤d:根据椭圆的长短半轴长度(rx,ry)和SVG图形中的起始点坐标(x1,y1)的导数(rx',ry')和(x1',y1')计算G语言图形中的起始弧度θ1和终点与起点弧度的差值Δθ:
其中mod360°表示对360°取余运算,如果左侧夹角运算结果处于(-360°,360°)范围之外,通过取余运算使Δθ处于(-360°,360°)范围之内。
终点与起点弧度的差值Δθ计算公式由两个矢量(ux,uy)和(vx,vy)的夹角的计算方法得出:
光字牌对象由光字牌图元和描述文本两部分组成的。在SVG图形中是用一个光字牌控件描述整个间隔的所有光字牌对象,并且该光字牌控件包含有所有光字牌对象的布局参数,包括整个控件外围矩形形状、所包含光字牌对象的数目、行数、列数、每个光字牌对象的宽度、水平间距、竖直间距;而在G语言图形中光字牌图元和描述文本是分开描述的,并且光字牌图元只对应一个光字牌信号。
要实现光字牌从SVG到G格式的转换,需根据光字牌控件所提供光字牌信号、描述文本和布局参数进行拆分和布局,也就是说按照SVG提供的布局模式离散化光字牌信息。具体的,该转换过程包括:
步骤A:遍历所有SVG图形中的光字牌中的描述文本,设定汉字占用1个单元的宽度,字符占用0.5个单元的宽度,找到该描述最大文本占用的单元数(txtMaxLen)。
字符包括数字、字母和符号,汉字和字符的宽度按照经验设定。
步骤B:设定光字牌占用1个单元的宽度,光字牌和描述文本间隙占用0.5个单元,按照步骤A计算出的最大文本占用的单元数(txtMaxLen)作为一个单元占用大小的计算依据,即一个单元占用大小(unitSize)=光字牌对象宽度(columnWidth)/(txtMaxLen+1.5),保证每列宽度能容纳所有光字牌的描述文本,同时计算出光字牌图元的缩放因子(scale) =unitSize/20.0;
考虑到光字牌大小和描述文本一致性,设定光字牌也占用1个单元的宽度,为保证布局美观,光字牌和描述文本间隙占用0.5个单元。
步骤C:根据光字牌行列布局参数,包括光字牌对象的数目、行数、列数、每个光字牌对象的宽度、水平间距、竖直间距,按照列优先布局的原则,光字牌先从上到下排列,然后再从左到右排列,光字牌对应的文本紧贴光字牌横向间隔半个单元向右排列,计算出每个光字牌图元和所对应描述文本的左上角位置坐标(gzpX,gzpY)和(textX,textY):
textX=gzpX+1.5*unitSize;
tentY=gzpY。
其中(X,Y)表示整个光字牌控件左上角坐标,i表示第i个光字牌图元,horInterval表示光字牌对象的水平间距,rowNum表示光字牌对象布局的行数,height表示整个光字牌控件的高度。
步骤D:在计算出的坐标基础上做一个补偿,该补偿的大小根据步骤B计算出的缩放因子(scale)得出:(1-scale)*unitSize/2。
该补偿是考虑到光字牌缩放会产生坐标的偏移,因此对坐标位置做一个补偿,使光字牌回到原来的位置上。
实施例二:
本发明提供的一种矢量图形转换方法的实施例二,包括三大模块:SVG文件解析模块SVGParser,对SVG图元节点和图形节点解析;G图元文件生成模块GElementConverter,生成分类分层的G语言图元文件序列集;G图形文件生成模块GDisplayConverter,生成G语言图形文件,同时生成图形对应的信号转发点表,以作为远程浏览数据刷新的数据源。其具体图形转换框架图如图5所示,该方法输入为SVG图形文件,输出为分类分层的G语言图元文件序列集、G语言图形文件和信号转发点表。
图元由基本图形元素:线段、矩形、椭圆、圆、折线、多边形、弧线和静态文本等组成,图元的名称用“图元类型:图元名称状态号”定义,因此根据各个图元的名称提取该图元的图元类型。
其中图元类型为对图元所属设备类型的区分,包括断路器Breaker、隔离刀闸Disconnector、接地刀闸Ground Disconnector、电容器Capacitor、电抗器Reactor、三卷变Transformer3、两卷变Transformer2等。图元名称是对具体图元对象的名称描述。状态号是对图元处于不同状态下的标识,比如“Disconnector:双位刀闸左上竖0”表示该图元是属于隔离刀闸类型,对象名称为双位刀闸左上竖,处于断开状态。
本发明提供的一种矢量图形转换的实施例二的方法流程图如图6所示,具体包括:
步骤S1′,解析SVG图形文件defs下的所有symbol节点,提取获得并统计出所有图元的图元类型,在G图元的存储目录下分别建立提取的所有图元类型的子目录,根据图元名称将不同图元类型的图元放在其对应的图元类型子目录中;将同一图元类型不同的图元放在该图元类型子目录下不同的图元文件中;将同一图元不同状态的图元放在同一个图元文件中并用sta属性对不同的状态加以区分;解析SVG图形文件对各个电力设备层节点进行分析。
其中,SVG图形文件defs下的所有symbol节点为SVG图元节点。
步骤S2′,提取相同图元名称不同状态号的图元定义节点作为一个G语言图元文件的转换数据源,将组成该G语言图元文件的基本图形元素转换成对应的G语言格式的图形元素,在该图形元素中增加sta属性对应图元名称中的状态号。
步骤S3′,根据步骤S2′中转换的G语言格式的图形元素生成一个G语言格式的图元文件,按照其图元类型放在对应的图元类型子目录下。
步骤S4′,判断是否所有图元都分类分层的放在对应的图元类型子目录下,是,执行步骤S2′,否,结束转换。
优选的,步骤S2′还包括:将SVG图形文件里电力设备层的电力图形对象分为母线、电力变压器、文本层、连接线层、光字牌、椭圆弧和其它普通导电设备九种类别,按照属性分别转换为G语言格式的图形,同时生成图形对应的信号转发点表,以作为远程浏览数据刷新的数据源。
以上虽然根据附图对本发明的实施例进行了详细说明,但不仅限于此具体实施方式,本领域的技术人员根据此具体技术方案进行的各种等同、变形处理,也在本发明的保护范围之内。