`
nlslzf
  • 浏览: 1045440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在oracle中创建带有坐标字段的表

阅读更多
在oracle中创建带有坐标字段的表。
1,通过Create语句,创建一个表,其中坐标字段类型为MDSYS.SDO_GEOMETRY;例如:
CREATE TABLE cola_markets (
   mkt_id NUMBER PRIMARY KEY,
   name VARCHAR2(32),
   shape MDSYS.SDO_GEOMETRY);
2,在空间元数据表(USER_SDO_GEOM_METADATA )中添加一条记录,例如:
INSERT INTO USER_SDO_GEOM_METADATA
   VALUES (
   'cola_markets',                            //具有空间数据类型的标的名字
   'shape', //保存空间数据字段的名字
   MDSYS.SDO_DIM_ARRAY( //定义这个坐标字段的维数名称(X,Y 2维),最小最大值,以及坐标的容忍度(精确度).
   MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005), //二维中的第一维名称是X,最小值是0,最大值是20,容忍度是0.005。
   MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005) //二维中的第二维名称是Y,最小值是0,最大值是20,容忍度是0.005。
   ),
   NULL //坐标体系对应的srid值
  );
3,创建空间索引,例如:
CREATE INDEX cola_spatial_idx
  ON cola_markets(shape)
  INDEXTYPE IS MDSYS.SPATIAL_INDEX;

以上三步完成后,这个具有空间数据类型的表,才算创建完毕!下面就需要往这个表中插入数据,insert语句如下:
INSERT INTO cola_markets VALUES(
   2,
   'cola_b',
   MDSYS.SDO_GEOMETRY(
   2003, //图形类型
   NULL,//srid值
   NULL,//点坐标,如果类型是点,则这个参数有效,如果后面2个参数不为null,此参数无效
   MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
   MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)
   )
  );
解释:上面出现的1003,2003标示图形类型。
第一位代表了维数,可以是二维、三维、四维;
第二位标识Linear Referencing System (LRS),非LRS的类型,此值为0;
第三、四位代表形状,从00到09共有10种类型。00 – 忽略此形状;01 – 点;02 – 线;03 – 多边形或面;04 – 类型的集合;05 – 01类型的集合,既多点集;06 – 02类型的集合;07 – 03类型的集合;08 – 体(三维空间中有多个面封闭起来的空间);09 – 08类型的集合;
SDO_ELEM_INFO代表几何形状包含的元素的信息,最基本的元素是点。比如,一个立方体包含多个面元素。元素还可以包含自己的子元素。
  一个元素的信息是一个数组,数组中有三个数。如(1, 1003, 1, 4, 2003, 1)包含两个元素,第一个元素是(1, 1003, 1),第二个元素是(4, 2003, 1)。每一个数组的含义如下:
第一个数代表了元素在SDO_ORDINATES中起始偏移位。如SDO_ORDINATES是(5, 4, 2, 12, 8, 15, 3, 7),元素的起始偏移位是5,那么(8, 15)是元素的第一个点。如果元素是连续的,那么元素最后点的偏移位就是下一元素的起始偏移位,如(8, 15)是元素的终点,同时也是下一元素的起点。
   第二个数代表了元素的类型,最多有四位。如果元素是复合类型,那么在它之后跟着是它的子元素。
   第三个数指名如何解释元素。对复合元素来说,表明它子元素的个数。对单元素来说,通常元素类型的进一步解释,比如(1, 1003, 3)代表矩形,(1, 1003, 4)代表圆形……
SDO_ORDINATES
  此属性是一个数组,包含了几何形状所有的坐标点。比如二维系统中,SDO_ORDINATES(5, 4, 2, 12, 8, 15, 3, 7)包含了四个点,分别是(5, 4); (2, 12); (8, 15); (3, 7)。


说明,本文是一个同事收集的文章中的一段,但是我从网络上找了一下,似乎他是从多个文章中合并而来,本文只好厚着脸皮说是原创
分享到:
评论

相关推荐

    skyline与oracle数据库坐标关联之oracle数据库操作说明

    在 Oracle 数据库中,需要添加 shape 字段,该字段类型为 SDO_GEOMETRY,数据库默认有该类型。添加到数据表中的语句如下: ALTER TABLE 表名 ADD (shape SDO_GEOMETRY); 二、给表 user_sdo_geom_metadata 添加数据...

    Oracle Spatial讲义

    在 Oracle Spatial 中,空间数据主要通过两个关键概念进行管理:空间数据字段(SDO_GEOMETRY 字段)和元数据表。SDO_GEOMETRY 字段是用于存储空间对象的核心结构,它包含了关于几何形状的信息,如点、线和多边形。这...

    mysql省市区表完整版文件

    MySQL数据库在许多应用中用于存储地理信息,如省市区数据,尤其在中国的网站和应用程序中很常见。"mysql省市区表完整版文件"提供了一个全面的数据库表结构,包含了中国所有省份、城市和区县的详细信息,这些信息通常...

    new-city.zip

    这个压缩包的核心内容是“new-city.sql”,这通常是一个SQL脚本文件,用于在数据库中创建、更新或查询数据。根据描述,我们可以推测这个文件包含了最新的中国行政区域划分信息,包括省、市、区、县以及村级(社区)...

    基于通信线路资源管理系统异构数据迁移的实现.pdf

    Oracle Spatial支持多种数据存储结构,包括二进制Long Raw和ESRI的ST_Geometry等格式,适用于处理带有地理信息的数据。在数据迁移过程中,坐标转换是一个关键环节,因为它确保了在不同系统间地理坐标的准确对应。...

    geodatabase适用教程

    传统的数据库主要用于存储非空间信息,而Geodatabase则专门设计来处理带有空间属性的数据,如地理位置、形状、面积等。它能够存储、组织和管理大量的地理实体,如点、线、面、栅格数据以及与之相关的属性数据。 **...

    arcgis地图发布补充说明文档

    2. 在ArcGIS Server Manager中创建新服务,选择geoprocessing类型。 3. 上传工具箱和数据,配置参数和执行环境。 4. 发布服务,使其可供用户通过Web接口调用。 ### 3. 切片缓存 切片缓存是提高地图服务性能的重要...

    FME学习之旅-day02

    在day02的练习中,你可能需要创建和编辑工作空间,理解它们如何将不同格式的数据转换为所需的目标格式。 2. **数据读取与写入**:FME支持众多数据格式,因此在day02的学习中,你将学习如何配置读者和写入器来读取和...

    Geodatabase与ArcSDE中文版.doc

    Geodatabase支持带有或不带空间扩展的Oracle、IBM DB2、IBM Informix等数据库,提供SQL访问空间信息。通过扩展SQL语言,Geodatabase能够处理空间向量类型,增强了对空间数据的操作能力。 5. Geodatabase的模式与元...

    C#编程经验技巧宝典

    79 <br>0116 如何在字符串中查找指定字符 79 <br>0117 如何在字符串中用一子串替换另一子串 80 <br>0118 将新字符串添加到已有字符串中 80 <br>0119 如何在字符串中添加多个空格 81 <br>0120...

    基于 ArcSDE + Oracle9i的防洪减灾综合数据库的构建及应用 (2005年)

    - **空间数据库**:主要包括用于GIS空间分析、三维可视化分析应用的带有明显空间位置信息的数据。这些数据通常包含地形、地质、水利工程分布等信息。 - **专业属性库**:主要包括各种历史数据、实时数据以及工程信息...

    php网络开发完全手册

    17.4.4 创建一个有时间限制的Cookie 291 17.4.5 创建一个有范围限制的Cookie 292 17.4.6 删除Cookie 292 17.4.7 浏览器重定向 292 17.4.8 Cookie的常见问题 293 17.5 Cookie应用实例——登录验证 293 17.5.1 HTML...

Global site tag (gtag.js) - Google Analytics