• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

icehyp

icehyp
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

地图符号库的面向对象技术与引用接口设计

地图符号库的面向对象技术与引用接口设计
 
吴立新 刘纯波 陈桂茹 崔志琳
 
摘要 本文利用面向对象的思想,对地图符号进行了制图分类,从地图符号中抽象出构
造地图符号的15个基本图元,设计了基本图元对象类的类层次结构关系、服务于符号制
图的三个空间坐标数据结构类以及点、线、面三类地图符号的统一外部引用接口。
关键词 符号库 地图 面向对象设计 GIS
 
  地图是地理信息系统(GIS)的重要组成部分,GIS就是一种以地图为基础的空间信
息系统。地图符号是地图的语言,是地图的主要表达形式。因此地图符号库的设计在GI
S以及各种数字化制图系统中占有重要的地位。随着计算机技术的发展,面向对象程序设
计思想得到了广泛的实践与应用。利用面向对象的设计思想设计地图符号库,可以大大
地优化符号库的数据结构组织,提高符号库的可移植性与设计效率。本文首先阐述了面
向对象的基本概念,然后运用面向对象的思想对地图符号进行了制图分类,最后在地图
符号分类的基础上,设计了地图符号库面向对象设计模型与数据结构。
 
1 面向对象概念
  面向对象(Object-Oriented)方法也称面向目标方法,是为克服软件质量和软件生
产率低下而发展起来的一种程序设计方法。近年来,面向对象技术在程序设计、数据库
等方面的应用都取得了很大的进步。面向对象的方法假定无论多么复杂的事物都可以准
确地由一个对象表示。每个对象是一个包含了属性集(数据成员)和方法集(成员函数
)的实体。面向对象方法除属性与方法封装性(Encapsulation)和继承(Inheritance)
、传播(Propagation)两个语义工具外,还有以下四个基本概念:〔1〕〔2〕
  a 分类(Classification):具有相同属性和方法的对象的集合形成类(Class)。
每个对象都是该类的一个实例(Instance)。同类的对象共享相同的方法集与属性集,但
每个对象可能有不同的属性值。
  b 概括(Generation):将若干类所具有的相同属性与方法抽象出来,形成一种更一
般的超类(Hyper Class)即概括。借助于继承语义工具,超类可以派生出若干子类,子
类具有超类的部分属性集和方法集。
  c 联合(Aggregation):将若干同一类的对象(实例)组合起来,设立一个更高
水平的对象,以表示相同的属性和方法。联合的实质为同类对象的集合。
  d 聚集(Association):将若干不同类的对象(实例)组合起来,形成一个更高
水平的复合对象。不同类的对象是该复合对象的一个组成部分,彼此有独立的属性集与
方法集,复合对象从子对象的派生中获得信息。聚集的实质是不同类对象的集合。
 
2 地图符号制图分类
  按照面向对象的思想,根据地图符号的制图特性及其所表示的地物与地理现象的分
布特征,地图符号分为点状符号、线状符号、面状符号分为三个一级类。地图注记因为
与点状符号在诸多方面的相似性,故归于点状符号一级类。
2.1 点状符号
  点状符号表示空间上的零维地物和地理现象。点状符号图形比较规则、固定,不随
它在地图上的具体定位位置变化而改变。在地图上,点状符号都有确切的定位点和方向
性。根据点状符号的制图特性,点状符号可进一步分为以下二级分类:
  a 独立点状地物 包括点状地物符号、点状分布的地理现象、点状图面整饰符号。
 
  b 地图注记 包括点状符号、线状符号、面状符号的地图注记以及文字型地图整饰
。
2.2 线状符号
  线状符号表示空间上的一维地物和地理现象。线状符号的显著特点是有一有形或无
