资源描述:
福建电脑福建电脑2008年第6期福建电脑 MAPGIS 与 Oracle 数据库空间数据格式的转换 郝翠萍 ( 新疆昌吉职业技术学院计算机系新疆 昌吉831100) 【摘 要】 MAPGIS软件支持多种GIS数据交换,且其明码数据格式较全面、清晰,易于读写。 本文以MAPGIS明码数据 格式和Oracle数据库为例,研究通过编程实现ASCII码格式的空间数据上载Oracle Spatial数据库的方法,探讨各类GIS软 件与Oracle Spatial进行空间数据交换的基本过程。 【关键词】GIS空间数据库OracleMAPGIS 1、概述 地理信息系统GIS技术正朝着跨平台运行、分布式处理、开 放式开发、网络化集成的方向发展,从空间数据管理角度看,GIS 已经从纯文件方式管理图形数据和属性数据向图形数据文件方 式管理和属性数据关系型数据库管理方式发展。 利用计算机来提取、处理数据是GIS的基本功能。GIS处理 的数据分为两类一类主要是和空间位置、空间关系有关的数据, 称为空间数据;一类是地理元素中非空间的属性信息,称为属性 数据。 随着GIS应用向分布式管理系统领域的转移,空间数据的 文件管理模式在实现数据共享、网络通信、并发控制及数据的安 全恢复机制等方面出现了难以解决的问题。 然而由于GIS的图 形数据格式多样, 图形数据用文件来管理的模式给信息共享带 来了极大不便。 目前, 大多数GIS软件都倾向于采用空间数据与属性数据 一体化的管理方式,而且选用Oracle数据库作为存储空间数据 和属性数据的数据库管理系统,基于Oracle Spatial的空间数据 管理方式逐渐被认同。然而,由于各个不同的GIS软件的数据存 储结构是封闭的,各自采用不同的数据格式,在数据上载Oracle Spatial中存在数据语义表达的不一致性, 彼此之间难以实现数 据互访。 本文针对这一问题以MAPGIS平台和Oracle数据库为 例探讨GIS软件与Oracle数据库数据交换的方法。 2、数据结构 2.1 MAPGIS明码格式 MapGIS数据管理的核心概念是工作区,存放空间对象的空 间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于 一个数据文件。工作区分为点、线、面、网、表5种类型。在一个工 作区中,存放许多空间实体的个体,每个体都有唯一的实体号, 对实体数据的存取的主要依据实体号。 MapGIS的数据交换格式是ASCⅡ码的明码文件,其文件结 构由文件头和数据区两部分组成。 文件头记录的是文件的版本 和类型点、线、面信息。 数据区记录的是实体的几何信息。 明码 文件按要素类型分为点文件*.wat、线文件*.wal、区文件*.wap 三种。MapGIS还有一种不公开的标准数据格式.也按要素类型 分为点文件*.wt、线文件*.wl、区文件*.wp三种。 以线文件结 构为例 逻辑结构 文件头线数1号线2号线 具体为 A、文件头,8个字节 WMAP9021 老的文件为WMAP6021或WMAP7021和WMAP8021 B、线数n C、1号线 线型号辅助线型号线色线宽X系数Y系数辅助色图层透 明输出 线点数m1 x1y1 x2 y2 xm1 ym1 ID线长度 2号线 线型号辅助线型号线色线宽X系数Y系数辅助色图层透 明输出 线点数m2 x1 y1 x2 y2 xm2 ym2 ID线长度 n号线 线型号辅助线型号线色线宽X系数Y系数辅助色图层透 明输出 线点数mn x1 y1 x2 y2 xmn ymn ID线长度 2.2 Oracle Spatial数据结构 Oracle8i空间数据库技术-Oracle Spatial是Oracle于8.04 版本中推出了空间数据管理工具-SpatialCartridgeSC。它是一个 真正的Client/Server机制的产品,提供了分布式处理能力,全部的 Oracle安全管理机制,SQL方式访问空间数据等功能。SC的空间 数据管理和空间数据分析完全由Oracle来执行,对图形数据的 管理采用的是一种开放的方式,任何授权用户可以通过SQL数 据管理语言DML进行空间数据的添加/删除等操作;SC采用多 记录多字段存储空间数据。 随着Oracle8i的推出,SC升级为O鄄 racle Spatial。 在Oracle Spatial中,引入了抽象数据类型ADT- SDOGEMETRY来表示空间数据类型, SDOGEMETRY可以存储 在一列中。Oracle Spatial对索引机制进行了优化,增加了二级过 滤、缓冲区生成和叠加分析等过程。 在Oracle Spatial的对象-关系模型中, 一个空间实体的空 间信息是存储在字段类型为SDO_EOMETRY的对象类型记录 中。 SDO GEOMETRY在Oracle中的定义如下 CREATE TYPE SDO_GEOMETRY AS OBJECTSDO_GTYPE NUMBER,SDO_SRID NUMBER,SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO,MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES,MDSYS.SDO_ORDINATE_ARRAY; 在MAPGIS明码数据上载Oracle Spatial之前, 先在Oracle 中建立与MAPGIS明码格式相一致的空间类型信息和图形属性 信息库结构,如下所示 名称数据类型含义名称数据类型含义 Line_ID GUID线对象代码Line_WD int线宽 Line_xy GEOMETRY坐标序列Line_X float x系数 Line_TID Int线型号Line_Y float y系数 Line_TFID Int辅助线型号Line_CLR int辅助色 Line_CL Int颜色Line_OUT log透明输出 Line_LAY char图层Line_LEG float周长 3、空间数据引擎实现方法 3.1基本过程 目前,各类专题空间数据库建立的过程包括技术设计、资料 准备、数据获取和数据入库等内容。 数据的获取(下转第172 页) 176 福建电脑福建电脑2008年第6期福建电脑 (上接第176 页) 常可利用现有的GIS软件如GeoStar、MAPGIS、SUPERMAP、AR鄄 CGIS等来实现, 获得的数据通过某一空间数据引擎如Easy鄄 loader上载到Oracle数据库中,实现利用Oracle Spatial存储、管 理空间数据。MAPORA引擎是把MAPGIS的明码格式通过编程 实现空间数据上载Oracle Spatial的一种方法,其具体过程如图 1所示[2] 3.2实现程序代码 1)利用Oracle JDBC驱动程序连接Oracle数据库。 其java 程序段如下 myconnection DriverManager.getConnection “jdbcoraclethinlocalhost1521 orcl“,“scott“ “tiger“; 2)使用CREATE语句创建数据库表单 CREATE TABLE F001B Point_id INTEGER CONSTRAINT PRIMARYKEY, Point_xy MDSYS.SDO_GEOMETRY,file//坐标对字段的定义 Point_TID INTEGER, file//线型号字段的定义 Point_TFID INTEGER, file//辅助线型号字段的定义 ......; 3)读取MAPGIS明码格式后,写入Oracle数据库中 INSERT INFO F001B valueS 1,MDSYS.SDO_GEOMETRY SDO_GTYPE 2001 SDO_SRID NULL SDO_POINT (1,1,NULL) SDO_ELEM_INFO NULL SDO_ORDINATES NULL 12, 20, ......; 4、数据应用 目前,虽然GIS软件产品较多,但由于GIS应用于各行各 业,不可能解决所有的专业问题,还必须根据用户的实际需要进 行开发, 例如MapInfo公司提供的MapX,ESRI公司提供的Ar鄄 cObjects等语言和开发组件都方便用户进行二次开发,支持Vi鄄 sual Basic、Delphi、Visual C等面向对象语言, 而且支持Oracle Spatial。 通过编写相应的程序, 可以完成空间数据在Oracle8i数据 库中数据处理的很多方面,实现向数据库中读出和写入数据,从 而建立起完善的GIS系统。 5、结论 利用Oracle8i的空间数据插件Oracle Spatial来存取GIS的 空间数据是很先进的技术,它实现了属性数据和空间数据的一 体化存储,从理论上保证了数据的完整性和数据共享。 它将GIS 本身的问题解决转移到数据库领域中,给基于GIS的应用系统 开发带来了新的解决思路。 采用Oracle Spatial存储、管理空间 数据,易于解决数据共享、分布式处理、网络通信、开放式开发、 并发控制、网络化集成、跨平台运行及数据安全恢复机制等方面 的难题,最终实现功能完善的GIS应用。 参考文献 1.MapGis组件开发手册. 宏“是Excel的精华部分。 它的录制和使用与在Word中几乎相 同。 例如,我们以录制一个设置标题“跨列居中“的宏,看看具体 的录制过程执行“工具→宏→录制新宏“命令,打开“录制新宏“ 对话框。 在“宏名“下面输入一个名称(例如“跨列居中“),并设置 好宏的保存位置。 宏的保存位置有三种当前工作簿-宏只对 当前工作簿有效; 个人宏工作簿-宏对所有工作簿都有效;新 工作簿-录制的宏保存在一个新建工作簿中, 对该工作簿有 效)按下“确定“按钮开始录制。 将设置“跨列居中“的过程操作一 遍,完成后,按一下“停止录制“工具栏上的“停止录制“按钮,则 宏录制完成。 2.3宏在PowerPoint中的应用 如果要在PPT中插入几十甚至上百张图片,并且要求每张 图片插入到对应的幻灯片页面上。 按照常用的方法是执行“插 入→图片→来自文件“菜单命令, 然后一个一个选择需要的图 片。 在这种很费时的情况下, 可以借助PowerPoint强大的宏功 能,将多步操作合并为一步,从而实现批量插入图片。 第一步首先准备好图片,假设在D盘下面的Picture文件 夹 内 有50张jpg格 式 的 图 片 , 如“D\Pictures\1.jpg“、“D\Pic鄄 tures\2.jpg“、“D\Pictures\3.jpg“等,文件名是有序的数字。 第二步启动PowerPoint 2003,按下AltF11键打开Visual Basic编辑器窗口,点击“插入→模块“菜单命令,在弹出的代码 编辑窗口中输入以下代码 Sub InsertPic Dim i As Integer For i 1 To ActivePresentation.Slides.Count ActivePresentation.Slidesi.Select With ActiveWindow.Selection.SlideRange .FollowMasterBackground msoFalse .Background.Fill.UserPicture “D\Picture\“ i “.jpg“ End With Next End Sub 第三步关闭Visual Basic编辑器窗口,上面的模块代码将 被自动保存。 此时,连续按CtrlM键建立与图片数目相等的多 个空白幻灯片。 按AltF8键打开宏对话框, 选中以上创建的 InsertPic宏,点击“运行“即可,50张图片瞬间就自动插入到50 张幻灯片页面中了。 3.结束语 综上所述,宏是利用VBA制作的程序,它与Office的配合 使用可以发挥其更大的作用。 如果需要在Office中反复进行某 项工作,那就可以利用宏来自动完成这项工作。 宏是一系列组合 在一起的VBA代码,它们形成了一条自定义的命令,用以替代 人工进行的一系列费时而单调的重复性操作, 执行宏则自动完 成以上所需任务。“记录宏“的操作其实就是将工作的一系列操 作结果录制下来,并命名存储(相当于VB中一个子程序)。 值得一提的是,“记录宏“仅记录操作结果,而不记录操作过 程。 例如,在Word、Excel、PowerPoint或FrontPage等软件中,每 次当用户想要改变文字字体时,都需要打开“字体“对话框,再选 择一种字体,这是一个繁琐的过程。 而“记录宏“则只记录“将所 选择的文字改变为所选择的字体“这一结果。 如果要创建简单的 宏, 可以使用Office中的宏录制器即可, 用户不需要了解VBA 的语法; 对于比较复杂的宏, 可以通过编写或修改预先生成的 VBA代码来创建。 对 于以Web页 保 存 并 发 布 的Word、Excel、PowerPoint文 档, 不能使用宏来自动执行任务, 而需借助于脚本标记和“Mi鄄 crosoft脚本编辑器“。 脚本标记用来标记文档中存储脚本的位 置。 按下AltShiftF11键就可打开“Microsoft脚本编辑器“来编 辑脚本。 在Web浏览器中显示Web页时,将会运行脚本,实现 在Web页中自动执行任务。 宏是用户的得力助手,当人们如果了解了宏,懂得编写宏的 方法,并利用好宏,就可以充分体验出它所带来的巨大方便。 参考文献 1.刘模群,陈玉泉,陈舜青等.Visual Basic程序设计衫教程[M].北京电子 工业出版社,2008. 2.易创思创作组.Microsoft Excel 2000从入门到精通-实际应用与数据分 析[M].北京北京万水电子信息有限公司,2000. 3.杨晓亮,Word VBA高效排版范例应用[M].北京中国青年出版社, 2005 172
展开阅读全文