您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > SDO_Geometry结构说明
SDO_Geometry结构说明文档维护人:万大光修改人版本号修改日期修改内容万大光V1.02010年10月创建1创建OracleSpatial表说明创建Oraclespatial表必须写空间元数据和创建空间索引,才能正常使用读写查询。假设表名为TB_TEST,SDO_Geometry类性字段的字段名F_SHAPE空间参考为WG84坐标1.1写空间元数据INSERTINTOuser_sdo_geom_metadata(table_name,column_name,diminfo,srid)VALUES('TB_TEST',--表名'F_SHAPE',--geometry字段SDO_DIM_ARRAY--DIMINFO属性存储空间表中空间数据的范围和容差(SDO_DIM_ELEMENT('X',--第一个元键名称-180,--最小X180,--最大X0.005--容差0.005度),SDO_DIM_ELEMENT('Y',--第二个元键名称-90,--最小Y90,--最大Y0.005--容差0.005度)),8307--SRID);1.2创建空间索引(R树索引)CREATEINDEXIDX_Test_SpatialONTB_TEST(F_SHAPE)INDEXTYPEISMDSYS.SPATIAL_INDEX;--不带自定义参数,参数为默认值或CREATEINDEXIDX_Test_SpatialONTB_TEST(F_SHAPE)INDEXTYPEISMDSYS.SPATIAL_INDEXPARAMETERS('SDO_COMMIT_INTERVAL=100LAYER_GTYPE=POLYGONGEODETIC=FALSE');--带自定义参数,如指定该表的图层几何类型为面2SDO_GEOMETRY结构说明SDO_GEOMETRY(SDO_GTYPENUMBER,--标识几何体类型SDO_SRIDNUMBER,--标识坐标系统SDO_POINTMDSYS.SDO_POINT_TYPE,--仅用于点几何体SDO_ELEM_INFOMDSYS.SDO_ELEM_INFO_ARRAY,--坐标解释方式SDO_ORDINATESMDSYS.SDO_ORDINATE_ARRAY--坐标值);2.1类型解释2.1.1SDO_GTYPENUMBER,--标识几何体类型有4位数字构成dlttd:标识维数,可能的取值为2、3、4;l:标识三维线状参考系统(Linearreferencingsystem,LRS)几何体的LRS度量维,即哪一维含度量值(measurevalue),可能的取值为3、4,对于非LRS几何体或者以ORACLESPATIAL默认的最后一维为LRS度量维,则l取值为0;tt:标识几何体的类型,有效值为00至07值几何体类型描述dl00UNKNOW_GEOMETRYOracleSpatial忽略该几何体数据dl01POINT该几何体为一个点dl02LINEorCURVE该几何体为一线串(线串中的段可以为直线段也可以为弧线断dl03POLYGON该几何体为一多边形,该多边形可有洞也可没有dl04COLLECTION是元素的集合,其中的元素只要是非COLLECTION类型的即可dl05MULTIPOINT含一个或多个点的几何体dl06MULTILINEorMULTICURVE含一个或多个线串的几何体dl07MULTIPOLYGON多个DISJOINT的多边形2.1.2SDO_SRIDNUMBER,--标识坐标系统标识几何体所关联的坐标系统如果SDO_SRID非空,则该值必须来自于MDSYS.CS_SRS的SRID列,并且这样的值必须插入到USER_SDO_GEOM_METADATA视图的SRID列中,一图层中,各几何体的SRID值必须相同。如8307表示GWS84经纬度坐标系2.1.3SDO_POINTMDSYS.SDO_POINT_TYPE,--仅用于点几何体具有数值型成员X、Y、Z的对象类型:MDSYS.SDO_POINT_TYPE。如果SDO_ELEM_INFO和SDO_ORDINATES均为NULL,而X、Y、Z不为NULL,则Spatial将其用作点几何体的坐标;否则Spatial忽略SDO_POINT属性。当图层中全部为点几何体时,建议使用SDO_POINT存储坐标数据,而不用SDO_ELEM_INFO和SDO_ORDINATES,以得到优化的性能。2.1.4SDO_ELEM_INFOMDSYS.SDO_ELEM_INFO_ARRAY,--坐标解释方式是一变长的数值型数组MDSYS.SDO_ELEM_INFO_ARRAY,其用途是该属性给出了SDO_ORDINATES中坐标的解释方式。SDO_ELEM_INFO数组中,每三个数值为一组,用于解释一个元素(ELEMENT),组中的数值的意义为:SDO_STARTING_OFFSET:第一个数值,存放该元素的首坐标在SDO_ORDIANTES中的位置(从1开始);SDO_ETYPE:第二个数值,标识元素的类型;SDO_INTERPRETATION:和以上两个数据一起解释元素;SDO_ETYPE、SDO_INTERPRETATION描述:SDO_ETYPESDO_INTERPRETATION含义0*非OracleSpatial支持的几何类型11点11点集21直线串22弧线串(弧线由起止点及弧上任一点坐标给出,弧线的交点坐标只出现一次)1003/20031顶点间通过直线段连成的多边形(起止顶点坐标相同)1003表示外环,2003表示内环,以下同1003/20032由弧线段连成的封闭图形(起止顶点坐标相同)1003/20033长方形(由左下角和右上角点坐标给出),本类型不用于地理数据1003/20034圆(由圆上任意三个点坐标给出)4n1同时含直线串和弧线串的线串,n表示这些子线串的个数,即还有n个(SDO_STARTING_OFFSET,SDO_ETYPE,SDO_INTERPRETATION)元组定义这些子元素1005/2005n1同时含直线串和弧线串的多边形,n表示这些子线串的个数,即还有n个(SDO_STARTING_OFFSET,SDO_ETYPE,SDO_INTERPRETATION)元组定义这些子串2.1.5SDO_ORDINATESMDSYS.SDO_ORDINATE_ARRAY--坐标值变长的数值型数组,用于存放几何对象的点的坐标值坐标的组织方式由SDO_ELEM_INFO解释;点坐标维顺序相同,即X,Y,Z,X,Y,Z,…坐标分量不能为空。2.2SDO_GEOMETRY的sql语句实例假设WGS84坐标系其srid为8307,均为2维几何。(所有线几何操作只支持折线,不支持弧线、曲线、圆)2.2.1简单点(单点)简洁格式MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(点1经度,点1维度,0),null,null)常规格式MDSYS.SDO_GEOMETRY(2001,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,1),MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度))2.2.2简单线(单部件连续的折线)折线串MDSYS.SDO_GEOMETRY(2002,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,……))2.2.3简单多边形(单部件多边形,包含带洞的多边形)一个环的简单多边形MDSYS.SDO_GEOMETRY(2003,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,……,点1经度,点1维度)--注意首尾点相同,以下同)一个环的长方形MDSYS.SDO_GEOMETRY(2003,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度))带洞的简单多边形MDSYS.SDO_GEOMETRY(2003,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,n,2003,1),--n表示第二个多边形起始位置MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度……,点1经度,点1维度,点I经度,点I维度,点II经度,点II维度……,点I经度,点I维度))带洞的简单多边形(外环为长方形)MDSYS.SDO_GEOMETRY(2003,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3,5,2003,1),--n表示第二个多边形起始位置MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,点I经度,点I维度,点II经度,点II维度……,点I经度,点I维度))2.2.4点集(多个简单点)常规格式MDSYS.SDO_GEOMETRY(2005,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,n),n表示点数MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,……))2.2.5多部件线(1个或多个简单线)多个折线串MDSYS.SDO_GEOMETRY(2006,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1,n,2,1),--n表示第二个折线起始位置MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度,……,点I经度,点I维度,点II经度,点II维度……))2.2.6多部件多边形(一个或多个简单多边形)多个部件多边形MDSYS.SDO_GEOMETRY(2007,8307,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,n,1003,1,……),--n表示第二个多边形起始位置……MDSYS.SDO_ORDINATE_ARRAY(点1经度,点1维度,点2经度,点2维度……,点1经度,点1维度,点I经度,点I维度,点II经度,点II维度……,点I经度,点I维度,……))
本文标题:SDO_Geometry结构说明
链接地址:https://www.777doc.com/doc-4335573 .html