摘要: 利用eSupermap进行开发 与ArcPAD不同,eSupermap是完全基于C++的GIS软件开发包,在开发上也就不存在像ArcPAD Application Builder这样的RAD定制工具,必须要使用微软公司发布的Embedded VisualC++...
利用eSupermap进行开发
与ArcPAD不同,eSupermap是完全基于C++的GIS软件开发包,在开发上也就不存在像ArcPAD Application Builder这样的RAD定制工具,必须要使用微软公司发布的Embedded VisualC++环境进行开发,这种方式的优点是非常灵活,用户可以从上至下地控制系统的结构和内容,但是缺点也显而易见,就是开发门槛过高。
eSuperMap的数据源为Supermap公司自行设计的PMF格式,PMF不依赖于任何数据库技术,文件紧凑,可移植性强,更适合在嵌入式设备上使用。一个PMF文件存放一个数据源、一个线型库、一个符号库和若干个地图。在eSuperMap中提供了一个专门用来转换地图数据的工具Toolkit,可以将PC上Supermap常用的SDB文件格式转换为PMF格式,此外还可以转换相关的图元信息,由此就可以保证PDA和PC上数据源的交互,转换完毕的数据可以使用eSupermap提供的PMFView进行査看和编辑。
在eSuperMap中,可以按逻辑关系把类库中的各个类分为几个大类,每个大类又可以根据具体的功能分为可以用编程语言(VC++/EVC++)描述的类。首先,把eSuperMap中的类分为以下七个大类。
(1)数据组织/数据访问相关类:负责从数据源中获取数据和组织数据,是eSupermap的核心类群。其中比较常用的类有: ①CSePMF,主要负责打开、读取、保存和删除数据源; ②CSeMaps,主要负责地图的创建、保存、修改、删除、添加、获取等操作; ③CSeDataSource,专门管理数据源,在其中又内置了专门处理数据源中各个数据集的CSeDataset; ④为了方便处理数据集中的各数据记录,又设置了专门处理各种记录的CSeRecordset。
(2)地图显示/操作相关类:负责处理地图的绘制和放大缩小等浏览操作,同样是eSupermap中不可缺少的类群。其中,最核心的类为CSeMapWnd,它是eSuperMap类库的外在体现,大多数与地图显示相关的操作基本上都要通过它来实现,在CSeMapWnd中有保存着所绘图参数和方法的CSeDrawParameters类;用于显示活动的、相对位置不固定的、临时使用的实体的CSeTrackingLayer类,负责大多数的地图显示操作的CSeLayer。
(3)基本地图实体相关类: 负责专门描述eSupermap中的各类矢量几何实体,所有的类都由CSeGeometry这个抽象类继承下来。
(4)GPS类:eSupermap提供的专门对GPS模块信息进行读取和处理的类群。
(5)地图投影相关类:负责进行经纬度坐标与投影坐标之间的转换,和在不同大地参照系下的经纬度坐标之间进行转换。
(6)其他应用类:专门保留错误代码类、空间分析类、内存分配类等开发时经常需要用到的类。
(7)各类之间有相应的逻辑关系图,通过它们可以明确各类之间的逻辑关系,为工程应用中类库的正确使用打下基础。