形的空间定位线。根据线状符号的分解特性和图形的对称特性,线状符号分以下六个二
级分类:
  a 一般直线型线状符号 符号由直线沿定位点连接生成。
  b 点状符号型线状符号 符号由点状符号沿定位线线性排列生成,定位线隐藏。
  c 圆弧型线状符号 符号由定位点的圆弧连接生成。
  d 样条曲线型线状符号 符号由定位点确定的样条曲线生成。
  以上四个二级分类是按照线状符号的生成方式分类的,它们概括了由空间定位点生
成线状符号的所有方式。
  e 平行线型线状符号 符号由平行于定位线的两条线状符号生成。平行线的线型可
以是a、b、c、d四种线。根据符号的定位方式,又可分为中线定位、左(上)线定位、
右(下)线定位三个子类。
  f 复合线状符号 由以上五类线状符号复合而成。在面向对象概念里面,表现为聚
集与派生关系。
2.3 面状符号
  面状符号表示空间上的二维地物和地理现象的分布。面状符号都有一个或多个有形
或无形的封闭的边界线。为区别地物的性质和地理现象空间分布的数量、质量,面状符
号常采用一定的充填方式。根据充填方式的不同,面状符号分布为以下三个级分类:
  a 颜色充填面状符号 以不同的颜色来区分面状地物的性质和地理现象的二维分布
的数量、质量。
  b 晕线充填面状符号 以多边形区域充填不同的线状符号来区分面状地物的性质和
地理现象的二维分布的数量、质量。根据晕线的充填方式,可进一步细分为基本单晕线
充填、基本双晕线充填、组合晕线充填三个子类。
  c 点状充填面状符号 以多边形区域充填不同的点状符号来区分面状地物的性质和
地理现象的二维分布的数量、质量。点状符号的充填有规则散列充填与不规则散列充填
之分。不规则散列充填实际上反映了地理现象空间分布第二级的不均匀性,制图上宜采
用区域细分,从而转化为规则散列充填方式。
  以上面状符号二级分类是按照充填方式进行分类的,按照面状符号的边界类型,面
状符号可以分为矩形、圆角矩形、椭圆、多边形四类。多边形可细分为直边多边形、样
条曲边多边形两个子类。
 
3 地图符号库的面向对象设计
  符号是由基本图元对象类实例聚集而成的复杂对象。根据上述地图符号的制图分类
以及符号设计的基本要求,可以将符号分解为以下15种基本对象类:点(CCellPoint)
、注记(CCellText)、直线(CCellLine)、点划线(CCellPoint_Line)、圆弧(CCellAr
c)、样条曲线(CCellBezier)、折线(CCellPoyline)、双线(CCellDbLine)、矩形(CCe
llRect)、圆角矩形(CCellRoundrect)、椭圆(CCellEllipse)、多边形(CCellPolygon)、
颜色充填(CCellColor-Fill)、晕线充填(CCellLile-Fill)、点状符号充填(CCellPoint
_Fill)。依据面向对象思想,可以将不同类中具有相同数据成员或操作方法的类抽象出
来,生成一个更高层次的超类(CCellElement)。点和注记可以抽象出点状符号超类(C
PointElement)。直线、点划线、圆弧线、样条曲线、折线、双线可抽象出线状符号超
类(CLineElement)。矩形、圆角矩形、椭圆、多边形可抽象出区域超类(CRegionElem
ent)。颜色充填、晕线充填、点状符号充填可抽象出充填超类(CFillElement)。基本图
 
附图 基本图元对象类层次图
元的类层次关系如附图所示。
  上述符号类层次体系中,符号的定位信息由以下三个坐标数据类定义:
  (1)点坐标类CCoordinate
Class CCoordinate
{
Public:
float x,y,z;∥设置三维坐标,以方便向三维扩展
Private
  CCoordinate(float x,float y,float z=0);∥z坐标缺省置为0,方便二维操作
  ~ CCoordinate();
}
  (2)坐标串类CCoordinateList
