GIS地图工具
李泉 陈玉进 (南京跬步科技有限公司http://www.creable.cn )
在地理信息系统中具有许多不同种类的工具供用户使用,友好的GIS核心组件会提供一些工具缺省的实现。地图工具根据其用途的不同可以分为四大类:浏览工具、选择工具、编辑工具、鹰眼工具。GIS核心组件中的地图控件应该提供一个工具接口供用户程序实现,以达到工具扩展的目的。下面四个小节将分别讨论这几种工具。
13.1 浏览工具
在阅读这一章节之前,读者可以先回顾一下前面介绍的显示比例尺的概念。显示比例尺等于窗口中所显示的实际坐标宽度与屏幕宽度之比,显示比例尺越大,则能看到的地图就越多,视野越宽。显示比例尺越小,能看到的地图就越少,视野越窄。在地理信息系统中,浏览分为对地图要素图形的浏览和对地图要素属性的浏览。这里将浏览工具分为放大工具、缩小工具、平移工具、信息工具,其中前三个工具用于对地图要素图形的浏览,放大工具能够将地图窗口中的地图放大显示,能够将地图要素放大展现在用户面前,但视野会变小,即看到的范围比之前小,显示比例尺缩小。缩小工具则相反,将地图要素缩小显示并增加视野,显示比例尺放大。平移工具可以在不改变当前显示比例尺的情况下,移动窗口并显示地图的其他位置。信息工具可以让用户查看某个地图要素的属性信息,多数以对话框的形式显示该地图要素所有字段的值。
放大工具的实现主要是将显示比例尺缩小,GIS引擎自己就会将视图放大,反之则将视图缩小。前面的章节介绍过,地图要素读取之后,通过空间索引、MBR的过滤之后,需要绘制到窗口中,绘制之前需要进行一步地图实际坐标到窗口坐标的转换工作,这个转换过程使用的公式其中就有这个显示比例尺作为参数,只要将这个比例尺缩小,即可调用GIS引擎的方法来实现放大地图的功能。图1为地图坐标转屏幕坐标的流程。只要缩小步骤2中的显示比例尺或者等比例缩小步骤3中的显示范围,即可达到放大地图显示的目的,反之则是缩小工具的实现方式。修改步骤3中显示范围的中心点,即可达到平移地图的效果。
平移工具如果要想提供平滑拖动效果的话需要使用双缓冲技术来做,这里简单介绍一下双缓冲的原理,首先在内存中新建一个和窗口一模一样的画布,先将所有的东西画到这个画布上,然后一次性贴到窗口中,这样就可以有效的避免拖动效果中的闪烁。