黄金玉,姜月华,苏晶文,张泰丽
(1. 南京地质调查中心,江苏 南京 210016)
空间数据库投影是地理信息研究的基础操作之一。然而,在使用GIS软件进行空间数据投影时,或多或少都存在操作上的困难,尤其是重复相同操作,无法实现一次操作、批量投影的功能。空间数据库投影系统(CSData)的开发目标就是简化这些软件繁琐的操作步骤,并合理补充原有GIS软件欠缺的相关功能。为此,空间数据库投影系统(CSData)设计出操作数据和投影成果图件双可视化界面,实现了空间数据与投影图件的双重管理功能。整个投影过程只需用户选择操作目标,系统自动获取各类参数、读取空间数据以及存储投影成果图件。
系统基于MapGIS二次开发实现[1]。MapGIS二次开发库主要提供API函数、MFC类库、ActiveX 控件3种方式,CSData系统选择基于MFC类库开发,是由于MapGIS类库提供了多个可重用基类,调用内部开发函数更灵活。原有的GIS空间数据投影过程是很复杂的人工交互操作,需要将人工设置转换为系统自动获取,补足相关功能,使投影更完善、灵活。
投影系统开发实现了3大功能:数据库管理、数据库投影以及GIS图件管理。整体框架如图1。
原始的GIS软件没有数据库管理功能,而用户可能需要对原始数据进行分类投影。为此,投影系统设计了数据库查询检索功能,提供需查询的数据项,进行查询条件语句编写,可实现各类条件查询选项,如大于、小于、等于、并且、或者、不等于等。
用户也可以根据需要,通过双击相应编辑数据框对投影数据进行编辑修改。在实现这个功能时,程序上采用了特殊处理,在列表中使用编辑控件,修改编辑控件隐藏,在用户双击激活修改功能时,编辑控件获得所处行列号,置于修改数据所处框内,完成编辑修改工作。
用户选定需要投影的数据后, 即可以进行投影。系统设计了自动读取投影参数的功能,无需人工输入操作,大大简化了原始GIS软件的步骤。根据投影需求,系统将数据单位分为度、度分秒和公里网,每一个数据单位都有对应的操作菜单,数据库中各项数据都会作为属性自动赋予图元,投影结果文件会即时显示在窗口中。
系统设计了启动界面,用户选择GIS文件后,GIS图件即显示在主窗口中。GIS图件管理具有浏览、编辑修改、鹰眼等功能,对GIS工程内部文件也具有文件管理功能。
投影系统界面主要包括启动界面、主功能菜单、快捷键、树型目录菜单、数据库列表窗口、GIS图件显示窗口、文件管理窗口和状态栏,如图2。
1)启动界面。用户选择需要投影的底图,要求底图具有标准的投影参数,用户确定底图装入之后,系统启动主操作窗口。
2)主功能菜单。包括点文件操作、文件属性操作、系统参数设置、数据库投影操作等,用户点击相应功能菜单完成各种操作。
3)树型目录菜单。显示数据库中各类表的名称,方便用户点击完成数据库链接工作。
4)数据库列表窗口。此窗户是结合树型菜单和主功能菜单完成数据库的显示功能。当用户选择或者输入需投影数据表名称后,此窗口自动链接相应数据表并将全部数据显示在列表窗口中。该窗户也可用于修改数据和显示检索数据。
5)GIS图件显示窗口。当用户在启动界面中选择了投影底图后,所选工程文件就会显示在此窗口中。基本的GIS图形操作如编辑、查询、放大、缩小、复位等都可以实现,数据库投影结果也会显示在此工作区中。
6)文件管理窗口。打开的工程底图中文件项目情况都在此窗户显示,文件名称、存储路径、文件编辑状态等都详细说明,用户可以改变工程文件的状态。
7)状态栏。状态栏中可显示两组坐标单位,一组是投影参数单位值,一组是经纬度值,随着鼠标的移动可以灵活显示鼠标所在点位的两组值。
CSData系统将原GIS软件需要人工一步步输入的过程优化为系统自动读取,则需要对其投影原理和相关数据函数进行剖析。投影参数结构如下[2]:
typedef struct MAP_PARA struct
{
char type;//空间数据水平坐标系类型
char unit;//空间数据水平坐标单位,
double mapw;//空间数据图幅理论宽,type坐标系,unit单位
double maph;//空间数据图幅理论高,type坐标系,unit单位
char projType;//空间数据投影类型
char earthParam; //空间数据参考椭球体参数类型
double jd0; //空间数据数据左下角经度, 数据单位统一采用UNIT_DMS格式
double wd0; //空间数据数据左下角纬度, 数据单位统一采用UNIT_DMS格式
double djd;//空间数据数据经度跨度, 数据单位统一采用UNIT_DMS格式
double dwd; //空间数据数据纬度跨度, 数据单位统一采用UNIT_DMS格式
double rate;//空间数据数据水平比例尺倒数,无单位
double lon;//空间数据中央经线经度, 数据单位统一采用UNIT_DMS格式
double lon1; //空间数据双经线1经度, 数据单位统一采用UNIT_DMS格式
double lon2; //空间数据双经线2 经度, 数据单位统一采用UNIT_DMS格式
double lat;//空间数据投影原点纬度, 数据单位统一采用UNIT_DMS格式
double lat1; //空间数据双纬线1纬度, 数据单位统一采用UNIT_DMS格式
double lat2;//空间数据双纬线2 纬度, 数据单位统一采用UNIT_DMS格式
double dx;//空间数据图纸坐标原点在投影坐标系中的X偏移值 ,type坐标系,unit单位
double dy;//空间数据图纸坐标原点在投影坐标系中的Y偏移值,type坐标系,unit单位.
char levelType;//空间数据大地水准面类型
double h;//空间数据大地水准面与参考椭球面之间的高差, 单位为m
double H;//空间数据投影平面与大地水准面的高差, 单位为m
double vRate;//空间数据垂向比例尺倒数
char vUnit;//空间数据垂向数据单位
char TICtype;//TIC点理论坐标系类型
char TICunit;//TIC点理论坐标单位
char infoUnit;//图形显示参数单位
double infoRatex;//图形显示参数单位值相对于当前数据单位值的x比例系数, 初始值必须赋0或1
double infoRatey;//图形显示参数单位值相对于当前数据单位值的y比例系数, 初始值必须赋0或1
}MAP_PARA;
以上都是投影参数,如一一人工输入会浪费大量时间。CSData系统设计了初始用户界面用于选择GIS工程文件,装入投影底图的工程文件后,工程自带的标准投影参数就会被系统获取,并将各数值后台赋予上面投影结构中的对应参数,无需人工输入。工程文件装入使用到的接口函数是_PRJLoadAProject(Char *name,AREA_HINST aInst, Short fastOpen), 其 中 Char* name表示装入的GIS工程对象;AREA_HINST aInst表示工作区实例,由_InitWorkArea函数创建;Short fastOpen表示参数默认为0。
通过对函数参数的分析,在启动界面由用户自行选择需要的GIS图件,系统读取图件所在路径进行显示。通过接口函数返回GIS工程对象后,通过循环和大量内部函数获取参数值,为投影作准备。
现有的GIS软件在设置完成投影参数后,只能完成一个空间数据投影。CSData将获取的投影参数作为系统内部参数保存,而读取数据是根据用户选取的数据名称链接到数据表获取坐标数据,完成的空间投影结果文件也会自动根据数据表名称保存。用户选择批量投影操作,进入批量投影选择界面,系统将自动读取的数据库全部表名都显示在选择列表中,用户选择需要投影的全部数据表,系统会一次将所有数据表全部投影,所有投影结果文件都自动保存在对应的文件目录下,投影结束后提示用户查看。
CSData的核心就是最大程度地减少人工干预。CSData系统的整个投影操作只需要人工交互三步[5-7]:首先装入需要投影的GIS底图,而后选择需要投影的数据对象,最后启动投影程序,系统就会完成所有投影参数获取和设置以及结果文件保存。CSData系统将专业性很强的操作都设计为自动完成,真正实现了“傻瓜式”投影系统。系统实现的批量投影功能,也同样只需要人工干预三步,区别就是选择的投影数据对象通过多选模式提供给用户勾选。由于参加投影计算的参数都是通过内部函数直接获取,系统通过复杂程序完成判定和赋值,可以充分避免人工错误操作产生的误差和投影失败的情况。
CSData系统已被应用到多个项目中,如地下水污染详查项目、地质灾害调查项目、长三角综合研究项目、淮河流域调查项目等。图3为地质灾害详查项目中,将空间数据通过CSData完成的投影结果。
[1]王敬恩,康义凯,景俊红.MapGIS在地理信息数据处理中的应用[J].工程技术,2007(28):253-255
[2]中国地质大学(武汉)信息工程学院.MapGIS地理信息系统开发手册[Z].武汉:华地图形数据公司,1998
[3]中地软件丛书编委会.MapGIS组件开发手册[Z].武汉:中地信息工程有限公司,2002
[4]吴信才.地理信息系统原理、方法及应用[M].武汉:中国地质大学出版社,1998
[5]曹瑜,胡光道.地理信息系统在国内外应用现状[J].计算机与现代化,1999,61(3):1-4
[6]施伯乐,顾宁,刘国华.数据库处理基础、设计与实现[M].北京:电子工业出版社,2001
[7]Lernechker R C,Archer T. VC++6 宝典[M]. 北京:电子工业出版社,2001
[8]舒飞跃, 闾国年, 陆婧, 等. 基于知识对象的土地管理空间数据库模型设计与实现[J]. 地球信息科学学报,2010, 12(3):348-357
[9]杨忠德, 曹新平. 基于时空关联的警用信息系统的设计与应用[J]. 地球信息科学学报, 2011, 13(4): 480-485