【问题标题】:Difference between GTYPE and SDO_ELEM_INFO_ARRAYGTYPE 和 SDO_ELEM_INFO_ARRAY 的区别
【发布时间】:2017-04-23 23:43:00
【问题描述】:

我正在学习 oracle 空间数据库,但卡在SDO_GEOMETRY。实际上这个对象有以下结构:

CREATE TYPE sdo_geometry AS OBJECT(
 SDO_GTYPE NUMBER,
 SDO_SRID NUMBER,
 SDO_POINT SDO_POINT_TYPE,
 SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
 SDO_ORDINATES SDO_ORDINATE_ARRAY);

我将引用官方 oracle 文档中的两个属性 SDO_GTYPESDO_ELEM_INFOSDO_GTYPE:

SDO_GTYPE 表示几何的类型。有效几何类型对应于 OGIS Simple Features for SQL 规范的几何对象模型中指定的那些类型(表面除外)。

SDO_ELEM_INFO_ARRAY:

此属性让您知道如何解释存储在 SDO_ORDINATES 属性中的坐标

我的问题是我无法区分其中之一。 几何类型实际上不就是我们解释坐标的方式吗?例如,查看以下 insert 查询。它首先说几何是一个二维多边形,几行之后它要求将坐标解释为圆:

INSERT INTO cola_markets VALUES(
 4,
 'cola_d',
 SDO_GEOMETRY(
  2003,  -- 2-dimensional polygon
  NULL,
  NULL,
  SDO_ELEM_INFO_ARRAY(1,1003,4), -- one circle
  SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)
 )
);

请告诉我我的看法有什么问题。感谢阅读。

【问题讨论】:

    标签: oracle spatial


    【解决方案1】:

    看看下面的例子(2-7 from http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_objrelschema.htm#SPATL523

    SDO_GEOMETRY(
        2003,  -- two-dimensional polygon
        NULL,
        NULL,
        SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1), -- polygon with hole
        SDO_ORDINATE_ARRAY(2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4,
            7,5, 7,10, 10,10, 10,5, 7,5)
      )
    

    这也是一个 gtype 2003 但不同的 elem_info_array。 这里的 elem 信息告诉我们多边形有一个外环和一个内环。它还告诉我们在 sdo_ordinates 列表中外环坐标的停止位置以及内环坐标的开始位置。

    当你在做的时候,看看下一个例子 2-8。这里显示了一条具有直线段和圆弧的线。 Elem_info 告诉你这些在 sdo_ordinate 数组中的起始位置。

    【讨论】:

    • 可以理解有洞的多边形是二维多边形。但是,circle 怎么会是一个二维多边形呢?我真的不明白这里的概念。休息就好。感谢您的回答。
    • Oracle 文档将 1003 和 2003 称为多边形,但实际上它是任何具有内部和外部空间的封闭元素。
    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 2013-08-07
    • 2011-10-20
    • 2020-01-23
    • 1970-01-01
    • 2014-10-09
    • 2010-12-21
    • 2011-05-11
    相关资源
    最近更新 更多