S-57海图的SLD符号渲染研究

S-57海图的SLD符号渲染研究
刘天尧;赵宇鹏;万佳馨;刘善伟
【摘 要】随着海洋事业的发展,以S-57海图为底图的海洋WebGIS应用需求日益增多,但由于S-57海图数据格式和海图符号规则的特殊性,缺乏简单通用的WebGIS符号化渲染方法.分析S-57海图符号的渲染复杂度,利用SLD进行海图符号化渲染,以多个典型海图符号为例,探讨海图符号的属性值运算渲染、复杂线型渲染、依属性渲染等相关问题,并给出对应的SLD渲染方法.通过实验结果对比,表明SLD可以满足S-57海图WebGIS通用符号化渲染的需求,并且拥有较好的渲染效果.
网络资本【期刊名称】《地理空间信息》
胃电图仪【年(卷),期】2016(014)004
德鲁兹人
【总页数】4页(P62-64,83)
【关键词】SLD;S-57海图;WebGIS;符号化
【作 者】刘天尧;赵宇鹏;万佳馨;刘善伟
【作者单位】中国石油大学(华东),山东 青岛 266580;中海石油环保服务(天津)有限公司博士后科研工作站,山东 青岛 266061;东华理工大学,江西 南昌 330013;中国石油大学(华东),山东 青岛 266580
【正文语种】地域分布中 文
【中图分类】P208
目前,海洋WebGIS系统需求日益增长,AIS船讯信息系统[1]、港口货物调配分析系统、海洋溢油应急系统[2]等相继建立起来。S-57海图是重要的数据源,但在数据结构、符号表示和渲染规则上与陆地地形图差别显著[3],传统渲染方式在经济性、可扩展性、通用性等方面存在诸多不足,因此,建立一种简单通用且适合于WebGIS系统的S-57海图渲染方法,对于海洋GIS的应用和发展具有重要意义。在WebGIS开发中对S-57海图的调用一般采用2种方式:一是由专用海图绘制软件渲染S-57海图生成栅格图像金字塔切片进行调用[4],但专用海图渲染软件和服务一般价格昂贵,而且栅格切片在海图矢量拓扑关系操作或运算上
永磁接触器会表现出明显的局限性;二是在浏览器端编写符号渲染规则进行实时渲染[5],虽然能够保留S-57海图的矢量性,但由于海图符号规则异常复杂,会给浏览器带来沉重的负担,而且通用性不强。作为GIS领域中一种重要的GIS符号共享方法[6],OGC(open GIS consortium)的SLD(Styled Layer Descriptor)以其丰富的扩展性和良好的开放性[7]在专题图的绘制[8]、三维城市渲染[9]、SLD标准改进等多方面拥有众多研究成果。而且SLD最初提出时就是为了描绘WMS(Web Map Service)、WFS(Web Feature Service) 和 WCS(Web Coverage Service)等WebGIS服务,在WebGIS符号渲染方面有着其他渲染方式无法比拟的优势。作为XML的扩展,SLD具有很强的通用性,既可以在服务器端进行编写,对S-57海图进行渲染生成切片,也可以在客户端进行编写并传回服务器端,还可以直接由客户端根据SLD进行渲染,多种方式灵活组合能够有效平衡前后台负载。不仅如此,SLD还拥有丰富的功能函数、逻辑判断能力和灵活的语法规则,非常适合复杂符号的渲染工作,是一种通用性好且功能强大的WebGIS渲染方式。
本文在参考SLD多方面研究的基础上,尝试使用SLD进行S-57海图符号化渲染工作,以多个典型海图图层为例,重点论述属性值运算渲染、复杂线型渲染、依属性渲染等S-57海图渲染关键问题,对S-57海图的SLD渲染进行适用性评价,给出不同类型海图图层对应的SL
D渲染方法。
本文采用的S-57海图数据是由中国电子海图发行中心发行的中国近海及周边海域的部分S-57海图,选用的海图涉及多种比例尺,海域位置分散,具有代表性,具体图号及描述如表1所示。
实验软件主要有3个:GDAL/OGR1.9.2、GeoServer2.5和eLaneViewer2.0。GDAL/OGR是著名的GIS开源库,支持众多矢量、栅格数据的格式转换,可以直接解析S-57海图,并将其转换成shpfile格式;GeoServer是著名的开源WMS、WFS地图服务发布软件,以SLD作为符号渲染方式,对SLD各功能特性具有良好的支持。eLaneViewer是一款免费的S-57/S-52海图浏览器,支持S-57海图及海图更新数据,显示符合IHO S-52标准。
本文使用GDAL/OGR进行数据预处理,将S-57海图转化为GIS通用格式shpfile数据,利用GeoServer加载转换后的海图数据,编写对应海图图层的SLD渲染样式,发布WMS服务并进行预览,将显示结果与eLaneViewer直接加载S-57数据的显示效果进行对比分析。
2.1 属性值运算渲染
水深点图层(SOUNDG_point)是S-57海图中计算能力需求最高的图层之一。本文以此图层为例,检验SLD的计算能力是否满足海图渲染需求。具体渲染规则如下:当水深值小于或等于30 m时,为该字段整数部分在左上角、小数部分在左下角所构成的图形,如果小数部分为0,则小数部分不显示;当水深值大于30 m时,只显示整数部分。
水深点图层渲染的关键问题是如何将水深字段中的属性值的整数与小数部分拆离,这需要属性值计算的功能,而SLD语言本身并没有定义该功能,我们可以通过加入ogc扩展引入四则运算功能和功能函数。ogc扩展属于SLD官方扩展,SLD解析器默认进行支持,可以满足绝大部分计算需求。
对于水深点的整数和小数部分,由于位置不同,需要分别构建文字符号标签〈TextSymbolizer〉,真正的赋值工作需要在〈Label〉标签中完成,因此计算功能也需要在此标签中进行。
整数部分计算主要使用2个功能函数,将字段DEPTH属性值利用功能函数floor(向下取整)得到Double型的整数部分,再用功能函数parseInt(Integer强制类型转换)将其转化为Integer型,以避免出现小数点,即可得到整数部分。
小数部分使用了Mul(乘法)和Sub(减法)四则运算,首先DEPTH与整数部分相减获得实际小数值,然后将小数乘以10获得小数部分数值(floor型),再利用功能函数round(四舍五入,返回值为Integer,一定程度可以替代功能函数parseInt)将其转化为Integer型,即可获得整数部分。
对于小数部分的偏移,可以为其嵌套〈sld:DisplacementX〉和〈sld:DisplacementY〉标签分别对X方向和Y方向进行按像素偏移。水深值在大于30 m和小于30 m时渲染规则并不相同,但涉及到的是依属性值渲染相关内容(如图1),将实际渲染结果与海图软件渲染结果进行对比可以看出,拥有灵活嵌套的、具备四则运算能力和丰富功能函数的SLD,可以满足S-57海图计算要求最高的水深图层计算需求。
海图属性值运算方法总结如下:同一字段属性值的整数与小数显示规则不同时,可利用SLD符号可叠加特性构建2个符号层,分别进行取整数和取小数运算,再进行相关样式规则的编写;同一符号层中可利用四则运算和数学功能函数进行嵌套组合,完成运算需求。通过对其他需要属性运算的S-57海图图层进行实际渲染检验表明,以上运算方法对S-57海图渲染规则具有良好的适用性。
2.2 复杂线型渲染
S-57海图中很多线图层和面图层的边线是由2种或3种图形按一定规则构成的,线型结构比较复杂。海底电缆线图层(CBLSUB_line)是一个典型的由3种图形构成的线图层,其海图软件渲染效果如图3c所示。
SLD可以利用〈GraphicStroke〉标签定义位图格式的线型,但只能使用单一图片,如果图片沿线条路径方向上的长度过长,则会造成直线在弯曲处有明显断裂,如图3a所示,电缆线单张节点图片长达85 px,在弯曲处按切线进行渲染,造成线段不连贯。为了保证线型的平滑连贯,本文将大节点拆分,将每个小图形皆当作一个小节点,然后利用SLD符号层的可叠加性按插空的方式进行叠加。
对海底电缆线图层而言,一个大节点中拥有5个小节点,因此将其分为5条线的叠加,方法如下:对于第n条线,通过〈OnlineResource〉引入该线的节点图片,利用〈CssParameter name="stroke-dasharray"〉XnLXn〈 CssParameter 〉和 〈CssParameter name="strokedashoffset"〉Yn〈 CssParameter 〉标签控制笔绘长度和偏移量,其中Xn为当前小节点图片的像素长度,L为大节点像素长度,Yn为第n个小节点笔
触起点相对大节点末端的左偏移量,如图2所示。
按照上述方法构建5个〈LineSymbolizer〉,在同一规则〈Rule〉中进行叠加,效果如图3b所示。由渲染效果对比可以看出,使用SLD 5线叠加方式渲染的电缆线自然平滑,可以满足S-57海图电缆线图层的渲染需求。
复杂线型渲染方法如下:首先将线要素进行节点划分,出最大重复节点,判断节点长度是否大于20 像素。如果小于20像素,则进行单线渲染,如果大于20像素则将该大节点拆分为n个小节点(n为大节点所包含的小节点个数),利用n线叠加的方式进行渲染。大量实验表明,该方法对S-57海图的SLD渲染具有普适性。
2.3 依属性值渲染
S-57海图中许多图层的渲染需要依照某一个或几个字段的属性值的取值范围分别进行对应的样式渲染。以深度范围面图层(DEPARE_polygon)为例,有2个字段DRVAL1和DRVAL2,分别代表该面元素的最大和最小水深,需要根据水深规则分别渲染不同的颜,如表2所示。in189

本文发布于:2024-09-21 00:28:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/71452.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:渲染   海图   进行   符号   节点   功能   属性
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议