地图符号化实现方法

更新时间:2023-05-27 18:02:13 阅读: 评论:0

地图符号化实现方法
地理信息符号化是地理信息生产和应用时必须要实现的技术,对地理信息处理和应用有较大的帮助作用。地理信息的符号化通常是指它的二维屏幕表达。利用丰富的地图符号和视觉变量,在计算机屏幕上对各种地理信息进行直观和清晰的显示一直是数字制图和GIS的核心技术之一。本文就这方面的主要方法和实现技术进行深入讨论。
    2 地理信息符号化方法
    地理信息符号化的主要方法采用地图图形和符号对地理信息进行表示。众所周知,地图图形是地图的语言,它既表示了地理实体的形状、位置、结构和大小信息,也表示了实体的类型、等级以及其他数量和质量特征。地图图形符号的设计和建立主要有三种方法,即编程法、信息块法和交互设计法。
    2.1 编程法
    编程法是将地图符号分解为图元(特定的几何要素,如直线、三角形、矩形、圆、弧等,称为图元),然后通过程序的方法相继调用绘制这些图元的函数,由图元的组合来实现地图
符号的绘制。如图1所示。在调用绘制图元的函数时,根据符号的特点和定位关系输入适当的参数。
    对于大多数点状符号,它们的定位点是固定的,符号中各组成部分相对于定位点的关系也是固定的,因此对于这些符号,以后在使用时只要给出定位点坐标和符号的绘制比例即可。有些点状符号的定位点可能不止一个,如半依比例尺桥梁符号,它的定位点有二个,一个是桥梁的中心点,另一个是桥梁的方向点,桥梁符号的其他点位坐标是靠这二个点计算出来的。
    对于线状符号,只要给定线状符号中心线上的点位坐标就能生成线状符号。在采用编程方法时,符号一般都是固定的,所给的定位点也是少量的,利用这些少量的信息根据符号内在的相互关系就可以形成相应的符号。
    采用编程法来实现地图符号的绘制其最大的缺点是不便于修改,每一个符号的修改和调整都要改动相应的程序,较为费事。它的优点在于能将大量的地理信息自动地进行符号化,不需要太多的人工干预。只要按照地理信息的属性编码,检索出相应的符号名称,然后调用绘制这些符号的程序,即可得到各种不同地图符号的输出。符号信息及各种处理和
底层接口调用都由计算机独立完成。目前,这种符号的实现方法较为成熟,在实际应用中仍有广泛的应用。
    2.2 信息块法
    信息块法是用人工的方法将要绘制的符号离散成数字信息,用统一的结构和方法进行描述,这些描述信息存放在数据文件中,一个符号构成一个信息块。绘图时只要通过程序处理数据文件中的信息块,即可完成符号的绘制。如图2所示。要修改的话也只是修改数据文件,而绘制地图符号的软件保持不变。
    2.3 交互设计法
    交互设计法是在一定的图形设计软件中,有一系列的图形元素绘制工具供用户选择和使用,用户采用精确输入的方法把构成符号的各个图元按照相互之间确定的关系有机地把它们组合在一起,并选择一个定位点。绘制好的符号起个名字存放在相应的符号库中,这些符号可以是点状符号,也可以是线状符号和面状符号。
    当是点状符号时,调用时只要给出定位点,所要的点状符号就会自动配置上去。如果是
