您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > GIS与Oracle数据库空间数据格式的转换
GIS与Oracle数据库空间数据格式的转换作者:李景文陈大克唐群(桂林工学院土木工程系,广西桂林541004)来源:四川测绘[摘要]MAPGIS软件支持多种GIS数据交换,且其明码数据格式较全面、清晰,易于读写。本文以MAPGIS明码数据格式和Oracle数据库为例,研究通过编程实现ASCII码格式的空间数据上载OracleSpatial数据库的方法,探讨各类GIS软件与OracleSpatial进行空间数据交换的基本过程。[关键词]GIS;空间数据库;Oracle;MAPGIS[中图分类号]P208[文献标识码]B[文章编号]1001-8379(2003)04-0178-03STUDYONTRANSFORMATIONOFSPATIALDATABETWEENGISANDORACLELIJing-wenCHENDa-keTANGQun(DepartmentofcivilEngineering,GuilinInstituteofTechnology,Guilin541004China)Abstract:Thesoftware,MAPGIS,supportsmanykindsofGISdataformat.It’spublicdataformatiscomprehensive,clearandeasytobeunderstood.Thearticle,basedontheMAPGIS’spublicdataformatandOracleSpatialDataformat,describeshowtouploadspatialdatawithASCIIintoOracleDatabase,andstudiesthebasicprocedureofeveryotherkindofGISsoftwareexchangingspatialdatawithOracleSpatial.Keywords:GIS;SpatialDatabase;Oracle;MAPGIS1概述近几十年来,由于社会应用需求的增长和多年研究工作的积累,地理信息系统(GIS)技术有了明显的进步,正朝着跨平台运行、分布式处理、开放式开发、网络化集成的方向发展。从空间数据管理角度看,GIS已经从纯文件方式管理图形数据和属性数据向图形数据文件方式管理和属性数据关系型数据库管理方式发展。然而由于GIS的图形数据格式多样,图形数据用文件来管理的模式给信息共享带来了极大不便,特别是随着GIS应用领域的不断拓宽,数据量的快速增大,在实现数据共享、网络通信、并发控制及数据安全恢复机制等方面呈现出明显局限,出现了诸多难以解决的问题。目前,大多数GIS软件都逐渐倾向于采用空间数据与属性数据一体化的管理方式,而且选用Oracle数据库作为存储空间数据和属性数据的数据库管理系统,特别是Oracle推出Spatial之后,基于OracleSpatial的空间数据管理方式逐渐被认同[1]。然而,由于各个不同的GIS软件的数据存储结构是封闭的,各自采用不同的数据格式,在数据上载OracleSpatial中存在数据语义表达的不一致性,彼此之间难以实现数据互访,并且用户又难以控制,本文针对这一问题以MAPGIS平台和Oracle数据库为例探讨GIS软件与Oracle数据库数据交换的方法。2MAPGIS明码格式MAPGIS的明码格式数据接口是一个开放式的软件数据接口,用户用其他软件获取的数据只要按照明码格式写成图形文件,就可以由MAPGIS系统读取。其明码数据格式是ASCII码的文件,较全面、清晰,且以点、线、面分开的方式存储空间实体,易于读写。下面以线文件为例,分析其明码数据格式的构成。线文件结构如下:逻辑结构:文件头线数1号线2号线......具体为:文件头,8个字节WMAP9021线数n1号线线型号辅助线型号颜色线宽x系数y系数辅助色图层透明输出线点数m1xx1y1;x2y2;…;xm1ym1ID线长度2号线线型号辅助线型号颜色线宽x系数y系数辅助色图层透明输出线点数m2xx1y1;x2y2;…;xm2ym2ID线长度……n号线线型号辅助线型号颜色线宽x系数y系数辅助色图层透明输出线点数mnx1y1;x2y2;…;xmnymnID线长度3OracleSpatial数据结构在OracleSpatial的对象—关系模型中,一个空间实体的空间信息是存储在字段类型为SDO_EOMETRY的对象类型记录中。SDO_GEOMETRY在Oracle中的定义如下:CREATETYPESDO_GEOMETRYASOBJECT(SDO_GTYPENUMBER,SDO_SRIDNUMBER,SDO_POINTSDO_POINT_TYPE,SDO_ELEM_INFOMDSYS.SDO_ELEM_INFO_ARRAY,SDO_ORDINATESMDSYS.SDO_ORDINATE_ARRAY);在MAPGIS明码数据上载OracleSpatial之前,先在Oracle中建立与MAPGIS明码格式相一致的空间类型信息和图形属性信息库结构,见表1所示:表1线信息数据库结构名称数据类型含义名称数据类型含义Line_IDGUID线对象代码Line_WDint线宽Line_xyGEOMETRY坐标序列Line_Xfloatx系数Line_TIDInt线型号Line_Yfloaty系数Line_TFIDInt辅助线型号Line_CLRint辅助色Line_CLInt颜色Line_OUTlog透明输出Line_LAYchar图层Line_LEGfloat周长4空间数据引擎实现方法4.1基本过程目前,各类专题空间数据库建立的过程包括技术设计、资料准备、数据获取和数据入库等内容。数据的获取常可利用现有的GIS软件如GeoStar、MAPGIS、SUPERMAP、ARCGIS等来实现,获得的数据通过某一空间数据引擎(如Easyloader)上载到Oracle数据库中,实现利用OracleSpatial存储、管理空间数据。MAPORA引擎是把MAPGIS的明码格式通过编程实现空间数据上载OracleSpatial的一种方法,其具体过程如图1所示[2]:4.2实现程序代码1)利用OracleJDBC驱动程序连接Oracle数据库。其java程序段如下:myconnection=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,“scott”“tiger”);2)使用CREATE语句创建数据库表单:CREATETABLEF001B(Point_idINTEGERCONSTRAINTPRIMARYKEY,Point_xyMDSYS.SDO_GEOMETRY,file://坐标对字段的定义Point_TIDINTEGER,file://线型号字段的定义Point_TFIDINTEGER,file://辅助线型号字段的定义......);3)读取MAPGIS明码格式后,写入Oracle数据库中:INSERTINFOF001BVALUES(1,MDSYS.SDO_GEOMETRY(SDO_GTYPE=2001SDO_SRID=NULLSDO_POINT=(1,1,NULL)SDO_ELEM_INFO=NULLSDO_ORDINATES=NULL)12,20,......);5数据应用目前,虽然GIS软件产品较多,但由于GIS应用于各行各业,不可能解决所有的专业问题,还必须根据用户的实际需要进行开发,例如MapInfo公司提供的MapBasic、MapX,ESRI公司提供的AVENUE、ArcObjects等语言和开发组件都方便用户进行二次开发。MapX是一个基于Windows操作系统的标准控件,不仅支持VisualBasic、Delphi、VisualC++等面向对象语言,而且支持OracleSpatial。本文利用Oracle数据库存储空间数据,利用MapX控件和VisualBasic语言实现空间数据的交换及应用开发,其过程如图2所示。6结论1)采用OracleSpatial存储、管理空间数据,易于解决数据共享、分布式处理、网络通信、开放式开发、并发控制、网络化集成、跨平台运行及数据安全恢复机制等方面的难题。2)MAPORA数据引擎为用户提供了ASCII码格式的空间数据上载OracleSpatial的一种便利方法,用户可以把通过野外测量或其他途径获取的数据较方便的上载到Oracle数据库中,同时用户又可以通过SQL语言操作数据库,实现远程数据的应用。参考文献[1]张大争,何建国,董恒,等.基于OracleSpatial的异构空间数据应用研究[J].国土资源信息化,2002,33(3):33-36.[2]李景文.国土资源信息集成及数据库建立研究[D].桂林:桂林工学院出版社,2003,31-39
本文标题:GIS与Oracle数据库空间数据格式的转换
链接地址:https://www.777doc.com/doc-2873863 .html