Class CCoordinateList:Public CObList∥继承MFC的CObList类,以减化操作
{
public:
  CCordinate Point;
Private:
  CCoordinateList(Coordinate point);
  ~ CCoordinateList ();
}
  (3)边界串类CEdgeList
Class CEdgeList:Public CCoordinteList
{
pubic:
  CCoordinateList pointList;
  CRegionElement edgeStyle;∥边界的线型
Private:
  CEdgeList(CCorrdinateList pointList,CRegionElement edgeStyle);
  ~ CEdgeList()
}
  限于篇幅,以下将不列出各类的具体属性集与方法集的定义,只分点、线、面三类
说明各类符号的外部引用参数接口。
3.1 点状符号设计
  Draw(CCoordinate point,float angle,float scale)
  其中:
  Point——符号在地图上的定位位置坐标;
  angle——符号的旋转角度;
  scale——符号的比例因子。
3.2 线状符号设计
  Draw(CCoordinateList PointList,float scale)
  其中:
  pointList——线状符号的定位线控制点坐标串;
  scale——符号的比例因子。
3.3 面状符号设计
  Draw(CEdege edgeList,CFillElement fillStyle,float angle,CCoordinate dist
ance)其中:
  edgeList——区域的外边界及内岛的边界坐标、边界线型;
  fillStyle——区域的充填模式;
  angle——区域充填的走向;
  distance——充填的二维间距。
 
4 结论
  a利用面向对象的思想,地图符号按制图特性可分为点、线、面3个一级类11个二级
类。
  b 地图符号按构造特性可归结为点(CCell Point)、注记(CCellText)、直线(CCe
llLine)、点划线(CCellPoint_Line)、圆弧(CCellArc)、样条曲线(CCellBezier)、折线
(CCecPolyline)、双线(CCellDblLine)、矩形(CCellRect)、圆角矩形(CCellRoundrect
)、椭圆(CCellEllipse)、 多边形(CCellPolygon)、颜色充填(CCellColor-Fill)、晕线
充填(CCellLine_Fill)、点状符号充填(CCellPoint_Fill)15种基本图元生成类。依据面
向对象思想,可以将不同类中具有相同数据成员或操作方法的类抽象出来,生成一个更
高层次的超类(CCellElement)。点和注记以抽象出点状符号超类(CPointElement)。直线
、点划线、圆弧线、样条曲线、折线、双线可抽象出线状符号超类(CLineElement)。矩
形、圆角矩形、椭圆、多边形可抽象出区域超类(CRegionElement)。颜色充填、晕线充
填、点状符号充填可抽象出充填超类(CFillElement)。
  c 为便于符号的程序表达和引用,设计了点坐标类CCoordinate、坐标串类CCoord
inateList、边界串类CEdgeList三个空间坐标数据结构类和点、线、面符号的统一外部
引用接口。
 
作者单位:(中国矿业大学北京校区)
参考文献
〔1〕李德仁,龚健雅,边馥苓等.地理信息系统导论.北京:测绘出版社,1993(9)
〔2〕龚健雅,夏宗国.矢量与栅格集成的三维数据模型.武汉测绘科技大学学报,22(1
)
〔3〕党安荣,丁华.煤矿地质测量图例的开发应用.测绘通报,1996(5)
〔4〕李伟,周勇前.专题制图符号库的设计与实现.武汉测绘科技大学学报,22(3)
〔5〕薛安,李天宏,杨海宏.线状地图符号制作系统的设计与实现.地图,1997(4)
〔6〕陈顺清.地形图符号库的设计.测绘学报,22(1)
 
--
那时候的世界比现在单纯很多。努力当得报偿,诺言当得实现,美当得保留。
想来是因为做梦的缘故。也许是很久之前,也许就是昨天。但是既然梦醒了,
一天也就象一万年那么长了,总之一切已经离我而去,很远很远。
 
※ 来源:·北大未名 BBS.PKU.EDU.CN·[FROM: 162.105.19.10]

posted on 2006-08-15 11:00  icehyp  阅读(520)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3