可缩放矢量图形(SVG)在城市轨道交通自动化系统中的应用--控制网



可缩放矢量图形(SVG)在城市轨道交通自动化系统中的应用
企业:控制网 日期:2007-07-18
领域: 点击数:3165



1  引言
 
    可缩放矢量图形格式(Scalable Vector Graphics),简称为SVG,是基于XML(Extensible Markup Language,扩展性标记语言)的开放的矢量图形格式。作为XML的一种应用,SVG继承了XML的诸多优点,同时,又具有文件量小、无级缩放、易于修改、支持重用以及良好的交互性等等一系列优点。作为W3C正式推荐的图形格式,SVG拥有众多的支持机构。
  
    城市轨道交通自动化系统是典型的计算机集成系统,既包括电力监控、环境与设备监控、防灾等单个专业的应用,又包括多个专业集成的综合监控系统,这些系统主要都基于大型通用的SCADA(Supervisory Control And Data Acquisition)软件构建,其中监控画面的生成是工程实施主要内容之一,工作量大,能否快速生成各类复杂的监控图符和监控画面是评价系统好坏的重要参考指标。简单的基本图形比如直线、矩形、圆、折线、多边形等是生成监控画面的基本元素,通过旋转、闪烁、变色、组合等各种属性或操作可生成各种复杂图符。为监视现场设备的工作状态,图符需要根据采集到的现场设备工作状态而改变显示属性,展现出丰富的画面信息。例如,在实施环境与设备监控系统时,需要生成如下表所示的风机、空调柜监视图符,并且图符的颜色等属性应随现场设备的状态变化而改变。


  
    一般来说,与专业的矢量图形软件相比,监控画面生成软件更关注于图符特性的定义与现场设备的连接,而在绘制图符的方便性、易用性和灵活性上都相对较弱。因此,直接利用专业矢量图形软件来绘制静态图符,监控画面生成软件导入相应静态图形后再定义各种动态信息和显示刷新脚本将起到事半功倍的效果。SVG作为标准的开放矢量图形格式,当前Adobe公司的Illustrator、Corel公司的CorelDraw等都支持SVG文件格式,可将SVG文件作为专业矢量图形软件和自动化软件间的桥梁。

2  典型矢量图形软件导出的SVG文件格式分析
  
    Adobe Illustrator 是Adobe公司推出的一款成功的结合SVG功能的矢量图形编辑软件,它具有强大的矢量图形组态功能,可以支持大多数SVG图形功能,并且支持SVG格式图形的导出。利用Adobe Illustrator提供的绘图工具,可绘制出各种基本图形及各种复杂图形,通过另存为SVG文件,用普通的文本文件查看工具可详细分析Adobe Illustrator CS2 v12.0导出的SVG文件格式,为在城市轨道交通自动化系统中进行应用奠定基础。

    2.1 基本图形
  
    下表列出部分Adobe Illustrator支持的基本图形及部分SVG代码实例。


    2.2 图形文档
    
    在Adobe Illustrator中创建一个不包含任何SVG向量图形的空文档,其相应的SVG导出代码如下:


    Adobe Illustrator CS2在文档第一行中声明编码格式为UTF-8格式,这样可以保证中文的正常显示。其中,<svg>为SVG图形文档的根元素,包含了部分跟文档有关的属性,例如width是文档的宽度,height为文档的高度。

    2.3 图层
    
    Adobe Illustrator CS2支持图层的概念,并且图层是可以嵌套的。图层相关的SVG代码实例为:


    如上述代码可知,图层在SVG中是用<g>元素表示,所有位于同一个<g>图层元素下的任何元素都在一个图层内,图层的嵌套即<g>元素的嵌套,<g>图层元素具有的id属性表示图层名,此图层名在SVG导出时是唯一的。如果SVG图形中只有一个图层,则没有任何表示图层的<g>元素,<svg>根元素即表示唯一的图层。

    2.4 组合对象
    
    下面的SVG代码从Adobe Illustrator CS2导出,说明了Adobe Illustrator CS2中组合对象的概念:


 
    如上述代码可知,组合对象在SVG中也是用<g>元素表示的,在同一个<g>元素下的图形对象就是一个单独的组合对象。组合对象也是可嵌套的。每个组合对象<g>元素也有唯一的id值,表示此组合对象的名称。

