1、测绘信息网 http:/测绘信息网测绘专业门户网站.WINDOWS95 下图形编辑支撑功能的实现吴升摘要 图形编辑工具在地图数据库系统(MDBS)、地理信息系统(GIS)和地理信息的自动综合系统(GIGS)的系统构成上一直是个非常重要的部分,文中着重讨论在 WINDOWS95 下坐标变换、窗口缩放、图形漫游等图形编辑的支撑功能的实现。http:/ 测绘信息网关键词 图形编辑; 坐标变换; 视口中国图书资料分类号 TP311The Actualization of the Support Function of Graphic Editing Based on WINDOWS95Wu Sheng
2、(Zhengzhou Institute of Surveying and Mapping, Zhengzhou, 450052)Abstract Graphic editing is an important part in Map Database System, Geographic Information System and Automated Generalization System. In this paper, some methods to actualize the support function of graphics editing is discussed.Key
3、 words Graphic editing; Coordinate transformation; Viewport在地图数据库系统(MDBS)、地理信息系统(GIS)和地理信息的自动综合系统(GIGS)中,图形编辑工具的功能主要有:1) 修正数字化过程中的错误;2) 为 MDBS 和 GIS 提供数据录入与更新的工具;3) 为 GIGS 提供数据预处理与后处理的编辑工具,为不能实现自动综合的要素提供人机交互手段。http:/ 测绘信息网图形编辑工具要求提供坐标变换、窗口缩放以及图形漫游等辅助支撑功能。在以往的图形编辑工具中,图形缩放、漫游是把逻辑坐标不断加上平移参数和乘以缩放参数来实现的,
4、其编程繁琐,运行费时。本文将介绍在 WINDOWS95 环境下,图形编辑支撑功能的新的实现方法。1 坐标变换 http:/ 测绘信息网坐标是任何图形系统的基本组成部分,在 WINDOWS95 环境下,我们能够很容易的在所选的坐标系中工作。图形编辑主要涉及到三种坐标空间,即世界坐标、逻辑坐标和设备坐标。其中后二种是 WINDOWS95 中GDI(图形设备接口)所支持的坐标空间,它的特点是与设备无关。即在逻辑空间中绘出的正方形和圆,在任何设备(屏幕、打印机、绘图仪)上仍然是正方形和圆,为了使下文的各种坐标变换更容易理解,先介绍几个基测绘信息网 http:/测绘信息网测绘专业门户网站.本概念。世界坐
5、标 它通常为大地坐标,OOEDIT 的数据来源以及工作区中的数据原始坐标。http:/ 测绘信息网逻辑坐标 它对应于选定的工作窗口,其单位可任意选择。逻辑坐标用于 WINDWOS 95 的 GDI 绘图(MFC 的 CDC 的所有成员函数都以逻辑坐标为参数,但和区域有关的例外)。设备坐标 它对应于一个屏幕(或其它设备)的一个观察区视口(Viewport)。GDI 通过移动视口原点可以改变那些工作区中显示的图形。但视口原点的改变并不影响用户接收到 WINDOWS95 消息(鼠标消息、滚动消息等)时的坐标,伴随这些消息的点仍旧以相对于观察区左上角的坐标来确定。http:/ 测绘信息网1.1 世界坐
6、标空间到逻辑坐标空间的变换选定了工作区后,根据其世界坐标范围及比例尺进行平移,旋转和缩放等平面二维变换,即可映射到逻辑坐标空间,用矩阵表示为:(1)其中, 表示逻辑坐标,(x,y)表示世界坐标。33 矩阵表示旋转、缩放和平移参数。http:/ 测绘信息网1.2 GDI 设备变换在 WINDOWS 95 中,为了执行输出,必须把逻辑坐标转换成设备坐标。GDI 设备变换完成了逻辑空间与设备空间之间的相互转换。设备变换是基于一对矩形,即逻辑空间中的工作区窗口和设备空间中的视口,它们之间的相对位置(原点)和大小(范围)决定了逻辑空间如何映射到设备空间。它们之间的坐标关系如(2)式:(2)其中,(xWO
7、,yWO)为工作区窗口原点,(xVO,yVO)为视口原点,(xVE,yVE)为视口范围,(xWE,yWE)为窗口范围,而 xVE/xWE 和 yVE/yWE 为视口范围相对于窗口范围的比率。图 1 是逻辑空间中的一个图形(A)映射到设备空间中(a)的示意图。http:/ 测绘信息网测绘信息网 http:/测绘信息网测绘专业门户网站.图 1 逻辑空间映射到设备空间1.3 绘图坐标系 http:/ 测绘信息网由图 1 可见,图形 A 由逻辑坐标映射到设备坐标系中的 a 时,其图形上下倒置。这是因为 GDI 的绘图坐标系采用缺省的 MM TEXT 映像模式,它的坐标系的原点在视口的左上角,其 Y 的
8、增加方向向下,显然它不适合于图形显示和编辑。因此,在图形编辑中有必要建立自己的绘图坐标系,其主要特点为:1) 其坐标系原点是视口原点,它在设备坐标系中的位置是不断变化的。图形的开窗缩放、和漫游要求图形在视口中的位置发生改变,这时,绘图坐标系的原点(视口原点)将随之改变。也就是说,随着图形的开窗缩放和漫游,OOEDIT 将不断的建立新的绘图坐标系。这样就可以通过改变绘图坐标系的原点来调整图形在视口中的位置。绘图坐标原点的改变,在程序中通过调用 CDC 的 SetViewport()函数实现。此函数设置绘图坐标系的原点在设备坐标系中的坐标。2) 采用 MMISOTROPIC 映像模式取代 MMTE
9、XT 模式。这种模式可以把一个逻辑单位映像成任意的物理单位,并且 X 方向和 Y 方向总是等比例输出(X 轴和 Y 轴上的一个逻辑单位在视口上总是相等),这种模式比较适合于窗口的多级缩放。在程序中通过 CDC 的 SetMapMode(MMISOTROPIC)函数实现。并通过 CDC 的SetWindowExt(xWE,-yWE)和 CDC:SetViewportExt(xVE,yVE)函数设置视口的缩放比,同时把 Y 轴增加的方向设置为向上。2 多级视口缩放 http:/ 测绘信息网由于屏幕的尺寸和分辨率所限,大多数的图形编辑都必须在放大的情况下才能进行,因此,图形编辑工具必须具有多级缩放功
10、能。多级缩放的实质就是多次进行开窗选取并裁剪图形的过程,它主要有以下两种形式:1) 以鼠标在视口中的击中点为中心缩放,这种缩放的比率一般是固定的。2) 在视口内用一个既可以缩放又可以平移的矩形光标开矩形窗缩放。以第二种形式为例,如前所述,在 WINDOWS95 环境下,通过移动视口原点来调整图形在视口的位置,并设置图形的缩放比率,然后重画窗口并进行裁剪即可完成图形的缩放,而其它的工作是由 WINDOWS95 的 GDI 自动完成。如图 2 所示,在视口中开矩形窗 r 后,窗口 r 的内容被放大为 R,并移至视口中心C。这时绘图坐标系的原点移至 O ,O 和 O 的设备坐标关系可按如下原理推算:
11、根据开窗的窗口 r 的中心 c 在原绘图坐标系中的坐标(xVc,yVc)与放大后的窗口中心 C 在新的绘图坐标系的坐标(x VC,y VC)之间要满足如下关系式:测绘信息网 http:/测绘信息网测绘专业门户网站.其中,xVRE/xVrE 为开窗图形在 x 轴方向上的缩放因子,yVRE/yVrE 为窗图形在 y 轴方向上的缩放因子。图 2 视口缩放由和联立得 http:/ 测绘信息网(3)其中, 为新视口原点,(xVO,yVO)为旧视口原点,(xVE,yVE)为视口范围,(xMouseDown,yMousedown)和(xMouseUp,yMouseUp)为开窗矩形的左上角和右下角坐标。以上坐
12、标均指在设备坐标系下的坐标。由式(3)可知,只要已知旧的视口原点坐标,就能算出新的视口原点坐标,通过移动旧的视口原点至新的视口原点,就能实现窗口的多级缩放。3 图形漫游这是指在 OOEDIT 中用手形图标对视口内的图形进行任意方向的拖放显示功能。如图 3 所示,图形漫游相当于把图中的拖放矩形中的图形拖至视口,其视口原点测绘信息网 http:/测绘信息网测绘专业门户网站.在缩放前后的设备坐标变换关系如(4)式: http:/ 测绘信息网(4)其中,(xMouseDown,yMouseDown)为鼠标拖动图形时的击中点的坐标,(xMouseUp,yMouseUp)为拖放图形后鼠标放开的坐标。图 3
13、 图形漫游在 WINDOWS95 环境中,可以采取位图重放技术,即在显示当前视口图形的同时,把它也在内存视图上画一份,当进行拖放漫游的时候,对仍在视口中的部分进行位图重放即可,如图 3 中的图形 A。对于从视口外拖进来的图形,如图中的 B,则到数据库中检索到其图形数据,画至内存位图后,在视口的相应位置显示即可。这样用户看到的图形漫游好象是对图象(Image)的操作,而不是图形(Graphics)的重画。其主要程序代码如下:CDC *p MemDC; http:/ 测绘信息网CBitmap *pBitmap;CClientDC aClientDC(this) /获取当前窗口客户区的设备上下文 a
14、ClientDC;PMemDC=CreateCompatibleDC(/创建与 aClientDC 兼容的内存设备上下文 pMemDC;pBitmapCreateCompatibleBitmap(pMemDC); /创建与 pMemDC兼容的位图;pMemDCSelectObject(pBitmap); /将位图选进内存设备上下文; /设置映射模式,视口原点和窗口视口缩放比;pMemDCDrawViewtoMem(currentView); /把当前比例的视口图形画在位图上;PDCBitbit(); /在视口重放位图。测绘信息网 http:/测绘信息网测绘专业门户网站.作者简介:吴升 26 岁、硕士,解放军测绘学院讲师,中国测绘学会地图学与 GIS 专业委员会秘书。主要从事地图学与 GIS 的教学和研究,“125 万地图数据库数据支持下的自动编图系统”获军队科技进步三等奖。地址: 郑州陇海中路 66 号; 邮编: 450052作者单位:吴升 解放军测绘学院 http:/ 测绘信息网参考文献1 David J.Druglinsti. VISUAL C+技术内幂北京:清华大学出版社,1996 http:/ 测绘信息网2 应武生地图图形交互编辑的实现方法测绘科技,1992(3)3 张保钢图形编辑软件的优化设计武汉测绘科技大学学报,1995(6)