基于Delphi的影像数据库系统研究段功豪中国地质大学(武汉)地球物理与空间信息学院摘要:为有效地组织和管理影像及其属性,本文提出了基于Delphi数据库平台影像存储和基本管理的解决方案。基于C/S结构模型设计了本地以及客户端通过TCP/IP协议访问数据库的模式,利用快速应用开发工具对数据进行建库实验研究,通过一定的管理机制来控制不同存储格式的数据,取得了良好的效果。1引言长期以来,遥感影像数据在计算机中都是以文件形式存放,由操作系统管理,在数据库中仅存储影像数据的路径信息。尽管这样可以大大地减小数据库的大小,但是由于文件存在磁盘上,我们除了维护数据库外,还要维护文件的路径信息,这对于管理数据库非常不方便,而且数据完整性不能得到保证。所以,对遥感影像数据进行高效、快捷地存储与管理,已经成为一种迫切需求。另外,网络技术的飞速发展使信息资源的共享在技术上成为可能,利用网络实现数据和信息的获取、发布和共享已经成人们的共识,远程访问目标数据库,实现与在本地同样的管理功能也同样具有现实意义。目前有多种开发工具提供了对图像等大字段进行操作管理的功能,针对目前应用比较广泛的关系数据库ORCLE,通过自身的接口配置可以与大部分开发系统实现链接,尽管不同的开发平台下可能编程语言的格式不会类似,但调用数据库的基本的思想原理不尽相同。本文采用Delphi7.0进行开发,将EXCEL源文件导入ORCLE表空间,通过Delphi其自带组件功能的调用,实现了本地以及客户端界面对文件信息和图像信息的浏览以及查找功能,阐述了快速读取查询影像属性数据字段的原理和方法,并且给出了程序上实现的关键步骤和实现代码。2数据预处理2.1数据组织结构设计以较普遍的光谱数据为例,本文采用如下Spectrum表结构存放数据,包括地物ID、地物名称、传感器名称、波段总数、成像时间、各个波段的光谱数据等五个字段,,其中地物ID是关键字段。以上光谱数据内容均采用Excel统一记录。Spectrum(光谱)在本实例中,除利用Excel作为源数据入库内,带有分隔符的.txt文件也可同样完成相同的工作,整理好数据后,下一步需在Oracle内部创建带有以上属性的表。利用PLSQLDeveloper建立表空间,各字段属性设置如下:地物IDID地物名称Name传感器名称Sensor_Name成像时间Time波段总数Bands光谱数据Image其中,将ID设为主键。2.2入库处理入库前,要确保所有已录入Excel中的数据正确无误,因数据类型各异,格式检查完毕后,才能保证了数据录入的完整性和可靠性。利用Oracle第三方工具ToadforOracle10.5可以使导入数据库的工作安全有效。操作如下(1)选定数据导入的对象表空间;(2)将Excel表添加到对应表;(3)根据实际的需求更改表内数据内容以及进一步数据整理。结果显示如下,入库完毕:3系统设计根据用户的需求,将功能设计分为以下几个模块界面:文件查看、图像查看、数据库检索以及远程客户端系统。(1)图像查询模块主要功能是通过浏览本地文件,以便于快速定位查看所需要的图像,并按照一定的比例在浏览界面中对图像进行缩小,同时也可查看原图。(2)数据库模块Delphi可以访问多种数据库管理系统的数据库,凭借窗体和报表,BDE(BorlandDatabaseEngine)可以访问诸如dBASE、本地InterBase服务器的数据库,也可以访问远程数据库服务器上的数据库(如Oracle、SyBase等),本文采用经ODBC连接Delphi管理Oracle数据库。该窗体各组件中,隐藏了两个数据库连接最重要的组件:DataSource和Table,其中Table通过数据库名属性DatabaseName将数据库表格名TableName两个属性与数据库中的数据表格发生联系。DataSource通过Dataset属性与数据表取的联系,通过Combobox选项卡,选取数据库,弹出Login对话框,输入指定的用户及密码,将表内容在DBgrid中显示,该页面调用了Tsession方法,在建立页面的函数中代码显示如下:procedureTForm3.FormCreate(Sender:TObject);beginwithcombobox1dobegincombobox1.Items.Clear;session.GetAliasNames(items);text:=items[0];end;Tsession组件中的GetAliasNames方法获取数据库别名的列表,然后在Combobox中列出。若用户名密码输入正确,则显示如下:其中最主要的查询功能,按钮代码为:procedureTForm3.Button1Click(Sender:TObject);beginwithtable1dobeginclose;indexname:='str2';iffindkey([edit1.Text])thenlabel4.Caption:='查找成功!';end;调用了Table组件的FindKey方法在数据集中查询记录,前提是DataSet保持打开状态,不然会出现”DataSetisclosed”的错误。(3)客户端系统Delphi7中支持多层分布式数据库开发,利用DataSnap的支持,有三种客户端数据获取方式,分别是DCOM、TCP/IP和HTTP。在逻辑上可划分为:客户机应用程序、应用服务器和远程数据服务器。它们可以分布在网络中不同的计算机中,也可以配置在同一台计算机中。从本质上来说,数据库服务器都是一样的。Delphi7中依靠一个功能强大的远程数据模块,可以顺利和3种访问方式接口,不同的只是客户端实现的方式不同。本系统采用较为广泛的TCP/IP协议来实现多层分布式数据库的功能实现。在应用服务器端运行Socket服务器代理ScktSrvr。窗体设置如下组件:TDataSource、TClientDataSet、TsocketConnection和TDBGrid,更改组件属性,SocketConnection的Address属性中,输入应用服务器的地址,也就是想连接的数据库服务器对应的IP地址,再设置ServerName,选择好我们建立的Socket连接,这样数据库连接就配置好,把Connected属性设为True,应用服务器就启动并将数据显示在客户TDBGrid组件上,经过编译、链接并执行程序。通过指针选择需要改变字段的行,可以修改对应的字段属性,完成存储的过程。4结束语本文是在Delphi7所提供的环境下,对Oracle数据库进行系统管理的一个简单实现过程,还存在许多不足和进一步完善的地方,主要有:1)由于本次系统处理的数据量较小,在处理大批量数据时,Delphi平台可能会因其存在着不稳定性,造成数据库调用效率下降。2)目前只支持四种图像格式的显示,下一步还需要在图像兼容性上面进一步改进。3)客户端模式必须依赖于Socket服务器代理,这会在没有装Delphi的客户端口上造成不便。这些都是下一步研究工作的方向参考文献[1]张畅,刘强,戴昌礼,等.大规模影像数据库的设计与实现[J].测绘科学.2010(3):208-209.[2]王爱玲,李京,刘素红,等.多尺度遥感影像数据库管理的设计与实现[J].计算机工程与应用.2007(3):227-229.[3]郑浩,张蔚,刘继东.基于SQLServer数据库的遥感影像数据存储的策略与方法[J].测绘技术装备.2006(1):22-24.[4]李宗华,彭明军.基于关系数据库技术的遥感影像数据建库研究[J].武汉大学学报(信息科学版).2005(2):166-169.[5]王连备,吴云东.基于ORACLE数据库的遥感影像存储技术[J].测绘学院学报.2002(4):258-261.[6]吴文龙,陆正中,Delphi程序设计教程.中国铁道出版社.