论文部分内容阅读
地图符号是对真实世界地理要素的抽象表示。用地图符号代表地理要素,并根据地理要素真实地理特征,把地图符号渲染在地图上的过程称为地图符号化过程。随着电子地图日益深入平常生活,如何使地图渲染的更快、地图显示的效果更好成了符号化过程要处理的关键问题。符号化过程是由符号化渲染引擎负责完成的,因此一个实用的地理信息系统必须以高效的符号化渲染引擎作为其核心,符号化引擎的核心则是符号化算法。本文在研究符号化基础上,针对当前符号化算法和符号化软件的缺点设计了相关符号化关键算法和一个符号化渲染引擎,取得的主要成果为:1.本文针对样式复杂的线符设计了分段算法。地图符号中最复杂的符号是分段线符,为了对分段线符进行渲染,必须先精确计算出线符每个分段各个部分经过的坐标点集。为了能够高效的完成这个计算过程,本文详细分析分段线符遇到的绘制问题,设计计算每个分段经过坐标点集的算法,并在该算法中同步计算分段上的点符定位坐标,减少了重复计算量,提高了效率。2.本文分析了分段线符末端点出现虚段、虚实分段线符虚实相交、虚虚相交等要素关系处理问题并分别提出解决方法。(1)对于分段线符末端点出现虚段,造成线符端点无法判断的问题,本文提出在以虚段结尾的线符两端各绘制半截实段的方案来避免线符端点出现虚段,该方案临时增加两个坐标点并使用分段算法完成渲染,实现简单。(2)对于虚实分段线符虚实相交、虚虚相交问题,本文基于Bentley-Ottmann算法思想设计了使相交处的虚段转变为实段或者在交点处放上特殊标识的渲染算法,改善了符号的显示效果。3.本文针对传统多边形扫描线填充算法效率低下的缺点,在其基础上提出基于纵轴递增边表的改进扫描线填充算法和基于横轴递增边表的改进扫描线填充算法。两种算法的思路都是通过减少求交运算来提高算法效率。4.本文基于面向对象思想设计实现了一个符号化渲染引擎。符号化引擎通过设计符号类封装符号化算法,易于符号扩展和算法扩展。符号化引擎提供抽象数据读取接口,可以扩展读取多种样式符号文件、地理信息文件。符号化引擎提供专门的要素处理模块以便在符号绘制之前进行相关要素关系处理。另外,符号化引擎设计抽象图形库调用接口,可以扩展调用多种图形库API。经过测试对比,设计实现的符号化渲染引擎能够渲染各种复杂符号,并可以对一些要素关系进行处理,而且渲染速度较快。