MAPGIS与Oracle数据库空间数据格式的转换
- 格式:pdf
- 大小:116.35 KB
- 文档页数:2
MAPGIS与Oracle数据库空间数据格式的转换郝翠萍(新疆昌吉职业技术学院计算机系新疆昌吉831100)【摘要】:MAPGIS软件支持多种GIS数据交换,且其明码数据格式较全面、清晰,易于读写。
本文以MAPGIS明码数据格式和Oracle数据库为例,研究通过编程实现ASCII码格式的空间数据上载Oracle Spatial数据库的方法,探讨各类GIS软件与Oracle Spatial进行空间数据交换的基本过程。
【关键词】:GIS空间数据库Oracle MAPGIS1、概述地理信息系统(GIS)技术正朝着跨平台运行、分布式处理、开放式开发、网络化集成的方向发展,从空间数据管理角度看,GIS 已经从纯文件方式管理图形数据和属性数据向图形数据文件方式管理和属性数据关系型数据库管理方式发展。
利用计算机来提取、处理数据是GIS的基本功能。
GIS处理的数据分为两类:一类主要是和空间位置、空间关系有关的数据,称为空间数据;一类是地理元素中非空间的属性信息,称为属性数据。
随着GIS应用向分布式管理系统领域的转移,空间数据的文件管理模式在实现数据共享、网络通信、并发控制及数据的安全恢复机制等方面出现了难以解决的问题。
然而由于GIS的图形数据格式多样,图形数据用文件来管理的模式给信息共享带来了极大不便。
目前,大多数GIS软件都倾向于采用空间数据与属性数据一体化的管理方式,而且选用Oracle数据库作为存储空间数据和属性数据的数据库管理系统,基于Oracle Spatial的空间数据管理方式逐渐被认同。
然而,由于各个不同的GIS软件的数据存储结构是封闭的,各自采用不同的数据格式,在数据上载Oracle Spatial中存在数据语义表达的不一致性,彼此之间难以实现数据互访。
本文针对这一问题以MAPGIS平台和Oracle数据库为例探讨GIS软件与Oracle数据库数据交换的方法。
2、数据结构2.1MAPGIS明码格式MapGIS数据管理的核心概念是工作区,存放空间对象的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个数据文件。
工作区分为点、线、面、网、表5种类型。
在一个工作区中,存放许多空间实体的个体,每个体都有唯一的实体号,对实体数据的存取的主要依据实体号。
MapGIS的数据交换格式是ASCⅡ码的明码文件,其文件结构由文件头和数据区两部分组成。
文件头记录的是文件的版本和类型(点、线、面)信息。
数据区记录的是实体的几何信息。
明码文件按要素类型分为点文件(*.wat)、线文件(*.wal)、区文件(*.wap)三种。
MapGIS还有一种不公开的标准数据格式.也按要素类型分为点文件(*.wt)、线文件(*.wl)、区文件(*.wp)三种。
以线文件结构为例:逻辑结构:文件头线数1号线2号线……具体为:A、文件头,8个字节WMAP9021(老的文件为WMAP6021或WMAP7021和WMAP8021)B、线数nC、1号线线型号辅助线型号线色线宽X系数Y系数辅助色图层透明输出线点数m1x1y1x2y2…xm1ym1ID线长度2号线线型号辅助线型号线色线宽X系数Y系数辅助色图层透明输出线点数m2x1y1x2y2…xm2ym2……ID线长度n号线线型号辅助线型号线色线宽X系数Y系数辅助色图层透明输出线点数mnx1y1x2y2…xmn ymnID线长度2.2Oracle Spatial数据结构Oracle8i空间数据库技术-Oracle Spatial是Oracle于8.04版本中推出了空间数据管理工具-SpatialCartridge(SC)。
它是一个真正的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 OBJECT(SDO_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页)常可利用现有的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("jdbc:oracle:thin:@localhost:1521: 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= 2001SDO_SRID=NULLSDO_POINT=(1,1,NULL)SDO_ELEM_INFO=NULLSDO_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"等,文件名是有序的数字。
第二步:启动PowerPoint2003,按下Alt+F11键打开Visual Basic编辑器窗口,点击"插入→模块"菜单命令,在弹出的代码编辑窗口中输入以下代码:Sub InsertPic()Dim i As IntegerFor i=1To ActivePresentation.Slides.CountActivePresentation.Slides(i).SelectWith ActiveWindow.Selection.SlideRange.FollowMasterBackground=msoFalseerPicture"D:\Picture\"&i&".jpg"End WithNextEnd Sub第三步:关闭Visual Basic编辑器窗口,上面的模块代码将被自动保存。