线状符号,光标只要给出定位中心线的位置,就形成相应的线状符号。如果是面状符号,只要给定边界,面状符号就会填绘上去。
    这种符号绘制方法十分方便而且便于修改。不需要编写程序,全靠数据结构和数据之间的关系起作用。采用人机交互的方法来设计和绘制地图符号大大地方便了用户,提高了工作效率,减轻了工作量,代表着符号设计和绘制的发展方向。
    上述三种产生地图符号的方法在有些情况下要结合起来使用,各自有着不同的使用场合,很难说只用一种方法就能解决所有的问题。
    3 地理信息符号化控制技术
    地理信息符号化控制技术是指地理信息符号化过程如何控制和实现的,随着数字地图制图技术的不断发展,地理信息符号化控制技术也在不断的发展和完善。目前可以通过三种方式来实现地理信息符号化过程的控制,即程序控制方式,基于控制文件的方式和基于关系数据库的控制方式。
    3.1 程序控制方式
    程序控制方式建立在图形符号编程法基础之上,是一种内部控制方式,它完全依赖于计算机程序,在数字制图技术出现的初期被广泛使用。但是以这种方式实现的符号化控制可维护性差。一旦程序编写完毕,所有的符号化控制都固定了,当生产其他类型的地图时,必须对控制符号化的源程序做出相应的调整或者重新编写,这显然降低了系统的通用性,不利于整个系统推广和应用。针对这样的问题,地图工作者希望利用外部控制的方式来实现符号化的控制,以降低对程序的依赖性,因此基于控制文件的方式便产生了。
    3.2 基于控制文件方式
    基于控制文件方式是通过计算机程序对控制文件中的内容进行解释来完成对地图符号化的控制,它是一种外部控制的方式。符号化控制文件的设计是依据地图要素编码的特点,按照点、线、面要素归类并设置控制项,主要包括要素编码对应的地图符号控制和相应的说明注记控制。这种方式与完全依靠程序来实现地图符号化控制相比,便于维护,通用性得到提高。如果需要增加或修改一种要素的符号化效果,只需要增加或修改该要素的符号化控制项,而不用修改源程序。针对不同类型的地图,只需设计相应的控制文件,就可以完成对地图符号化效果的控制。但这种方式也存在一些不足,其控制项较多,程序解释起来比较困难,文件结构复杂,在编辑符号化文件是容易出错等。
    3.3 基于关系数据库的控制方式
    运用数据库技术最直接的想法就是用数据库中的表来取代控制文件,在数据入库时通过对符号化控制表中的符号化控制信息进行解释来完成对地图符号化的控制。在关系数据库中,各种关系都是以数据库表的形式存在,因此用数据库表来实现符号化控制是非常适合的。此外,还可利用数据库在数据管理上的优势,以及数据库自身的特点来保证符号化控制过程的正确性。从控制表自身来看,在这种方式下,符号化控制表较少,表中的控制项相对简单,共用的控制项均以字典表的形式出现,控制表与字典之间利用关系数据库的主键与外键间的约束建立关联,控制表结构简单明了,表与表之间的逻辑关系清楚,维护起来简单方便。
    4 地理信息符号化实现
    点状符号、线状符号和面状符号各有其特点,又不失共性,它们的差异是构成各自的基本图素不同,而相同之处是绘制参数(符号代码、绘图句柄、笔的颜色、刷子的颜色等)、操作方法(绘制、删除等)基本一致。根据面向对象的观点,为使各类符号对象具有相对独立性,可以将点状符号(CPointSymbol)、线状符号(CLineSymbol)、面状符
号(钢铁是怎样炼成的读书笔记200字CAreaSymbol)定义成三种符号对象类,并将各类符号的数据成员(属性数据)及其函数成员(操作方法)封装在各自的对象类中。同时又在这三个类的基础上概括出更高层次的类,即符号类(CSymbolBa)。
    符号类(就的英文CSymbolBa)的定义如下:
    class CSymbolBa : public CObject 
    {
    //成员变量表达暗恋的诗句
    public:
云南香格里拉旅游
        CString        m_strCurrentPath;          //符号路径
        CString        m_SymbolCode;              //符号代码
        COLORREF        m_SymbolColor;          //符号颜色
美人为馅第三季
    //成员函数
    public:
        void    DrawParral(CDC *dc, ……);      //绘制平行线
        void    DrawThickLine(CDC *pDC,……);  //绘制加粗线
    ……
    }
    4.1 ge开头的成语点状要素的符号化
    点状符号类的定义如下:
    class CSymbolPoint : public CSymbolBa 
    {  //成员变量
    public:
        CObList    *m_polylineList;            //折线图元列表
        CObList    *m_ellipList;        //椭圆图元列表
        CObList    *m_chordList;          //圆弦图元列表
        CObList    *m_rectList;                //矩形图元列表
        CRect m_Boundrect;      //符号的外接矩形,相对于符号的定位点
    //成员函数
    public:
        void    ReadPointFile(CString m_SymbolFileName,……);  //读取符号库
        CRect  GetBoundrect(double angle,double scale);    //获得符号外接矩形
        void    DrawPointinMap(CDC *pDC,……);        //绘制符号
    }
    在程序收到用户传给的几何信息和属性信息(包括定位点信息、颜色、角度等)后,读取符号库中该符号的描述信息,进行解释并完成图形绘制。
    点状符号绘制程序的接口函数:
    void CPointSymbol:: DrawPointinMap(CString m_SymbolFileName,    //符号路径
    CString m_SymbolCode,          //符号名
    CPoint PositionPoint,          //点状地物定位点
    double SymbolScale,        //符号比例象征用英语怎么说
    double Angle,          //旋转角度
    COLORREF SymbolColor,  //符号颜色
    CDC* pDC)
    点状符号制作及选择如图3所示。
    4.2 线状要素的符号化
    线状符号类的定义如下:
    class CSymbolLine : public CSymbolBa 
    带春的四字词语在程序收到数据库中或用户传给的几何信息和属性信息(包括定位轴线信息、颜色、结束方式等)后,读取符号库中该符号的描述信息,进行解释并完成图形绘制。
    线状符号绘制程序的接口函数:
    void CLineSymbol:: DrawLinesinMap (CString m_SymbolFileName,    //符号路径
    CString m_SymbolCode,                  //符号名

本文发布于:2023-05-27 18:02:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/938304.html

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

标签:符号   控制   符号化
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图