数字地图要素样式结构化存储表达研究与实现

2012-12-28 07:26科,周虎,马廷,高章,范
地理与地理信息科学 2012年3期
关键词:样式结构化矢量

周 玉 科,周 成 虎,马 廷,高 锡 章,范 俊 甫

数字地图要素样式结构化存储表达研究与实现

周 玉 科,周 成 虎,马 廷,高 锡 章,范 俊 甫

(中国科学院地理科学与资源研究所,资源与环境信息系统国家重点实验室,北京 100101)

研究数字地图要素样式结构化存储问题,分析目前国内外最新研究进展和各种实现方式的优缺点。从地图要素样式共享的目的入手,探索遵循国际标准的样式实现方案;设计并使用XML的结构化可扩展特性,借助元编程的最新理念和Java编程语言实现兼容SLD标准的地图样式表达和存储机制。实验中定义了点、线、填充、字体等各种地图符号的XML表达形式,并与SLD主题样式相对应,与其他地图样式的转换操作表明,该模式可以实现地图要素样式的自定义设计和共享传播。

地图可视化;要素样式;XML;OGC SLD

如何用标准化的“语言”精确地描述人类空间标记认知过程、实现人机交互,是目前数字制图领域的重要方向。桌面GIS和WebGIS原理都是受程序控制通过电子设备进行显示,因此可以在数据源和显示层加入地图要素样式控制器来标准化的控制其样式。OGC SLD(Styled Layer Descriptor)[1]为图层的自定义式样提供了XML文档模式,用来规范地理要素符号信息的传输、存储和表达,使标准化、定量化的地图要素样式定制成为可能。地图样式标准化描述语言改变了传统制图条件下用户只能被动地使用地图的方式。本文研究地图要素样式结构化描述的实现机制与已有成果,同时受SLD规范启发,使用纯XML语言描述地图要素的颜色主题、线划样式、标签(label)风格、面状填充等内容,并可与SLD相互转换。借鉴元编程的理念,将XML文档中的节点映射为Java中的类与方法,简单实现地图符号样式制作与存储的编辑平台,解决异构平台中地图符号的共享。

1 地图样式结构化研究现状

1.1 国内外相关标准

数字地图样式的标准化和规范化是实现数字地图样式共享的前提和保障,只有遵循共同标准才能最终消除GIS地图符号共享的障碍,以便实现地图符号的互操作[2]。国内外已有许多组织进行数字地图表达的标准化研究,并推出了相应的标准规范。

国际上OGC SLD标准的发布使WMS服务的地图可视化效果的扩展定制成为可能。不遵循SLD规范的WMS服务只能通过服务器端预定义的样式表现地图,而合理使用SLD样式描述可以实现分类制图并且样式来自客户端。SLD标准基于XML-schema规范,schema中定义了地图符号化的所有可能元素。SLD中重要元素之一是定义了规则元素(rule-element),可以将数据集按照给定的参数分类[3]。子元素包括点符号和线符号等,用来设置不同类型的符号,如填充与笔画。OGC于2007年推出了符号编码规范(Symbology Encoding,SE)作为SLD的补充,不久作为一个独立规范进行发布;SE在地图符号定制方面比SLD有更多的可能性,它只包含SLD中无接口的编码部分,因此可以应用于网络服务以外,如桌面应用;SE推出的新功能包括高级线性标识、标签和更好的按比例缩放的符号。

国内一些标准化研究机构和权威地图制图部门在地图符号信息分类与编码、地图符号库建立、普通地图和专题地图符号的绘制等方面都制定了相关规定,有效促进了国内地图符号的生产和共享[4]。中国测绘科学研究院研究并制定了专题地图信息分类与编码,中科院地理所长期致力于地理信息共享标准的研究,使得国家基础地理信息共享有规范可依。

1.2 实现现状

