基于TrueType技术的地图点状符号的实现

上传人:仙*** 文档编号:163172749 上传时间:2022-10-20 格式:DOC 页数:23 大小:1.31MB
返回 下载 相关 举报
基于TrueType技术的地图点状符号的实现_第1页
第1页 / 共23页
基于TrueType技术的地图点状符号的实现_第2页
第2页 / 共23页
基于TrueType技术的地图点状符号的实现_第3页
第3页 / 共23页
点击查看更多>>
资源描述
北京工业职业技术学院毕业设计论文题 目 基于TrueType技术的地图点状符号的实现 学生姓名: 闫兰兰 专业班级: 地理信息系统与地图制图技术 指导教师: 郑佳荣 目录摘要3第一章 绪论31.1课题研究背景和意义31.2国内外研究现状41.3论文结构5第二章 地图符号的概述52.1地图符号的基本概念52.2地图符号的分类62.3地图符号的功能7第三章 地图符号中点状符号库的建立与显示83.1 传统的符号绘制存在的问题83.2 点状符号的特点和采用TrueType格式的优势83.3 TrueType格式的点状符号库建立方法93.4 TrueType格式的点状符号库使用方法103.5 本章小结10第四章 点状符号的详细设计104.1 点状符号的设计114.2 点状符号的构造原理114.3 点状符号库设计124.4 符号库的管理及存储机制124.5符号化算法13第五章 TrueType字体技术的研究分析与应用135.1 TTF 技术原理145.1.1 图像域145.1.2 曲线145.1.3 坐标系155.2 TTF 文件结构165.2.1 TTF 文件描述表165.2.2 从字符编码到字模的映射175.3 TTF 应用实例175.3.1 建立汉字笔画字体175.3.2 安装汉字笔画字体185.4 本章小结18第六章 基于TrueType字体的点状符号186.1 TrueType技术及TrueType字体的特点196.2 采用TrueType制作点符号的介绍196.3 TrueType点符号的制作196.4 地图符号的调用21结论22参考文献23 摘要地图符号是表达空间数据的基本手段,是地图的语言单位,是可视化表达地理信息内容的基础工具,它不仅能表示事物的空间位置、形状、质量和数量特征,而且还可以表示各事物之间的相互联系及区域总体特征。地图符号有形状不同、大小不一、色彩有别的图形和文字组成,它既是地图的语言,也是一种图形语言。地图符号不仅具有确定客观事物空间位置、分布特点以及质量和数量特征的基本功能,而且还具有相互联系和共同表达地理环境各要素总体的特殊功能。根据事物分布的特点,地图符号有点状、线状和面状之分。这些符号运用在表示专题要素的分布、质量和数量特征以及动态变化时,形成了许多表示方法,如范围法、质地法、统计图表法、分级统计图法等。近年来,地图符号数据结构及符号库“一库多用”问题引起了各界的重视。为了实现点状地图符号的共享,人们尝试了符号格式转换、TrueType字体以及符号对应表多种方法。但由于不同系统在地图符号数据结构、构图方式根源上的差异,导致这些方法均不能从根本上解决符号共享的问题。目前国内外地图符号库系统的发展以区域产品化,包含地图符号库的软件很多,各种GIS软件和制图软件都包含自己的符号库系统,其地图符号的设计方法不尽相同,各有所长。但是在不同平台或软件之间的地图符号资源共享上,一直是软件技术工程研究的重点,同时也是难点,至今还没有较完善的解决方案。本文在有效的解决一些问题的基础上分析了构成地图符号的符号种类和功能,深入研究了点符号构图规律和构造原理,设计了一种用于点、符号库的数据存储结构,并用面向对象的程序设计方法,设计了实现点符号库的结构。本论文主要介绍地图符号中点状符号的实现。第一章 绪论1.1课题研究背景和意义 随着计算机技术的迅猛发展,空间数据可视化成为可能,对可视化的研究经历了从二维可视化到三维虚拟现实的过程,这一过程都与地图符号以及地图符号库的法杖存在着密切的关系。地图符号是地图的语言,是直观表达地理事物或现象的一种重要的可视化工具,也是读者感受地理事物或现象的基本方式,因此地图符号在地理信息系统或者地图制图软件中显得非常的重要,符号化的应用也越来越广泛。地理空间数据非常复杂,地图要显示的主题内容和要素类型特征众多,为了能够完美地显示各种内容要素往往需要建立一套完整的地图符号。地图符号库是存储地图符号的数据库,它通常将地图符号分类存储,以实现对符号的科学管理。地图符号库是一个结构完整、功能完备的数据库,这使得符号库可以独立于GIS以外进行研制和开发,更易于制作出相应标准的符号。地图上的任何信息都是通过各种地图符号来表现得,所以在地理信息系统的研究过程中,标准、规范的地图符号的建立是相当重要的,符号设计的好坏直接影响着地图成图的质量以及对地图信息的获取。可见研究地图符号以及符号库对GIS来说都非常的重要。我们从以下几个方面来分析建立地图符号库的意义:1、地图是GIS数据的重要来源,各种地图数据需要导入到GIS中。随着GIS应用在我国的深入,数字化各种地图成为了GIS更加迅猛发展而不可缺少的重要条件。地图符号是地图的语言,是地图的主要表达方式,因此地图符号的设计在GIS以及各种数字化制图系统中占有重要的地位。2、目前国外比较优秀的软件在我国的应用很多,虽然这些软件也有符号库,也包括各种各样的符号,但于我国的符号有很多的不同。GIS重要的功能之一是管理规范的地图。而我国的各种比例尺地图中的地理信息系统内容十分丰富,要素表述非常详尽。如点状符号非常多,而且大小方向变化多端,线状符号也千变万化,复杂多样。因此国外的软件远远不能满足我国的制图要求。在使用时,我们就必须开发一套符合我国规范的地图符号库,这样就能使地理信息系统软件发挥管理规范制图的能力。3、一个优秀的的地理信息软件应该能够输出规范的地图。而地图符号作为地图的语言,它设计的好坏直接关系到地图输出的效果以及对地理信息的理解。开发符合国家标准的地图符号库,毫无疑问增加了GIS软件的地图输出能力。4、不同群体对地图的显示要求不尽相同,因此个性化的功能越来越受到重视。比如对同一地区以不同的尺度进行空间地理数据的表达,使用户能够从宏观到微观以不同角度,不同层面认知和分析特定区域的空间地理信息,满足系统多层次的需要,为决策部门提供科学的决策依据。地图符号库通常作为与地图显示相关的电子地图或地理信息系统的支持模块而存在。一个好的符号库不仅要考虑它的显示速度显示质量和输出质量,还要考虑地图符号库的易维护性、易扩展性等。因此,基于任何数据结构、选用何种建库方法、设计何种绘制算法,采用何种编程工具来设计和建立地图符号库,并实现地图符号化等是GIS中最主要的内容。1.2国内外研究现状地图符号是表达地图内容的基本手段,它不仅能表示事物的空间位置、形状、质量和数量特征,而且还可以表示各个事物之间的相互联系及区域的总体特征。GIS是以地图为基础的空间信息系统,而地图符号是地图的语言,是地图的主要表达方式,因此地图符号起着非常重要的作用,所以开发的软件都应提供符号编辑模块。符号库在GIS空间信息符号化中起着重要的作用,各种GIS平台都包含有自己的符号编辑模块。具有符号库或符号制作工具的软甲可分为GIS软件和制图软件两类。当前国内外一些优秀的GIS软件都提供了常用的地图符号库,对于规则的地图符号按一定的图式要求符号化,而且也提供了一定的用户自定义符号功能,用户可以根据自己的要求,利用符号编辑制作功能设计一些比较复杂的符号。目前建立符号库是一种较为流行的方法,已经有了一些较为成熟的产品,例如制图软件MicroStation、CorelDRAW、AutoCAD,国外的GIS软件ArcGis、Arc/Info、MapInfo、GeoMedia以及国内的MapGis、GeoStar Mirage、SuperMap等。但由于系统的差异,使符号无论在数量、种类或使用功能等方面都存在较大的差别。目前国内外符号库系统发展已趋于产品化,在GIS软件中,虽然都包含地图符号制作部分,但是由于各系统的差异以及各地图符号制作软件与自身绑定,使符号在数量、种类或使用功能等方面存在较大差别,很难适合其它地理信息系统平台,不能分离出来为其它系统所用。另外,国外的各种GIS软件也不可能考虑我国的地图符号的要求。更重要的是各软件的源代码不公开,软件的改造几乎不可能。因而加强地图符号的管理,制定统一的地图符号库标准,开发通用的地图符号制作软件,将对我国计算机制图和GIS的发展起到重要作用。1.3论文结构第一章为绪论部分,主要介绍了课题的研究意义指出了目前符号库存在的主要问题,并通过结合当前国内外形式,指出建立符合我国标准的地图符号库的重大意义,由此提出本文的论题。第二章是地图符号的概述。第三章地图符号库的设计、功能、要求、原理和层次结构等方面介绍地图符号库系统的符号库设计,并重点介绍了地图符号的分类与编码。第四章为符号制作软件的设计与实现。在本章中首先介绍了绘制符号的基本方法和符号绘制软件应具备的功能,然后介绍了点符号的特点及构造原理,最后根据面向对象的思想,介绍了符号制作软件的设计。第五章是对TrueType字体技术的研究分析与应用。介绍了TTF的结构原理及其文件结构,利用字体创建软件建立了汉字笔画的TrueType字体文件。第六章为本文的重点部分。通过对地图符号的理解以及对地图符号的表达,讨论了制作TrueType点状符号的详细过程,并且给出了具体信息系统中的管线图中点状地物符号的例子。 第二章 地图符号的概述2.1地图符号的基本概念地图是反映各种自然、社会现象的质量和数量分布及其联系和变化的模型。制图者通过对客观事物的认识,建立起对制图区域整体空间的总体认识,这还反映了环境信息进入制图者大脑中进行信息处理、形成概念、构筑抽象思维模型过程。这个过程对于完整的制图过程来说还只是一部分,制图者还要借助与地图符号语言对抽象思维模型进行图形模拟,把自己对空间环境的认识通过地图的形式传输给用图者。地图符号是在地图上用以表示各种空间对象的图形记号,或者还包括与之配合使用的注记。它不仅能表示事物的空间位置、形状、质量和数量特征,而且还可以表示各事物之间的相互联系及区域总体特征。地图符号本身可以说是一种物质的对象图形,它用来代指抽象的概念并且这种代指是以约定关系为基础的,这是地图符号本质特点。地图符号对表达地图内容具有重要的作用,他是地图区别于其他表示地理环境的一个重要特征。高质量的地图符号是丰富地图内容、增强地图的易读性和便于地图绘制的必要前提。是用地图符号不仅能反映出制图对象的空间分布和结构以及动态变化。特别是采用地图符号后,可以是第五主次分明,使得地图所表达的地面现象主次分明,清晰易读。2.2地图符号的分类地图符号根据各自的特点以及不同角度的认识有其不同分类方法。这里主要介绍两种重要的分类方法。1、按地图符号表示的地理要素的几何特征分类。按地图符号表示的地理要素几何特征分类是目前认为最好的分类方法。地图符号的形成过程实际上是一种约定过程,根据约定性原理,采用编译的方法根据符号的几何特征地图符号主要分为点状符号、线状符号和面状符号三类。1)、点状符号。在地图上当符号所代表的概念能在抽象的意义下可以认为是几何上的点时,则被称为点状符号。点状符号具有特定并且其大小与地图的比例尺无关。点状符号通过其形状或颜色来表示物体的含义,用符号的定位点来表示物体的位置,并用符号的大小尺寸来表示物体的重要性等级或数量值。点状符号在地图中非常常见,如图2.1所示。 图2.1 地图上的点状符号 2)、线状符号。在地图上当符号所代表的概念能在抽象的意义下可以认为是几何上的线时,则被称为线状符号。线状符号有自己的方向性并且与地图比例持有关。线状符号的形状或颜色表示地物的类别,用符号的中心线表示物体的位置,通过线状符号的粗细尺寸或颜色的亮度变化表示物体的等级。线状符号能表达事物的形状、弯曲程度及延伸方向。符号的结构不同,在视觉上产生的效果也不同。就符号的宽度、连续性与复杂性来说,宽的比窄的要突出、连续的比间断的要突出、复杂的比简单的要突出。在地图中,线状符号的几何中心与地物实际位置是一致的,例如河流、道路和境界等。地图上的线状符号也很多,如图2.2所示。 图2.2 地图上的线状符号3)、面状符号。在地图上当符号所代表的概念能在抽象的意义下可以认为是几何上的面时,则被称为面状符号。这时地图符号所出的范围同地图比例尺就有比切得关系。面状符号通过其外轮廓线来表示物体的分布范围,因为面状符号都是依比例尺变化的,所以其分布的范围就是它的实际位置用颜色的色相、亮度、饱和度、网纹的变化,或者是内部点状符号的形状变化来表示物体的性质。面状符号在地图上也很常见,如森林的范围、沙滩、芦苇地、体育场、学校等。如图2.3所示。 图2.3 地图上的面状符号2、按地图上的符号与地图比例尺的关系分类。地图上符号与比例尺的关系是指符号与实地物体的比例关系,地图符号按其与地图比例尺的关系分不依比例尺符号、半依比例尺符号和依比例尺符号三种。1)、不依比例尺符号。是指保持物体平面轮廓形状的符号。不依比例尺符号所表示的物体在实地上占有很小的面积,一般为较小的独立物体,若按比例尺缩小到地图上只能成为一个点而不能显示平面轮廓,但是有很重要,必须表示它,所以采用不依比例尺符号表示。不依比例尺符号只能显示物体的位置和意义,不能用来衡量物体的面积大小和高度。2)、半依比例尺符号。是指只能保持物体平面轮廓的长度而不能保持其宽度的符号,一般情况下多数为线状符号。半依比例尺符号所表示的物体实地上是狭长的线状物体,按比例缩小到地图上之后,长度以比例表示而宽度则不能依比例表示。半依比例尺符号只能供量测其位置和长度而不能量测其宽度。3)、依比例符号。是指不能保持物体平面轮廓图形的符号,被人称作轮廓符号或真形符号。依比例尺符号所表示的物体在实地占有相当大的面积,所以即使按比例缩小还能清晰的显示出平面的轮廓形状并且为之准确,其符号具有相实性即符号的形状和大小与地图比例尺之间有准确的对应关系。比如在地图上表示森林、海洋、湖泊等符号都是依比例尺符号。2.3地图符号的功能地图是空间信息的符号模型,地图上的符号能把地面上错综复杂的现象和物体用符号语言表现出来,使用图者能够想象到实际情况。用地图符号表示地图内容的过程中,它的功能表现在以下五个方面:1)、地图符号是地理空间信息的载体和传递手段。地图本身虽然可以表示客观存在的现实世界,但并不是真实的现实世界,而是要经过读者通过阅读地图而被感受的。由于地图是空间信息的符号模型,地图符号与它所代表的制图对象之间有一定的约定性,所以地图符号可以形象、直接、生动的表达和传递地理空间信息。2)、地图符号构成的模型,可以对地理空间进行不同程度的抽象、概括和简化,能反映区域的基本情况。3)、地图符号提供给地图极大地表现力。地图符号可以表现具体的事物如树木、房屋等,表示抽象的事物如宗教信仰、文化传统等,表示过去的事物如古迹江河湖泊的改道等,表示现在的事物如河流、森林等,表示未来的事物如计划改造的大厦、城市的未来规划等,表示事物的外形如海岸线等,表示事物的内部特征如表示矿山中含有金、银、铜等。4)、地图符号能再现客体的空间模型或者给难以表达的现象建立构想模型。地图符号能给难以表达的现象建立模型,如等高线可以构成立体模型。在地图上符号之间和这些模型上都可以进行 的测度。5)、地图符号提高了地图的应用效果。地图符号不是孤立存在的,而是相互联系的。第三章 地图符号中点状符号库的建立与显示3.1 传统的符号绘制存在的问题地图符号库是电子地图或 GIS 系统不可缺少的一个模块,由于地图符号的多样性和复杂性,如何用计算机来方便、简单地实现所有地图符号的绘制和制作一直是符号库研究的重点和难点。通常,符号库主要由索引区和数据区组成。数据区中存放符号的描述信息,即所谓的图元集合。就点状符号库来说,基本图元是一些任意线段和规则几何图形,即点、直线、折线、曲线、圆弧、文字等。这些符号在绘制时存在一些不足,主要表现在: 由于直线折线等的存在,图形放大后容易出现锯齿。 由于坐标数据不能自动压缩,在图形缩小时清晰度将降低。 由于坐标系统的差异,对于屏幕显示、打印输出、胶片输出等不同输出形式,需要作各种坐标转换和信息解译,影响其效能。 由于存贮和索引机制不理想,影响图形绘制的速度。3.2 点状符号的特点和采用TrueType格式的优势 点状符号是用来表示其定位点上的地图信息的地图符号,在以往的符号库建立中,点状符号被看成是一个有限直线段的集合,各直线段通过统一的坐标系联系在一起。任意线段和规则几何图形成为图元(Cell),一个点状符号就以图元为基础进行设计,设计时以一个统一的坐标系(符号空间)为准,坐标系的原点就是此点状符号的定位点。任意点状符号都可以用基本图元来组合,图元是点状符号的基础,它是点状符号中常见的规则几何图形,构建符号的基本图元是以下几种:矩形类(直线、矩形、圆、椭圆、正多边形、星形)、折线类(折线、曲线)、圆弧类(圆弧、扇形、弦形)、注记、位图等。所以,点状符号库的建立是比较麻烦的,需要考虑很多的因素,往往由于考虑不周全,在存储和绘制(可视化)时存在前言中所述的不足之处。其实,点状符号比较线状、面状符号而言,除了拥有地图符号的一般特点外,还有许多自己的特点:1)点状符号图形形体相对较小;2)点状符号图形都有准确的定位点和方向性;3)点状符号图形固定,不随它在图幅中位置的变化而变化;4)点状符号图形比较规则,大都由几何图形构成;5)点状符号色彩单一,大都只由一种颜色组成。点状符号的这些特点和地图中的注记字符有很多相似之处,那么,我们可以从汉字库建立的原理和方法中得到借鉴,建立一套高质量的 TrueType 格式的点状符号库TrueType格式主要用在字库上,是一种字形描述技术。所谓字形描述技术就是以数字代码描述字的形状,在版面输出的时候,再由计算机将代码还原,恢复字的原来形状,由输出设备输出。字形描述技术水平的高低,不仅决定了输出字的速度、字形美观程度和输出效果,同时也影响到字库存储空间和字形还原的计算量。TrueType格式采用以二次曲线逼近符号轮廓,其特点是将整个符号外框用 Bezier 曲线或Spline 曲线来拟合,可以较完整地保留符号原有的形状信息。Bezier曲线选用了新的插值函数族和采样点算法,通常用四个控制点来描述一段曲线,即避免了复杂的运算,又保证了运算的精度,是目前公认的最适宜的文字描述方法。TrueType字库把放大时的智能处理集中于字体轮廓描述上,加上 Windows 软件的支持,可以作为很好的屏幕显示使用;同时,TrueType字符经解译后也可用作普通激光打印机打印输出,且输出效果相当不错。TrueType 字符在屏幕和打印机上都可以无级缩放,且缩放后的效果也很好。如果点状符号采用 TrueType 格式制作和存储,那么其在屏幕和打印机上同样可以实现效果很好的无级缩放,且速度也很快。3.3 TrueType格式的点状符号库建立方法这里有两种解决思路,一种是将点状符号库搭载在某种字符集上,简称搭载法;另一种是新建一个字符集,专门装载点状符号,简称新建法。搭载法的思路是将点状符号当作一个特殊字符扩充到某种字符集上,享受字符集的所有功能。我们知道,汉字是作为字符形式来存储和显示的,一个汉字占用两个字节,其存储方式采用区码和位码相结合的形式。在三级国标中,共有 126 个区,每个区存放 190个汉字。区码从 0X81 开始到 0XFE,位码从 0X40 到0XFE (0X7F 不用),三级国标汉字集最大容量为 23 940个,而现有汉字和符号为 20 902 个,除去一部分空格浪费一些内码外,还有2 000个左右的空白区可以利用,具体范围为:AAA1 AFFE,6 个区,F8A1FEFE,7 个区,每个区有 94 个空位;A140 A7A0,7 个区,每个区有 96 个空位。在这些空白区放入点状符号,放入的点状符号将成为字符集的一部分,自动享受它的存储管理和索引机制。搭载法的具体做法是利用 Windows 内置的有关工具软件,将点状符号添加到系统中。在 Windows 系统的附件中,有一个“造字程序”,它能接受 64 64 点阵形式的构图方式,直接在这上面绘制点状符号显然不可取。我们可以利用其他工具软件如 MicroStation 制作各种复杂的符号,统一转成 EPS 等格式,也可利用Illustrator制作图元转换为栅格形式,这样就可以将点状符号一个个的剪贴到“造字程序” 中,实现点状符号的搭载。新建法是撇开现有字符集,但字符的存储和管理还是采用 Windows 字符集的机制。市面上现有一些软件如 Font Creator Program,它能新建或修改符号、字符集。创建的符号集(symbol)采用的是 ASCII码,用单字节存储,每个符号集只能容纳255 个字符,一些大的公司比如富融公司(ESRI)就制作了大量的TrueType符号集,但这些符号集比较分散,不太好管理。如果创建字符集,则采用 Unicode 的机制,是一种国际码,不太方便使用。最好的办法是在现有的字符集基础上进行修改,然后另存为其他一种名称,从而实现新的独立的 TrueType 点状符号集的建立。3.4 TrueType格式的点状符号库使用方法TrueType 点状符号库最后形成以 ttf为后缀的文件,它的安装和汉字库的安装方法一样,也可直接拷贝到FONT 目录下。安装好以后,符号库中的符号相当于一个字符,它的使用类同于一个字符的处理,此时点状符号的绘制、操作就好像地图注记的配置一样简单方便。3.4.1索引的建立从汉字库中调用汉字,往往需要一个输入法,在文本编辑器中进行编辑。TrueType点状符号库也可创建一个输入法,首先确定符号的输入码,在此基础上建立一个码表元文件,利用 Windows 内置的输入法生成器(Imegen.exe)就可生成一个输入法。不过地图数据的生产者和使用者往往是分开的,生产者一般只输入点状符号的定位点、属性等信息,不可能象注记的输入一样有指针还有名称,所以输入法基本行不通。解决这个问题其实很简单,TrueType点状符号库中的符号是按 ASCII 码或区位码存贮的,一个符号对应一个码,而在地图数据生产时,点状符号是以要素编码来识别的,一个编码对应一个点状要素,这样要素编码与区位码之间存在一对一的关系。只要事先建立好这种关系,在地图绘制时,通过编码寻找它的区位码,根据区位码就能遵循库本身的索引机制找到它的 TrueType 格式的数据,提供给绘图函数。3.4.2点状符号的绘制此时的点状符号其实可看作是一个字符或是一个字符串,它的绘制也只要简单的采用文本绘制的方法。例如在 VC+环境中,可以采用 CFont 类中的 CreateFont函数定义符号的大小及符号库的名称;采用 CDC 类中的文本函数 SetTextColor 定义符号的颜色;选用 TextOut在指定位置绘制该符号。这里有一个小问题,就是根据要素编码得到它的ASCII 码或区位码后,如何在绘图函数中绘出该符号。对于 ASCII 码很简单,直接进行数据类型转换即可,如假设ASCII码63,可以这样转换:char symbol=63;pDC -TextOut (x , y , symbol);对于区位码,即双字节表示一个符号,要将区位码转换为字符串,假设区位码为 B0A1,可以这样转换:char symbol 3; symbol0 =0x0b0; symbol 1 =0x0a1; symbol 2 =0; pDC-TextOut (x , y , symbol);即在 x,y 位置上绘制了该点状符号。3.5 本章小结从汉字库的结构出发推出TrueType点状符号库,是地图符号库建立的新思路,实践证明是可行的,不但符号外形美观,无级缩放无损伤,而且显示速度快,既适合屏幕显示又适合打印输出,提高了地图生产和出版的效率。第四章 点状符号的详细设计 点状符号是用来表示地图上不依比例尺的小面积地区和点状地物,表示其定位点上的地图信息的地图符号,如水塔、单棵树等符号。点状符号是由规则的几何图形经过组合得到的,它被称为图元。4.1 点状符号的设计点状符号是用来表示某定位点上的地理信息的地图符号。对点状符号本身而言,定位点是一数学上的点,但这个点却可以代表实际呈点、线、面分布的物体。点状符号除了拥有覅屠夫好的一般特点外,还有许多自己的特点:1)、点状符号图形形体相对较小。2)、点状符号图形都有准确的定位点和方向性。3)、点状符号图形固定,不随它在图幅中的位置变化而变化。4)、点状符号图形大小不随比例尺的大小变化而变化。5)、点状符号图形比较规则,能用简单的几何图形构成。4.2 点状符号的构造原理 点状符号的主要视觉变量是形状、尺寸和色彩。形状和色彩表示点状地图符号的质量差别,尺寸表示其数量差别。形状变化时点状符号的主要表示方法。 任何点状符号都可以用基本图元来组合,图元是点状符号的基础,它是点状符号中常见的规则几何图形。点状符号的设计重点在于各种图元的设计,所以在设计点状符号之前要先定义一些基本图元,一个复杂的点状符号就有基本图元构成的。通过对地图中点状符号结构的分析,符号制作系统中用来构造符号的基本图元可以是以下几种:直线、矩形、圆、椭圆、正多边形、星形、折线、曲线、圆弧、扇形、弦形、注记、位图、点、线段、折线、样条曲线、三角形、矩形、多边形等。图4.1为点符号的部分图元例子。 图4.1 点状符号图元利用图元进行合理的组合,基本上可以构造出地图上所有的点状符号。如图4.2所示,机场标志就是用一个填充的多边形设计的,树是用一个填充的多边形和一个矩形图元组成,古塔符号是由三个直线段和一个填充三角形(多边形)组成。 图4.2 点状符号示例但为了设计出理想的点状符号,还应遵守一定的原则并掌握一些技巧:1)、明确各图元的定义参数。对于每种图元,他们的定义参数不尽相同,要用最节省存储空间的参数来定义各图元,同时也要有利于图元的绘制。2)、选择最少数量的图元。在对具体的点状符号进行设计制作时,要尽量选择最少数量的图元,以利于点状符号的设计和点状符号库的管理。3)、点状符号设计时应有统一的坐标系。各个点状符号的定位点坐标都是以这个同一坐标系为标准。4.3 点状符号库设计 点状符号库包含两个部分:点状符号的描述信息和点状符号中图元的信息。点状符号的描述信息是可以定义的。符号的描述信息则表现为各图元与符号定位点之间的关系,它通过图远的各控制点与符号定位点的关系反映出来。点状符号库的数据存储结构如图4.3所示。 图4.3 数据存储结构4.4 符号库的管理及存储机制符号是由图元对象聚合而成,为了对符号进行快捷高效的管理则建立了符号索引。本文采用单文件法,索引与数据放在同一文件中,而索引放在数据文件之前,便于快速查找和新增。符号库文件中包含索引区和数据区,如图4.3所示。 图4.3 符号库存储结构4.5符号化算法 由于点状要素具有一定的独立性,其间相关性较小,因而点符号是符号化时较易处理的一种符号。点符号从符号空间转换到地图空间是通过位移变换实现的。其绘制过程相对简单,只要根据有关的定位点坐标、符号、符号大小等信息,将符号库中相应变换所需的尺寸和方向,通过位移配置到地图空间即可。第五章 TrueType字体技术的研究分析与应用字体的概念是在印刷业中最早提出的。随着计算机技术的发展, 出现电子出版技术, 从而逐步形成了相应的字体技术。字体技术的发展经历了三个阶段: (l)点阵字体; (2)矢量字体; (3)曲线轮廓字体。其中曲线轮廓字体包括两种类型, 一种为PostScript 字体, 另一种为TrueType 字体和OpenType 字体。TrueType 是Apple 公司和Microsoft 公司合作开发的页面描述语言(Page Description Language, PDL)TrueImage 中的字形描述部分。TrueType 字体( 简称TTF) 采用直线和二次Bezier 曲线来描述字符的轮廓, 结合了光栅技术和矢量技术的优点, 克服了以往所有点阵字体、矢量字体和向量轮廓字体的缺点, 字体可以任意放大、缩小、旋转和变形而不会影响输出质量, 提供了真正的设备无关性1, 2, 4。二次Bezier 曲线既能保证轮廓曲线的光滑性, 又有利于提高字形还原速度。另外, TrueType 所特有的丰富的指令集, 不仅弥补了TTF 的二次曲线描述轮廓的不足, 而且增强了TTF 字形描述的灵活性。若要提高字体的质量, 不仅可以通过数据信息来实现, 而且可通过增加指令来进行5。Microsoft 公司从Windows 3.1 开始就采用TrueType 字体技术。随着Windows 的流行, TrueType 已经成为事实上的字形描述标准之一7。5.1 TTF 技术原理 TrueType 字体标准的主要思想是将所有的文字看成是一些相互独立的图像区域的组合, 这些图像区域由一条封闭的曲线围成, 而这条曲线由一些相互联系的点构成。由此, 要记录一个文字, 只需记录这个文字的图像区域, 进而只需记录曲线, 最后只需记录构成这些曲线的点的相对坐标就可完成对文字的记录和处理。5.1.1 图像域在一个TrueType 类型的字体中, 文字图像的形状是由它们的外围线来描述的。这些外围线形成了一系列的图像域。一个简单的文字可能只有一个图像域, 而大部分的文字可能包含两个甚至更多的图像域。而一些控制字符因为不可见, 从而没有图像域。如图1 所示, 字符7由一条闭合曲线组成, 所以它只包含一个图像域; 而字符i由两条闭合曲线组成, 所以它包含两个图像域; 而字符B则由三条闭合曲线组成, 所以它包含三个图像域。 在TrueType 字体文件中, 每个字符的图像域的轮廓线由直线和曲线组成, 每一条曲线可由一系列的二次Bezier 曲线组成。5.1.2 曲线TrueType 对字形的描述是由轮廓描述的, 轮廓由一串有序控制点组成, 控制点由在线上和不在线上两种属性来表示。这些控制点通过二次Bezier 曲线来决定实际的轮廓曲线, 图2(a)是最简单的二次Bezier 曲线的模型。其中, P0, P2 点是实际轮廓曲线必须通过的点, P1 点为不在线控制点。实际轮廓曲线上的点P 的坐标P(x(u), y(u)由如下公式决定: x(u)=x0+2(x1- x0)u+(x2- 2x1+x0)u2 y(u)=y0+2(y1- y0)u+(y2- 2y1+y0)u2 其中, P0(x0, y0)、P1(x1, y1)、P2(x2, y2)分别是P0, P1, P2 点的坐标; u 为参数, 取值范围为0u1。通常情况下, 控制点不止一个, 对多个控制点的情况, 由TrueType 仍然使用二次Bezier 曲线, 其处理方法以图2(b)为例说明如下: 取控制点P1, P2 的中点P12 作为一个控制点, 则P0, P1, P12 三点构成了如图2(a)所示的情形, 仍用上述的处理方法就可以得到一段实际轮廓曲线。接下来, 又将P12 作为P0, P2 将作为P1, 按照以上原则处理下去, 最后得到了整条轮廓曲线。 TrueType 的字形就是由若干个封闭的轮廓曲线构成的。图3 中, 0 和1 点是在线控制点, 2 点为不在线控制点, TrueType 对字形轮廓上的控制点都给出一个编号, 编号按照顺时针的方向进行排列。TrueType 类型的字体中, 曲线的记录是通过记录这些点的坐标来实现的, 这必然就涉及到坐标系的建立和确定。5.1.3 坐标系在数字化一个字体的时候, 一个关键性的决定就是坐标系的选择与确定。这样, 构成闭合曲线的所有的点就可以通过该坐标系被描述出来, 并且成为一个位置确定的点。在TrueType 类型的字体中, 坐标系是一个二维平面系统。X 坐标表示的是点的水平位移, Y 坐标表示的是点的垂直位移, 坐标系原点的坐标位(0, 0)。该坐标系不是一个无限平面, 每一个点的坐标范围必须在- 16384 至16383 之间。但在不同的系统分辨率下, 这个范围可能会更小。每一种文字的坐标系位置的选择也是不确定的, 这是由设计人员自己决定的。由于不同的输出设备有不同的分辨率, 所以, 在不同的分辨率下如何保持各点间的相对位置不变也是需要解决的一个问题。在TrueType 类型的字体中, 主要是解决了点坐标和象素之间的相互转换问题, 从而保证了在不同输出设备上不出现变形等问题。5.2 TTF 文件结构TTF 文件是用树形的表组织起来的3, 5, 由3 个部分组成: 文件头、描述表目录和一系列的描述表。其中文件头为12 个字节, 分别表示文件版本号、描述表数目、描述表快速查找范围、入口选择、范围调整等信息; 文件头后紧跟描述表目录, 每个目录项长度为16 个字节, 包含描述表名称、描述表内容的校验和、描述表的偏移地址及描述表字节长度等; 最后是各个具体的文件描述表, 包括字符编码的查找方法、轮廓数据的描述方法等信息。5.2.1 TTF 文件描述表常用的TTF 文件描述表共有19 个, 其中10 个是必备的, 其它9 个是可选的表。表1 为TTF 文件中必须包含的表项。在必备表中, 以代码映射表cmap、轮廓数据索引表loca、轮廓数据表glyf 最为重要。因为TTF 字库本身有一个排列字模的顺序, 一般并不与系统字符编码相同, 所以用cmap 表来作为系统字符编码到字模序号的映射, 用来标志不同的平台和字符集。cmap 表由cmap 表头、cmap 子表描述目录和一系列子表组成。cmap 表头长度为4 个字节, 内容如下: USHORT cmap_version /cmap 表版本号USHORT cmap_tables /子表的个数接下来是cmap 子表描述目录, 共有cmap_tables 个目录入口, 每个目录项长度为8 个字节, 内容如下: USHORT Plateform_ID /平台标识USHORT Encoding_ID /编码体系标识USHORT offset /子表位置偏移在子表描述目录后是每个子表的详细描述, 为了支持各种字符编码方案, cmap 子表可以有多种描述方式。cmap 使得TFF 字体文件可以在不同的平台和编码体系下使用。loca 表给出了每个字符的轮廓描述信息在glyf 表中的偏移位置和长度。glyf 表是TrueType 文件的主体部分, 用于存放所有的轮廓描述信息, 包括描述字形轮廓的数据信息和修正字形轮廓的指令信息两部分, 数据信息包含一系列的轮廓点坐标, 构成字符的原始轮廓, 指令信息则对原始轮廓进行修正。每个字模的轮廓描述信息都有一个头, 结构如下所示: USHORT numberOfContours /轮廓数目WORD xMin /轮廓点的最小x 坐标WORD yMin /轮廓点的最小y 坐标WORD xMax /轮廓点的最大x 坐标WORD yMax /轮廓点的最大y 坐标如果numberofContours 大于等于0, 则此字模为简单字模, numberofContours 表示它包含的封闭轮廓的个数; 如果numberof- Contours 小于0, 则此字模为复合字模。简单字模在此表中存放的是一系列的轮廓点的坐标以及作用于此简单字模的指令信息; 复合字模在此表中存放构成复合字模的简单字模序号和作用于复合字模的指令信息。5.2.2 从字符编码到字模的映射根据字符编码获取字形轮廓数据的处理步骤为: ( 1) 根据给出的字符编码查找代码映射表(cmap)获得对应的索引号; (2) 根据索引号从轮廓数据索引表(loca)中得到它在轮廓数据表(glyf)中的开始和结束位置; ( 3) 从轮廓数据表(glyf)中得到字体轮廓数据。计算机用户要使用TrueType 字体时, 只需给出字符的Unicode 编码。TrueType 解释器会根据字符编码, 通过查找cmap 表得到映射偏移量, 再从loca 表获得对应字符轮廓数据在glyf 表中的存放地址, 读出glyf 表中的轮廓信息及指令信息就可以生成高质量的TrueType 字形。有些双字节代码不对应任何字符, 则camp 表将它们统统映射为loca 表中的序号0, 称为丢失字符, 其对应轮廓数据往往显示出来是空心方框。5.3 TTF 应用实例5.3.1 建立汉字笔画字体我们利用High- Logic 公司的TrueType 曲线轮廓造字软件FCP(Font Creator Program) 6, 建立汉字笔画的TTF 字体文件。在FCP 造字软件中, 每个字形由一组二次Bezier 曲线构成, 如图4 所示, 通过添加、删除或调整Bezier 曲线上的点的位置, 可以对字形进行修整。然后可以设置汉字笔画字形的参数, 如标准字号的大小、每一个字形前后左右预留的空间大小等。利用FCP 造字软件, 依次完成汉字的每个笔画的字形建造。保存文件, 生成一个独立的可运行于Windows 环境下的TTF 字体文件。5.3.2 安装汉字笔画字体将汉字笔画的TTF 字体文件复制到系统的Fonts 目录中, 当然也可以复制到其它目录中, 只要记住其完全路径即可; 然后调用字体安装函数AddFontResource8, 其原型为: int AddFontResource (LPCTSTR lpszFilename); 函数中的参数lpszFilename 是要安装的字体的文件名。此函数将字体资源安装到系统字体表中, 供应用程序使用。 5.4 本章小结由于采用直线和二次Bezier 曲线来描述字符的轮廓, TrueType 字体可以任意放大、缩小、旋转和变形而不会影响输出质量, 提供了真正的设备无关性。TrueType 字体是非常优秀的曲线轮廓字体, 如何深入研究它并利用其特点建立计算机用户所需的TrueType 字库, 是一个非常有意义的研究方向。 第六章 基于TrueType字体的点状符号TrueType是Apple公司和Microsoft公司合作开发的页面描述语言TrueImage中的字形描述格式。ESRI ArcGISM、MapInfo等多种GIS平台均采用TrueType技术来组织点状地图符号。基于TrueType字体的点状符号的主要特点是(1)将点状地图符号视为一个字符,采用Countour(轮廓)来描绘点状地图符号的几何形状;(2)以TrueType字库的形式来组织符号的集合,构建符号库;(3)利用ClearType、Hint等技术实现TrueType字符在小尺寸、低分辨率条件下高视觉质量的绘制;采用缓存加快字符的绘制效率。 以上三个方面的特点使得基于TrueType的点状地图符号库成为当前GIS、地图制图系统中点状地图符号最主要的形式。但是也存在以下问题(1)TrueType Contour数据结构是针对西文字符轮廓,主要是不规则光滑曲线的特点来设计的。地图符号是经过设计和提炼的图形,主要包含规则的线段、圆(弧、弓)、多边形等。采用Coutour数据结构来构建点状地图符号,线段只能被描述成多边形,圆(弧)只能有Bezier曲线拟合,导致数据冗余,编辑工作量大。此外,Coutour中仅仅包括二次Bezier曲线,无法描述地图符号中的样条曲线。(2)TrueType字库仅windows系统支持,采用其它字库的输出设备则无法使用。地图出版印刷设备基本都采用PostScript字库。(3)TrueType字库采用平坦的顺序结构字库文件内的所有地图符号,不能反映地图符号的群属和分类特征;字库采用字符编码来检索符号,不支持地图符号基于编码和属性检索。6.1 TrueType技术及TrueType字体的特点TrueType是由AppleComputer公司和Microsoft公司联合提出的一种新型数学字形描述技术。它用数学函数描述字体轮廓外形,含有字形构造、颜色填充、数字描述函数、流程条件控制、栅格处理控制、附加提示控制等指令。TrueType采用几何学中二次B样条曲线及直线来描述字体的外形轮廓,其特点是:TrueType既可以作打印字体,又可以用作屏幕显示;由于它是由指令对字形进行描述,因此它与分辨率无关,输出时总是按照打印机的分辨率输出。无论放大或缩小,字符总是光滑的,不会有锯齿出现。但相对PostScript字体来说,其质量要差一些。特别是在文字太小时,就表现得不是很清楚。TrueType字体具有如下优势:真正的所见即所得字体。由于True-Type字体支持几乎所有输出设备,因而无论在屏幕、激光打印机、激光照排机上,还是在彩色喷墨打印机上,均能以设备的分辨率输出,因而输出很光滑。支持字体嵌入技术。存盘时可将文件中使用的所有TrueType字体采用嵌入方式一并存入文件之中,使整个文件中所有字体可方便地传递到其它计算机中使用。嵌入技术可保证未安装相应字体的计算机能以原格式使用原字体打印。操作系统的兼容性。MAC和PC机均支持TrueType字体,都可以在同名软件中直接打开应用文件而不需要替换字体。6.2 采用TrueType制作点符号的介绍 采用TrueType制作点符号,TrueType字体(TrueType Font,TTF)的设计思想相当优秀,它用的轮廓描述曲线是二次B样条(Bezier-spline)函数。TrueType技术可以制作出具有真正设备无关、系统无关、真矢量等特征的TrueType点符号。与传统矢量符号相比,TrueType点符号具有下述优点:1)、高分辨率。可以在任意输出设备(屏幕、打印机等)上高分辨率输出。2)、绘制速度快。用复线和变化曲线描述符号,省去许多点坐标,从而达到高速绘制。3)、真正系统、设备无关性,可以跨平台使用。4)、真正矢量效果,可以无级缩放而不发生形变。6.3 TrueType点符号的制作 对于TrueType点状符号的制作,虽然可以利用一般的制作工具或windows得TrueType字体造字程序,但对于点状符号的应用,其定位的准确性是很重要的,在一般的制作工具或windows得TrueType点符号一定要顾及GIS点符号的特点。选择在CorelDRAW12下制作具有精确定位点的TrueType字体符号,具体做法如下:1)、根据所有符号的大小规格设置页面。如:设置页面为750mm750mm。2)、绘制想要的符号。3)、在“排列”菜单下选择“对齐和分布”的“在页面中居中”,使图元居中。4)、结合图形 用鼠标选中所有图形,在“排列”工具条中选择“结合”。5)、导出图形第1步、导出字体的第一个字符在“文件”选单栏,选“导出”,此时在文件对话框中提示输入的“文件名”,如:输入“GeoDraw”,文件的“保存类型”是字体文件“truetypefont(ttf)”格式:点击“导出”按钮,会弹出如图1所示的对话框。 图 1 第2步、填入系列名称,这个系列名称就是安装字体后的字体名。前导选“1”,点击“OK”,弹出如图2所示的对话框。 图 2第3步、字符数是指符号对应的位置,每个符号对应一个字符,这是必选项,点击“OK”,一个符号就制成了。重复以上步骤,完成所有额符号制作,安装字体后如图3所示。 图 3 表1是给水和燃气管线符号的例子。6.4 地图符号的调用以VC+为例,基于MapObject下开发的调用点符号的具体代码如下:/利用CMoValueMapRenderer对象来符号化CMoValueMapRenderer vmRenderer;If(!vmRenderer.CreatDispatch(TEXT(“MapObjects2.ValueMapRenderer”)return;vmRenderer.SetField(TEXT(“BLOCKNAME”);/ “BLOCKNAME”索引符号库的字段名vmRenderer.SetUseDefault(false);vmRenderer.SetSymbolTyoe(0);/表示点图层的渲染vmRenderer.SetValueCount(string.GetCount();/表示渲染的Symbol个数for(short vm=0;vmstring.GetCount();vm+)vmRenderer.SetValue(vm,strings.Item(COLeVariant(vm);CString symbolName=string.Item(COLeVariant(vm);SymbolInfo symbolInfo;/自定义类,包含了每一个图层的图形符号索引信息图形符号索引信息图形符号索引信息 ResSymbol(symbolName,symbolInfo);vmRenderer.GetSymbol(vm).SetStyle(4);/使用TrueType字体中图元显示标志COLeFont fnt= vmRenderer.GetSymbol(vm).GetFont();Fnt.SetName(symbolInfo.m_symbolFontName);vmRenderer.GetSymbol(vm).SetFont(fnt);/设置字体名vmRenderer.GetSymbol(vm).SetColor(ymbolInfo.m_symbolColor);/符号颜色vmRenderer.GetSymbol(vm).Set Size(ymbolInfo.m
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!