以由多个显示图层组成;特殊的,它还可以有一个动态图层以适应GPS跟踪显示的需求。 3) 地图编辑工具类
我们在使用地图的过程中,尤其是在地图录入中需要输入和编辑点、线、面等多种几何图形,在地图显示中需要有鼠标缩放、漫游等功能。因此需要系统提供一些编辑工具。地图编辑工具可以集成在统一环境下;也可以是分离的工具对象,功能彼此独立。在这里我们将不同功能做成独立的对象,是为了更好地进行灵活的重用。因为在一些应用中,需要其中的部分图形编辑功能,而不是全部功能。更何况我们可以在应用工具类中,根据需要利用这些地图编辑工具再搭建一个完全的集成地图编辑环境。 地图编辑工具类对象根据功能的不同,可以分为一下几种: 2 编辑工具管理对象GxTools 2 鼠标工具对象
n 范围缩小工具GtZoomOut n 范围扩大工具GtZoomIn n 拾取工具GtPick n 漫游工具GtPalm 2 几何对象输入
n 点输入工具GtInputPoint n 简单线输入工具GtInputLine n 复杂线输入工具 GtInputPolyLine n 多边形输入工具GtInputPolygon n 椭圆形输入工具GtInputEllipse n 矩形输入工具GtInputRect 2 几何对象编辑
n 点编辑工具GtEditPoint n 简单线编辑工具GtEditLine n 复杂线编辑工具GtEditPolyLine
n 多边形编辑工具GtEditPolygon n 椭圆形编辑工具GtEditEllipse n 矩形编辑工具GtEditRect 4) 地图空间分析工具类
在GIS中有一类很大的应用是对地理因素做空间分析,用于辅助决策。我们可以提炼出一些常用的地图空间分析应用,做成工具类供用户使用。例如地址匹配、拓扑分析等等。具体可以分为: 2 地址匹配GaAddressMatching
2 网络分析(连通性,最短路径)GaConnectivity、GaShortestPath 2 缓冲区分析GaBuffer 2 地图叠加分析GaOverlay 2 多边形生成GaPolyGen
2 地图一致性检查(重合,相交,重叠)GaConsistCheck 5) 实用功能对象类
有时当用户使用系统发生错误时,希望系统能够提供一种手段用于查询错误信息,这也是一个系统具有友好的用户界面的要求。因此我们应该在系统设计中,增加一个错误处理机制。另外,对于一些常用但在用户应用中不易实现的数组、集合等类型的对象模板,也应该在系统中得到支持。具体可分为: 2 错误处理对象GxError 2 集合对象GxSet 2 数组对象GxArray 2 枚举对象GxEnumeration 2 被选集对象GxSelection 2 功能函数对象GxUtility 6) 应用工具类
在GIS服务构件基础上,可以开发各种基于浏览器的可视化应用构件。基本的可以包括:
2 可视化连接(连接信息的编辑、访问及该连接所管理的各种地图数据访问对象的可视化界面) 2 可视化数据管理(各数据访问对象属性的可视化编辑与访问) 1. 地图属性可视化 2. 图层属性可视化 3. 显示配置属性可视化 4. 地图配置属性可视化 5. 参照系属性可视化
2 地图编辑(图层内实体几何信息和属性信息的编辑,这是搭建一个地图编辑的集成环境,将地图编辑对象类进行组合使用) 2 图例编辑 2 图例库浏览 2 地图整饰与打印
2 不同格式地图导入导出(本系统数据与其它系统不同格式数据的转换) 2 属性数据导
此外,具体应用领域的用户可以根据其领域需求,度身定做自己的GIS应用构件。 四、改进系统性能的技术要点
前面已经提到WebGIS面临的主要问题是如何提高系统性能,主要表现在大数据量的网络传输效率。人们在这个问题上做了许多研究,并提出了许多解决方案。例如对于大数据地图的显示,我们可以采取分层传输分层显示数据的方法,根据人们视觉特点,先显示粗粒度的轮廓图,再逐层显示具体细节。而在具体应用到的技术上,空间索引和缓存技术尤其值得一提。 1.空间索引
空间数据库中空间实体的表达形式复杂,数据量大,各种空间操作不仅计算量巨大,而且多具有面向邻域的特点。针对空间实体的这些特点,我们可以在各种空间操作之前对操作地理实体作初步的筛选,减少参加空间操作的空间实体数量,从而缩短计算时间,提高整个系统的性能。
在空间数据库设计中,为了提高数据存取和管理的效率,一般都要为空间数据库建立索引,不同的空间数据索引结构和索引管理技术,直接影响系统的性能。空间数据的复杂性决定了其索引结构的复杂性。在WebGIS中,我们采用了两种简单而又实用的空间索引技术:层次网格空间索引和三叉树网格空间索引。这两个空间索引技术除了应用于空间数据管理和访问之外,还融会到各种空间查询、空间分析算法和地图显示算法中去。不仅可以提高空间数据的存取访问效率,同时也可以提高空间查询和空间分析的
效率以及地图在客户端的显示速度。 2.缓存技术
缓存技术是改进系统性能的重要技术。在基于ORDB的Web GIS系统中,影响数据存取效率的环节主要有两个:一是数据库的存取效率,特别是采用ORDB存储空间数据的效率;另一个则是网络的传输效率。我们可以采取不同的策略来解决这两种问题。 (1)一级缓存:数据库缓存。
ORDB存取空间数据的主要效率瓶颈是数据库的存取效率,为了解决这个问题,我们可以在服务器上利用内存和磁盘资源建立全局性的数据库缓存,将经常使用的数据库数据存储在内存和磁盘中,加速数据库的访问效率,提高服务器的数据库访问性能。 (2)二级和三级缓存:网络缓存
当网络的带宽很窄的时候,本地和远程数据访问就存在着数据存取效率的巨大差异。特别是大型广域网,如Internet,存在着严重的带宽瓶颈,普通用户的可用带宽通常只有几K或几十K,这大大限制了空间数据在分布式环境中的存取和传输。我们可以通过发掘客户端和网络资源,用客户端硬件资源为代价,换取WebGIS的性能,从而在一定程度上解决分布式计算环境中的存取效率问题。网络共享缓存由于使用共享资源,可以实现海量缓存,大大加快了缓存命中率,提高访问效率,也节省了客户工作站的缓存空间,可以大大缓解本机磁盘数据存取与网络数据存取、高速局域网与带宽紧张的广域主干网之间的速度矛盾。
第三章 系统设计与实现
在当前国内的GIS用户中,应用系统主要依赖于Windows平台;而COM/DCOM机制是微软公司的产品,与微软的系列开发软件衔接好,运行较为稳定。针对这种情况,我们采用微软的COM/DCOM机制来实现WebGIS构件。对于每个构件对象,我们必须明确它的功能,定义它对外的接口(包括属性和方法)。在这一章中,我将主要就地图数据访问对象类及地图可视化对象类的设计和实现作一个较为详细的阐述。各部分的具体设计请参见【16】。 一、地图数据访问对象类
(一) GxConnection 连接对象
连接对象是用户访问数据源的一个途径。它应该具有连接管理和数据管理两大功能,具体又可细分为: 2 建立或断开与数据源的连接;
2 管理地图对象(包括增删改查地图数据); 2 管理图层对象(包括增删改查图层数据); 2 管理参照系对象(包括增删改查参照系数据); 2 管理显示配置对象(包括增删改查显示配置数据);
2 管理图例库对象(包括增删改查图例库数据); 2 事务支持机制; 2 SQL查询
因此可以定义连接对象的接口: 定义 说明 属性
String HostName
要连接的服务器所在的主机名,可以是IP地址,或是主机域名地址。该属性在连接状态下只读。
String DataSourceName
要连接的服务器所提供的数据源的名称。在连接状态下只读。
String UserName
用户名。在连接状态下只读。
String Password
用户口令。在连接状态下只读。
Boolean AutoCommit 是否自动提交修改的数据。
Boolean IsConnected
只读属性。是否处于连接状态。只有在处于连接状态时,与连接相关的方法才能调用。 方法 连接方法
Boolean Connect ()
通过主机名、数据源名称、用户名和用户口令等属性值建立与服务器的连接
Disconnect () 断开连接。 事务处理
Boolean Commit ()
向服务器的提交对图层数据的修改,用于维护图层与图层之间的一致性。
Boolean RollBack ()