第三章 开发方法及系统实现
第三章 开发方法及系统实现整个系统使用MapObjects + C# 模式编程,使用MapObjects 显示和维护地理信息,使用C#完成地图绘制及地图数据处理、显示,并可以使用该程序条用外部程序进行数据的处理计算。
3.1
主要设计类属性、方法概述
由于本系统采用的面向对象方法,所以需要自定义一些类来实现相应的功能,本系统中主要的系统类有两类,一个类CMapCtrol用来控制MapObjects
[4]空间执行图像相关操作,一类CDataProcess目的主要用来进行数据的处理过程操作。同时,在整个工程中,需要使用到全局变量,这些全局变量定义在global类中,并在global类中自定义了属性,以便返回操作值给程序使用。
全局变量类global中,全局变量存储以及标定当前操作模式。
CMapControl类主要用来相应用户对地图控件操作后,在地图控件上产生的操作。它支持在地图上进行图像描绘、放大、缩小、平移等操作,添加点、管线对象等,对图像的一切操作,我们将在此类中实现。
CDbProcess 类为数据的操作进行设计,实现将数据存储至Datagrid等Windows Form控件中,在使用时,从相应的控件中调用相关数据进行处理。即:添加了DataGrid控件来存储程序在中间处理过程中所产生的数据。以保证数据的整体完整性。
Export类实现了数据的导入功能。方便用户存储数据,以便随后的程序使用。在该类中,我们注意到对导出的数据的编码不同,数据有可能无法被正确的识别,因此,在该类中用Code属性来规范导出的数据格式流。对于中文,采用默认的编码格式:Encoding.GetEncoding("gb2312"),使导出的数据能更好的被
Excel直接识别文中文。
系统运行过程中需要实时记录当前用户操作情况,以及当前用户所处的操作状态,因此我们建立了EditModel来标示当前的模式。由于该模式是开发者自己定义的类型,同时标示当前的不同的操作状态,所以使用了C#语言中比较新的类型——enum枚举类型。枚举是用户自定义的数据类型。在声明一个枚举时,要指定该枚举可以包含的一组可以接受的实例值。如果在代码的某个地方,要是图把一个不在可接受值范围内的值赋予枚举的一个实例,编译器就会报错。这个概念对于VB程序元来说是新的,而C++支持枚举,但C#的枚举要比C++ 的枚举强大的多。同时创建枚举类型可以节省大量的时间,减少许多的麻烦。
在整个程序执行过程中,程序是根据不同的模式程序执行不同的操作,该模式是整个程序的核心,不能被更改,如果更改为非法的类型,则程序执行时会报告错误。在设计此类时,自定义了用户可能出现的15种情况,在执行时除了返回错误外,程序将自动转换为UnKnown类型的EditModel而是程序自动停止相应用户的请求。global类的成员变量及属性见表 3-1 global类的成员属性:
表 3-1 global
类的成员属性
名称
|
数据类型
|
说明
|
EditModel
|
Model
|
当前的编辑模式(全局变量)
|
Message
|
string
|
显示该类的信息(包括错误信息)
|
Information
|
Info
|
程序信息
|