资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,中国最大的资料库下载,*,如何在Oracle8.1.6 Spatial 上编程-邹德禹,一. 使用Oracle Spatial的前提条件,1.至少Professional5.5,2.至少Oracle8.1.5,3.Easyloader 上载工具,二.,使用Easyloader应注意的一个问题,对于 Professional6.0的用户,如果采用Oracle8.1.6作为其空间数据库,建议使用 Easyloader For Oralce8.1.6向Oracle数据库中上载Mapinfo空间数据。,三. 如何在程序中连接Oracle8i,Oracle8i Spatial,hdbc = Server_Connect(,ORAINET, UID=scott;PWD=tiger;SRVR=Orasrv),ODBC,hdbc = Server_Connect(,QELIB, ,DSN=O8idsn;,SRV=Orasrv;USR=scott;PWD=tiger),四. 如何在下载数据时进行SQL查询,1 .在下载数据的同时,基于属性数据的SQL查询,四. 如何在下载数据时进行SQL查询,2 .在下载数据的同时,基于空间数据进行SQL查询,五. 几个常用的Oracle Spatial空间函数,1.相交查询,函数:SDO_FILETER,功能:确定与某一指定空间对象具有相交关系的对象(集合),使用:SDO_FILTER(geometry1, geometry2, params),示例:,SELECT A.gid FROM Polygons A, query_polys B,WHERE B.gid = 1 AND,SDO_FILTER(A.Geometry, B.Geometry, querytype = WINDOW) = TRUE;,五. 几个常用的Oracle Spatial空间函数,1.相交查询,函数:SDO_RELATE,功能:确定与某一指定空间对象具有相交关系的对象(集合),使用:SDO_RELATE(geometry1, geometry2, params),示例:,SELECT A.gid FROM Polygons A, query_polys B WHERE B.gid = 1,AND SDO_RELATE(A.Geometry, B.Geometry,mask=ANYINTERACT querytype = WINDOW) = TRUE,五. 几个常用的Oracle Spatial空间函数,1.相交查询,函数:SDO_WITHIN_DISTANCE,功能:查找距某个指定对象,一定距离范围内的所有其它对象,使用:,SDO_WITHIN_DISTANCE,(T.column, aGeom, params),示例:,SELECT A.GID,FROM POLYGONS A,WHERE SDO_WITHIN_DISTANCE(A.Geometry, mdsys.sdo_geometry(3,NULL,NULL,mdsys.sdo_elem_info(1,3,3),mdsys.sdo_ordinates(x1,y1,x2,y2),distance = 10) = TRUE,五. 几个常用的Oracle Spatial空间函数,2.缓冲区分析,函数:sdo_buffer,功能:生成缓冲区,使用:SDO_GEOM.SDO_BUFFER (geometry, dim_array, distance),五. 几个常用的Oracle Spatial空间函数,3.面积,长度计算函数,函数:sdo_area,功能:计算二维区域对象的面积,使用:SDO_GEOM.AREA (geometry, dim_array),示例:,update counties set AREA =,mdsys.sdo_geom.sdo_area (geom, (select diminfo from sdo_geom_metadata where table_name = counties and column_name = GEOM),五. 几个常用的Oracle Spatial空间函数,3.面积,长度计算函数,函数:sdo_length,功能:计算空间对象的长度或是周长,使用: SDO_GEOM.LENGTH (geometry, dim_array),说明:如果指定的空间对象为线型,则此函数计算该对象的长度,对于指定的区域型对象,则计算此对象的周长(包括其中的洞)。,六. 如何保存与刷新DBMS表,1.保存DBMS表,commit table Tablename,2.刷新DBMS表,server refresh Tablename,七. 几个问题如何解决,1.点、线、面样式丢失,现象,:,七. 几个问题如何解决,1.点、线、面样式丢失,解决办法,:,利用Easyloader上载Mapinfo表之前,先在表中增加几个属性字段,将点线面的样式特性当作对象的属性值保存到表中,并连同表的其它属性一起上载到Oracle数据库中。当用户通过程序将该表从Oracle Spatial中下载到Mapinfo中后,再根据点、线、面的样式信息,利用程序将点、线、面的样式恢复出来。,七. 几个问题如何解决,2.无法向Oracle Spatial中上载文本对象,现象,:,七. 几个问题如何解决,2.无法向Oracle Spatial中上载文本对象,解决办法:,利用Easyloader上载Mapinfo表之前,先在表中增加几个属性字段,将文本对象的信息(如:文本对象的内容、文本样式等)当作对象的属性值保存到表中,并连同表的其它属性一起上载到Oracle数据库中。当用户通过程序将该表从Oracle Spatial中下载到Mapinfo中后,再根据保存在表中的文本对象的信息,利用程序为每个记录再重新创建一具文本对象。,七. 几个问题如何解决,2.无法向Oracle Spatial中上载文本对象,解决办法:,利用Easyloader上载Mapinfo表之前,先在表中增加几个属性字段,将文本对象的信息(如:文本对象的内容、文本样式等)当作对象的属性值保存到表中,并连同表的其它属性一起上载到Oracle数据库中。当用户通过程序将该表从Oracle Spatial中下载到Mapinfo中后,再根据保存在表中的文本对象的信息,利用程序为每个记录再重新创建一具文本对象。,
展开阅读全文