现实应用中,各GIS厂商使用独立的地图符号样式库实现标准和方式。地图样式的实现基本分为3类:采用高级编程语言利用面向对象技术描述;采用SVG等矢量图形文件格式描述;使用XML形式的结构化描述地图样式符号。如今GIS产品品牌繁多,有些产品使用Truetype字体符号库对地图符号进行扩展,有些产品提供了交互式的地图符号交换格式和接口[5]。因为True Type遵循统一标准,不同平台之间可以在符号数据结构、符号编码、数据存储方式、接口函数、操作系统等方面进行符号共享。比如ArcGIS自带丰富的符号库,而且支持TrueType,这种企业标准可以实现符号库的传播性,但是具体到一个图层样式的定制则无法传递到其他产品的图层中。Super Map、MapInfo等也都使用文件方式存储和管理地图符号库资源,使点符号库、线符号库和面符号库分别或一起存储在符号文件中。Tile Mill是一个在线定制地图样式的控制器,实现网络地图样式的自由定制,使用标准为SLD,因此Tile Mill生成的样式同样可应用于遵循SLD标准的网络或桌面的制图系统中(http://mapbox.com/tilemill)。

1.3 已有成果存在的问题

以上的GIS产品实现中并没有很多产品直接支持SLD标准,有的甚至只是在TrueType级别实现共享,实际仍是一种紧耦合的共享方式,很少使用标准化描述语言(XML,XSD)表达地图要素样式。以上GIS产品的地图样式共享只是从符号库上的基本映射统一达成共享,而没有真正实现特定地图要素样式模板形成一种自然的过渡转换,共享过程需要大量的编程操作。OGC SLD是第一个正式的地图样式规范,其最新版本为1.1,仍处在标准规范的初级阶段。但是SLD仍存在不足[6],尤其是在专题制图领域。当前只能使用预定义好的符号(如圆形、矩形和十字)制作基本专题地图:颜色分级地图和比例符号地图。SLD符号支持的图形较少,因此符号的表现比较单一,并且符号的配置只能实现比较简单的地图可视化,不适合表达丰富多彩的地图图形信息。但是因为其遵循XML标准扩展性较好,基于SLD可以嵌入预编译好的外部图形。

2 兼容SLD的要素样式设计

真正意义上的地理空间数据共享应该包括地图符号样式共享的方式、标准等内容,实现地图符号跨GIS平台共享的最佳方式是所有GIS软件平台采用国际统一标准的数据格式描述地图符号[7]。由于SLD标准表达不够完善和GIS应用者对数据共享的关注多于对地图样式共享的关注,导致地图要素样式共享和分发较困难。但是遵循共同的标准应该是地图要素样式设计的主体思想和基本原则。XML(可扩展标记语言)的可扩展性和平台无关性使矢量地理信息的网络分发、融合与综合变得更加容易,对于桌面地图系统的地图样式共享同样可以使用XML实现。本文提出一种良好兼容SLD国际标准的地图要素样式结构化(XML)存储设计,使用元编程思想实现地图要素样式与编程语言的映射。

2.1 XML存储地图总体样式

XML是一种朴素的结构化数据表示形式,在使用其描述地图要素样式时,可以很好地表达从数据集到图层到要素的层次结构[8]。在具体实现中,图层作为样式XML的根节点,然后派生出具体的子节点,最后形成一棵地图要素样式树。XML地图样式描述由预定义标签与内容组成,标签包括元素和属性,内容则是这些元素和属性的值。从演绎方法看,地图要素样式标签主要分为点样式、线样式与面样式,横向又涉及各样式的具体属性(color、alpha等)。

在设计实现中,样式(style)作为数据源图层的一个子节点。预定义的style标签如图1,包括样式总集合styles、样式子元素style,点样式以vertex-Style表示,线样式以linestringStyle表示,面样式以fillStyle表示,另外还有独立的样式color Theming-Style设计颜色主题。

图1 基本样式分类Fig.1 Basic style class

2.2 点、线、面样式详细设计

详细设计中,点要素样式(vertexStyle)又分为矢量图形和栅格图片样式。点矢量图形样式包括导入的矢量符号和用WKT描述的矢量符号。外部导入库样式会在XML中生成一个独立的<style>节点元素,并对应到Java的Importer类进行绘制。WKT是OGC规定的以文本形式描述几何对象的重要标准。在此利用WKT勾勒点状矢量符号的轮廓,优点是表现形式为纯文本,操作时无需任何转换操作也没有表达损失。嵌入时采用的是硬编码的形式,表现样式有面状、星形和其他形式。WKT的定义形式为<Line width>∶<Symbol extent>∶<WKT specification>,符号保存为 .wkt文件。如1∶10∶POLYGON((5 5,5-5,-5-5,-5 5,5 5),(1 1,1-1,-1-1,-1 1,1 1))内容表现为一个回字形点状符号。对于栅格图像形式的符号,需要放入预定义文件夹,在XML中存储路径;对于点状矢量符号可以有显示边框、显示填充、点状边框等选项。

标签样式可根据要素的某属性来标注。对应的XML存储形式如表1,该样式设置标签内容为要素名称,字体为宋体,颜色为黑色,角度和高度未设置,自动检测重叠标注,还可设置标签显示的比例范围。

表1 地图标签表现样式XML存储节点Table 1 XML store node of map label style

线性样式分为lineStringEndpointStyle、lineS-tringSegmentStyle、lineString VertexStyle 3种基本类型,分别描述线端点样式、线段实体样式和线串中节点类型。lineStringEndpointStyle样式设计可分为首尾点的开放式箭头和实心箭头。lineStringSegment-Style样式结构相对简单,相当于SLD中的simple-Line,包括实线、虚线、点线、点划线和空白线,其含有线形状代码,指示绘图时使用笔刷类型。lineString-VertexStyle继承于vertexStyle,指定线串中非首尾节点的表现形式,使用规则与vertexStyle相同,包括星形、圆形、十字形、方形、三角形和栅格位图。

填充模式(fillPattern)主要包括面的颜色主题样式(color ThemingStyle)和填充内容。面要素的轮廓与线性样式相关,可以在填充与线轮廓间设立关联关系。填充效果大体分为矢量与栅格图像填充,其中矢量填充使用WKT描述,由具体编程语言进行绘制。图2为栅格填充与矢量填充示例,颜色主题化可以根据要素的某个属性分级进行渲染。

图2 栅格影像填充与矢量填充Fig.2 Raster fill and vector fill styles

2.3 兼容SLD的样式存储访问

由于各GIS厂商地图符号格式不公开及数据结构定义的差异,通过传统的符号格式转换方法很难实现地图符号信息的交互与共享[9]。以上设计从逻辑上实现样式与SLD的兼容,而物理存储和访问方面使用预留Java和XML转换接口的形式实现兼容。

地图样式物理文件读写机制的关键是样式XML标签的自动生成和组合,平台采用元编程思想,利用Java语言编程实现样式文件生成和配置。元编程通过程序控制预定义模板自动生成代码,最重要的应用方式是代码与文件(jar、dll、XML等)的反射机制,达到运行时决定程序的运行模式和参数设置的目的。具体操作中由Java2XML类库实现Java代码到XML的映射并进行样式持久化,快速生成地图要素符号样式文档。接口设计通过在代码中将图层要素样式的Java类以get、set的方式暴露,在用户交互设置后利用序列化方法将Java类属性反射到XML文档中。图3显示了通过Java语言作为中间桥接,实现自定义地图要素样式与SLD的相互转换。

图3 兼容SLD的样式实现Fig.3 Implementation of SLD-compatible style

利用物理访问接口,可实现样式文档的文件式存储和数据库存储。实际应用中首选方案是文件式存储,通常为.XML的文本文件。该方案易于复制传播,可快速进行编辑和预览,缺点是缺少版本管理和访问约束,不能在要求样式高度一致的项目中使用。第二方案是将XML文档导入 MySql、Access等数据库中,构建要素样式应用库,优点是易于实现样式的并发控制和分布式访问,但配置较复杂。两种方案中,关键步骤均是XML结构读写时的解析和验证,采用DOM(Document Object Model)接口进行XML文档解析。通过DOM定位到地图符号库XML文档的每个元素,可以读取或写入编辑平台中任意符号的信息,再结合Java编程技术,实现不同GIS平台要素样式的通用化管理和转换。

3 开发成果与测试

本文实现了兼容SLD标准的地图要素样式结构化存储。平台以XML文档为要素样式载体,基于JTS Topology Suite、geotools开源库,利用Java语言的JAI技术实现地图要素样式绘制和渲染。通过要素样式编辑器可定制样式的渲染风格、要素可见的比例尺范围、颜色主题、标签设置和细节装饰等内容,并有简单的预设填充风格可供选择。

为测试本文设计方案对SLD标准的兼容性和实用性,选择Geoserver地图服务器作为比较对象。Geoserver是Java开发的 WMS/WF/WCS服务器(http://geoserver.org),良好兼容 OGC各种标准。首先在Geoserver中定义线形SLD样式,然后将此样式存储为XML导入该平台,比较同一图层在两平台中可视化效果。该线形样式简单的设置为:1像素,蓝色线划。从图4可以看出,在相同的缩放比下两图层展现效果基本一致。实验结果初步说明该设计对SLD标准具有兼容性和实用性。

图4 Geoserver与实验平台SLD显示效果对比Fig.4 SLD result comparison between Geoserver and test platform

4 结论

针对目前地图要素样式共享没有统一标准的状况,尝试使用XML建立与SLD兼容的样式描述与存储机制,在此基础上开发地图要素样式编辑器工具。本文提供的地图要素样式结构化存储与表达方法充分利用结构化描述信息的跨平台特性,可以在实际工作中灵活运用。最后测试表明,基于XML/SLD的地图要素样式描述模型是解决地图符号规范化描述及不同GIS软件间地图要素风格共享问题的一种有效方法。

[1]OGC.Styled Layer Descriptor(SLD)implementation specification[S].Open GIS Consortium,2002.208-219.

[2]杜道生.地理信息标准化的最新进展[J].地球信息科学,2003(2):74-78.

[3]CHEN T S.Study on analysis and sharing of ArcGIS symbol and SLD symbol[A].3rd International Conference on Computational Intelligence and Industrial Application(PACIIA)[C].2010.

[4]陶陶.地理信息系统中的地图符号共享方法研究[D].南京师范大学,2005.

[5]王均,王红,陈向东.数字制图中地图符号的标准化研究[J].地球信息科学,2003(2):16-18.

[6]BRINKHOFF T.Towards a declarative portrayal and interaction model for GIS and LBS[A].Proc.8th Conference on Geographic Information Science(AGILE 2005)[C].IEEE Press,2005.449-458.

[7]陶陶,闾国年,李艳娜.基于通用一体化符号编辑器的符号共享模式研究[J].地理与地理信息科学,2005,21(4):28.

[8]谢文君,孟令奎,黄长青,等.一种基于XML的Web GIS研究与实现[J].地理空间信息,2006,4(2):59.

[9]尹章才.地图表达机制及其基于可扩展标记语言的描述[D].武汉大学,2005.

Research and Implementation on Structured Store and Expression of Digital Map Feature Style

ZHOU Yu-ke,ZHOU Cheng-hu,MA Ting,GAO Xi-zhang,FAN Jun-fu
(StateKeyLaboratoryofResourcesandEnvironmentalInformationSystem,Institute ofGeographicSciencesandNaturalResourcesResearch,CAS,Beijing100101,China)

In modern time digital map is the important way to express geographical information.The way to design and show map feature style affects people′s abilities to explore the regulation and character of the distribution of spatial objects.Firstly,in this paper,the problem about structure store of map feature style is researched and the newest trend in this domain is analyzed,also advantage and shortcoming of some map style solutions are reviewed.Secondly in order to implement the share of feature style,a standard-complied solution is explored.In the design phase with the easy to extended and structured advantage of XML and Java program language,a SLD-complied map style expression mechanism is built.Following the meta-programming idea,it is easy to map custom feature styles to SLD styles.In the experiment,vertex,linestring,fill and font styles are defined in XML format,so they can be exchanged with other SLD styles and be designed freely by users.

map visualization;feature style;XML;OGC SLD

P208

A

1672-0504(2012)03-0007-04

2011-12- 21;

2012-02-27

国家自然科学基金项目(40830529、41171307);国家科技支撑计划(2011BAH06B03、2011BAH24B10)

周玉科(1984-),男,博士研究生,研究方向为空间分析算法。E-mail:zyk@lreis.ac.cn

猜你喜欢
样式结构化矢量
CPMF-I 取样式多相流分离计量装置
CPMF-I 取样式多相流分离计量装置
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
促进知识结构化的主题式复习初探
取样式多相流分离计量装置
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
基于矢量最优估计的稳健测向方法
三角形法则在动态平衡问题中的应用