3  SVG图形文件的导入设计
    
    北京和利时系统工程股份有限公司独立自主开发的MACS-SCADA系统,作为一个符合城市轨道交通自动化系统应用要求的SCADA软件平台,实现了完整的监控画面生成软件功能。对于静态图形绘制,主要功能包括:
    
    1) 支持的基本图形元素包括直线、矩形、圆角矩形、椭圆、圆、折线、多边形、三次贝塞尔曲线、弧线、拱形、饼形等。
    
    2) 支持图层概念,但不支持图层的嵌套。
    
    3) 支持对象的组合,并且支持组合对象的嵌套。
    
    4) 图形对象拥有线宽、线色、填充色、旋转角度、对象名等的属性。

    依据对Adobe Illustrator导出的SVG文件的分析,对比MACS-SCADA系统具有的功能,可发现除个别SVG元素外,系统支持SVG图形的导入。
    
    为直接利用专业矢量图形软件来绘制静态图符,系统支持SVG图形的导入。



   
对于图形的各种属性,系统也能够支持相关的导入。

    导入SVG文档是通过微软提供的MSXML SDK对SVG文档进行解析,在内存中形成DOM树,并通过SDK提供的接口对DOM树进行读写来实现。SVG文档中图形元素有很多共同的属性,系统通过基类CImportSVGBase来完成公共属性的导入,通过相应的派生类导入SVG文档中的具体图形。这些类的关系结构如下:


 
    由于MACS-SCADA系统不支持图层的嵌套,但是SVG文档是可以多级图层嵌套的,故导入时需要进行将图层内部的嵌套图层转换为系统中的组合对象。
SVG中任一图形对象都具有transform属性,transform属性中最复杂的变换方式就是矩阵变换,对应的二维坐标变换公式:

    MACS-SCADA 中图形对象也支持矩阵变换,以旋转中心和旋转角度来表示。为实现对SVG矩阵变换的支持,需要从矩阵变换的参数(a、b、c、d、e、f)中计算出旋转角度和旋转中心。假设旋转角度为 ,旋转中心点为坐标原点((0,0),平移距离为(tx,ty),则对应的SVG的矩阵变换公式为:

    从而可得到以下对应关系a = d = cos( ),b = -c = sin( ),e = tx,f = ty,旋转的中心点为坐标原点(0,0)。

4  总结
      
    总的来说,可缩放矢量图形SVG在城市轨道交通自动化系统中有广阔的应用前景,本文探讨了如何利用SVG作为桥梁,使得系统可以利用通用绘图软件强大的绘图功能来提高易用性和工作效率。另外,系统还可以利用SVG对脚本的支持和提供的动画特性实现动态画面,实现在浏览器中查看监控画面;或者将监控画面导出为SVG文件,提高系统的开放性,方便系统与其它系统集成和互联。SVG的开放性和基于XML的特点,决定了SVG在静态画面生成、动态特性连接、图形文件格式开放性、WEB应用等方面都可以促进自动化系统的发展。

参考资料

[1] W3C,《Scalable Vector Graphics (SVG) Full 1.2 Specification》,W3C Working Draft,April 2005,
http://www.w3.org/TR/SVG12
[2] Oswald Campesato,《Fundamentals of SVG Programming-Concepts to Source Code》,Charles River Media Incorporated,2004
[3] 徐海军,李建华,《SVG在工作流图形监控中的应用》,信息技术,2006年02期
[4] Rodrigo García García,《SVG for SCADA Applications:A practical approach》,
http://www.svgopen.org/2004/papers/SVGforSCADA/
[5] 贺睿,苗雪芃,陈剑云,《基于SVG的SCADA监控画面生成软件的设计与开发》,工业控制计算机,2006年06期
[6] Adobe Systems Incorporated,《Adobe Illustrator CS2使用指南》,2005

 

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: