GTYPE和SDO_ELEM_INFO_ARRAY之间的区别

时间:2016-12-08 16:36:30

标签: oracle spatial

我正在学习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规范的几何对象模型中指定的几何类型(Surfaces除外)。

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)
 )
);

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

1 个答案:

答案 0 :(得分:2)

查看以下示例(来自http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_objrelschema.htm#SPATL523的2-7)

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。 这里的元素信息告诉我们多边形有一个外环和一个内环。它还告诉我们sdo_ordinates列表中外环停止点的坐标和内环坐标开始的位置。

当你在这里时,看看下一个例子2-8。这里给出了一条直线段和圆弧线。 Elem_info告诉你每个开始在sdo_ordinate数组中的位置。