基于XML Schema的水利元数据可视化方法*
2013-12-30盛震宇
盛震宇,冯 钧
(河海大学计算机与信息学院,南京211100)
遥感卫星的发展和遥感影像分辨率的提高使得通过遥感手段获得的数据量呈几何级数增长[1],而且会随着卫星技术、传感器技术的发展持续快速地增长[2]。利用卫星遥感数据可以实现对水文信息的大范围,全天候连续不断的动态监测。水利部提出建设水利遥感中心,对涉水卫星遥感数据进行统一管理,提高涉水卫星遥感数据的共享与利用率。由于遥感影像中的信息必须由专业软件解析,需要为其建立元数据才便于管理者获取信息[3]。元数据存储于XML文档中,缺乏统一的管理模式,所以需要一种元数据可视化方法,使得管理者直观地利用友好的可视化界面增强机器与用户的交互能力,以便更好地处理元数据及掌握水利信息,并使用户的操作简便舒适。从某个方面来说,界面对于用户而言就是整个软件系统[4]。据统计,在一个应用程序中平均48%的代码用于用户界面,大约50%的执行时间用于执行用户界面程序[5]。并且随着软件系统规模的不断扩大,开发界面所耗费的时间和成本也将成倍增加[6]。因此,高效地开发可视化界面是提高软件开发效率的关键。
目前为止,可视化界面生成领域已经有了一些研究,如文献[6-9]。这些文献所采用数据可视化方法均取得一定效果。但是,它们缺乏样式库信息,不能将界面生成和输入验证集成到一起。同时,如果采用XML描述界面元素,方法过于灵活,缺乏统一的描述标准。
本文针对水利元数据的可视化需求提出了一种元数据可视化方法,以XML Schema作为可视界面描述语言,以XIC模型作为界面生成框架,能够实现界面元素的精确定位和布局,并将界面生成与输入验证集成在一起。
1 XML Schema与遥感元数据简介
XML是可扩展标记语言(Extensible Markup Language)的简称。它是国际组织 W3C为适应WWW的应用将SGML(Standard Generalized Markup Language)标准进行简化形成的标记语言[10]。它既具有强大的自我描述能力,又具有适合网络应用的可扩展性。DTD和XML Schema都是用来约束和规范XML文档的,但是通常认为XML Schema很快就会替代DTD在大多数的网络应用程序中被广泛使用[11]。因为XML Schema针对将来的额外内容是可扩展的,其内容比DTD丰富,作用也更大。XML Schema是以XML语言编写而成的,支持数据类型,支持名称空间(Namespaces)等[12]。它可以对XML数据进行更好的描述与约束。
遥感影像元数据用于描述数据集的内容、质量、表示方式、空间参考系、管理方式以及其他特征信息,是实现遥感影像的共享与应用的关键[13-14]。本系统所采用遥感影像元数据体系是基于ISO19115地理信息元数据标准的结构与内容,参考我国地理信息元数据标准基础上,针对遥感影像数据类型与应用方向,运用统一建模语言(UML)与数据字典,对遥感影像元数据的结构与元素进行描述和定义,而形成的遥感影像数据库元数据体系。在遥感影像元数据中主要分为5大项:描述信息、空间信息、数据源信息、生产过程信息、分发信息[15]。本文中的遥感元数据由XML文档存储,这是为了便于修改。
鉴于 XML Schema的优越性,本文以 XML Schema作为遥感元数据可视界面描述语言,形成一套规范的界面描述方式,并在规范的同时灵活地修改XML Schema元素。同时,由于XML Schema具有验证XML文档的功能,以其作为界面描述语言可以很好的将界面生成及数据验证集成起来。
2 元数据可视化方法
2.1 水利元数据设计
水利元数据分为3层:元数据子集、元数据实体和元数据元素。其中元数据元素是元数据的最基本单元,元数据实体是同类元数据的集合,元数据子集是相互关联的元数据实体或元数据元素的集合。标准规定了元数据又分为两级,一级元数据是唯一标识一个数据集(数据集、数据集系列、要素和属性)所需要最少的元数据实体和元素。其特征涉及数据集的坐标范围、关键词、单位与发行情况。该级元数据主要用于对外发布,服务对象为非专业人员,便于他们了解和检索数据集,它描述的信息为一般数据的基础特征。二级元数据是一个相对较为完整的数据集,该级元数据将一级元数据中的元数据内容做进一步细化,服务对象为专业人员,主要反映以测区为单位的数据更新的基本信息、数据质量信息和空间数据表示信息。数据更新是指在基础地理数据更新业务完成后进行数据集更新,反映数据集和元数据更新的历史,是以测区为最小描述单位。
2.2 XIC模型
本文针对水利元数据可视化方法抽象出了XIC模型,X(XMLSchema)是元数据描述模型,I(Interface)是界面展示模型,C(Code)是界面在机器中的表示模型。图1所示的是水利元数据可视化模型体系结构。
图1中,根据水利元数据的需求关系,将其分解成相应的数据模型、功能模型和界面模型。功能模型由功能需求所决定,通常使用UML类图来描述,并通过分析用户的界面需求来确定界面功能、界面框架、界面之间的关系以及界面与数据关系的需求。系统的框架结构由功能模型与界面模型共同形成。界面数据描述抽象为数据模型,由数据流图来描述,主要用来确定界面中的数据需求,数据之间的关系以及界面对数据的约束。系统中的数据对象由功能模型和数据模型共同形成。界面模型由界面模板表达描述,主要处理界面元素的可视化显示和界面布局问题,需要考虑具体界面表示语言的特征,加以合适的描述。
图1 XIC模型
元数据的可视化首先需要根据XIC模型确定元数据的XML Schema表述,然后根据可视化界面生成引擎来生成相应的界面代码,最后将界面代码解析为可视界面。用户在得到界面后便可以进行输入,输入完成后还需要进行输入验证并返回验证结果。
2.3 可视化界面的XML Schema描述
XML Schema对界面的描述主要分成3个部分:界面框架描述、数据对象描述、控件样式描述。
(1)界面框架描述
元数据的最终可视界面由HTML语言编写,HTML与XML语言都属于标记语言,它们的文档对象模型都呈现树状,因此有一个很好的对应关系。在XML Schema中以根节点作为系统的描述性节点,其中定义了系统信息。第1层子节点用来描述子系统信息,第2层子节点用来描述各可视界面的信息,第3层子节点用来描述界面信息。XML Schema支持自定义属性,所以用户可以定义一些特殊的界面属性,增强其可扩展性。XML Schema所描述的系统的逻辑结构如图2。
图2 系统逻辑结构
XML Schema中设置了多个属性用来对界面加以控制,其中包括对内容及显示形式的控制。Version属性描述版本声明,Encoding属性描述字符编码格式。<xs:schema>标签用来定义文档根元素,根元素里面嵌套基本元素、简单或复合类型。为了增强可视化界面描述的扩展性,我们在XML Schema文档中自定义了一些元素,例如:xmlns:title属性用于描述文档名;xmlns:keywords属性描述关键词;xmlns:annotation属性描述文档注释;xmlns:pattern属性描述了引用模板样式等。文档所用的XML Schema与XML语言语法一致,因此可以使用XPath或XQuery等查询定位。
(2)数据对象描述
在界面展示的过程中存在用户的交互,为了防止越界信息的录入,我们对数据对象有专门的描述。XML Schema中Type属性定义了这些数据对象的数据类型,包括基本类型和高级类型等。如枚举类型由<xs:simpleType>标签定义。如下所示:
<xs:simpleType>标签定义了枚举类型数据对象的信息。<xs:restriction>标签用来定义简单类型值的类型,base属性定义了类型。<xs:enumeration>标签定义了枚举项,其中的value属性定义了值,id属性作为其唯一标识。<xs:限定>标签对简单类型做了限定,value属性具体描述了限定形式。一些复杂的数据类型也可以由<xs:complexType>标签定义,其基本格式与框架定义相似。其中<xs:sequence>标签定义了该类型中元素出现的顺序。
(3)控件样式描述
为了使可视化效果更好,还需要对界面控件进行美化,即对控件样式加以描述。控件的样式由自定义属性styledefine:style定义,该属性描述格式与HTML语言中CSS的定义类似。除了用样式属性定义外,在界面节点中引入了模板属性,该属性的值为模板库中的模板编号,控件的样式也可以直接用模板中的定义方式来限定。样式模板采用XML语言描述,将所有的描述文档组织起来就成为了样式模板库。
2.4 可视化界面生成
当对水利元数据用XML Schema描述后,就可以根据可视化界面生成引擎生成相应界面的代码,最后由相应的代码编译器就可以转换成相应界面。所以我们的核心问题是如何生成界面代码。由于水利部中采用B/S架构设计了数据交换系统,因此其最终界面代码为HTML语言。我们所设计的方案适用于将XML Schema转换为HTML,当然也可以是其他同类型的标记语言。元数据可视界面与元数据XML的对应关系如图3所示。
图3 元数据可视界面与元数据文档转换关系
(1)界面框架及控件的生成流程
系统第一步读取XML Schema文件,定位到待生成界面的根节点,然后按照深度优先遍历的顺序访问其下每一个子节点,根据子节点的类型映射生成相应的控件。在映射生成过程中,若访问到<xs:element>类型节点,则生成输入框控件;若访问到<xs:simpleType>类型节点,则生成列表控件;若访问到<xs:complexType>类型节点,则生成表格控件。其中的几个具体方法如下:
①增加一个界面元素的方法
②删除一个界面元素的方法
③创建一个界面元素的方法
(2)控件样式设置
界面框架及控件生成后,就需要对界面和控件样式按照样式需求做处理。我们采用模板描述界面元素的样式属性,里面对不同控件的不同属性做了限制,它由XML语言编写,一份模板定义如下:
模板中的元素定义方式与CSS类似,patten标签下的第一层子元素定义了各种控件的样式,其中的属性length、width定义了该控件的长和宽,align定义了文本对齐方式。font标签定义了字体的属性,color定义了字体的颜色,size定义了大小、face定义了字体等。在界面节点中模板属性定义了界面中控件的模板编号,此时只要按照对应模板中的定义修改控件的样式即可。为了使界面生成更加灵活,在XML Schema中也加入了style属性用于直接描述控件的样式。若既引用了模板,又定义了style属性,则先按模板样式设置各控件的属性,再按照style属性单独修改某些控件的样式。
2.5 输入验证与文档复用
之所以使用XML Schema作为可视界面描述模板,是因为XML Schema可以直接验证XML文档。我们对界面交互的数据均由XML文档存储,这样就可以方便的用Schema去验证。具体方法如下:当界面生成后,用户在界面上输入信息,然后由系统根据生成该界面的XML Schema的格式将用户填写的信息封装成一个XML文档。这样所产生的XML文档的结构与生成界面的 Schema结构一致,可以用XML Schema直接进行验证,不需要再编写专门的验证程序。这样就方便地实现了界面生成和数据验证的集成。
使用XML Schema作为界面描述语言的另一个好处就是便于界面的复用。因为在软件系统中很多情况下的代码是相似甚至相同的,所以复用技术一直是软件开发的关键,这里的复用当然也包括了界面代码的复用。XML Schema可以采用XML的查询语言XPath、XQuery等,快速的定位相同或相似的代码段,并将它们提取出来用于开发。如图4,我们将界面的框架文档与样式文档分别建库,在使用时,先去相应的库查询有无可利用的文档或文档片段,如果有就可以直接利用;否则再建立新的文档。这样就可以大大提高可视化效率。
图4 界面复用
3 可视化方法的实现
3.1 系统实现
基于XML Schema的水利元数据可视化界面生成系统主要包括应用业务解析模块、XML Schema生成模块、Schema管理模块、可视界面生成模块、数据验证模块、Schema文档库及界面模板库。系统各模块间的连接方式如图5所示。首先,我们需要根据遥感影像的需求设计出包含元数据子集、元数据实体和元数据元素的元数据文档。然后将元数据文档转换为可视界面的XML Schema,再由Schema转换为可视界面代码。各模块作用如下:
图5 元数据可视界面生成系统
应用业务解析模块主要是根据用户需求,按照XIC模型建立相应的水利元数据描述模型,再由XML Schema生成模块生成相应的Schema文档并存储在Schema文档库中。
XML Schema管理模块主要用于对Schema文档库里面的Schema信息进行增删改查等,同时,它负责根据界面生成需求提供相应的Schema文档。查询XML Schema时,系统将会根据用户输入的名称或关键字利用XPath或XQuery查询语句进行查询,方便地定位到XML Schema文档或片段。
可视界面生成模块接收从Schema管理模块传送来的Schema,然后根据其中的样式信息到样式模板库中提取相应的模板,对HTML代码进行完善,最终生成完整的可视界面(界面代码)。在界面与用户交互后,将用户输入信息与界面信息一同发送给验证模块。
数据验证模块将界面的填写信息根据其XML Schema的结构生成一份XML文档并验证,将验证结果显示在界面上,返回给用户。
3.2 运行实例
利用本文所述方法实现的元数据管理界面实例如图6所示,输入验证实例如图7所示。
图6 界面生成实例
图7 界面验证实例
4 结束语
本文所提出的基于XML Schema的水利元数据可视化方法,首先对水利元数据做了设计,然后利用XML Schema作为可视界面描述语言,根据XIC模型实现界面的自动生成,同时提出了相应的界面生成算法。本文的这种方法可以较为规范的实现元数据可视化并解决界面代码的复用问题。同时,由于以XML Schema作为界面描述语言,对于用户通过界面输入的数据也可以方便的进行验证。下一步的研究工作将是把Web服务组合技术引入到本文所提出的方法中,提供适当的接口给其他系统,实现可视界面生成技术的共享。
[1]黎阳.遥感信息与知识共享平台的研究[J].计算机工程,2009,35(15):244-246,249.
[2]谢冰川.分布式海量遥感影像编目检索机制[J].计算机工程,2010,36(20):281-282,285.
[3]石立坚,王其茂,郭茂华.海洋灾害遥感元数据及数据系统设计[J].遥感信息,2010,24(3):117-121.
[4]黄洪,林辉,王奔.一种图形用户界面的XML描述方法与工具开发[J].计算机应用与软件,2011,28(10):198-202.
[5]冯文堂,胡强,万建成.基于XML的界面自动生成[J].计算机应用研究,2006,23(9):75-77.
[6]侯彦娥,党兰学,魏丹.Web用户界面动态生成工具的设计与实现[J].河南大学学报(自然科学版),2011,41(6):641-644.
[7]杨鹤标,侯仁刚,田青华.支持界面自动生成的模型研究[J].计算机工程,2010,36(3):79-82.
[8]郭爱平,张立群,罗莉.基于MVC模式的界面自动生成[J].计算机工程与设计,2007,28(19):4793-4795.
[9]朱永华,吴俊杰,张倩.支持数据绑定的用户界面自动生成模型[J].计算机工程,2011,37(23):52-53,59.
[10]张涛,于雪芹,危双丰.基于XML Schema的地理信息元数据模式及存储映射研究[J].测绘科学,2007,32(4):113-115.
[11]张剑妹,陶世群.DTD模式下的XML结构完整性约束[J].小型微型计算机系统,2009,30(11):2233-2237.
[12]曹静,樊景博,刘爱军.基于XML Schema的数据库间信息交换技术[J].科学技术与工程,2010,10(24):6060-6062,6074.
[13]王英芬.元数据模式组织网络信息资源研究[J].农业图书情报刊,2009,21(11):50-52.
[14]郭容寰.基础地理信息元数据的管理和应用[J].测绘与空间地理信息,2007,30(3):75-78.
[15]王华斌.海量遥感影像数据存储管理技术研究与实现[J].测绘科学,2008,33(6):153,156-157.