Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle GTYPE和SDO元素信息数组之间的差异_Oracle_Spatial - Fatal编程技术网

Oracle GTYPE和SDO元素信息数组之间的差异

Oracle GTYPE和SDO元素信息数组之间的差异,oracle,spatial,Oracle,Spatial,我正在学习oracle spatial数据库,但仍停留在SDO\U几何图形上。实际上,该对象具有以下结构: 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

我正在学习oracle spatial数据库,但仍停留在
SDO\U几何图形
上。实际上,该对象具有以下结构:

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_GTYPE
SDO_ELEM_INFO
SDO_GTYPE

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

SDO元素信息数组

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

我的问题是,我无法区分两者。几何体的类型不是我们解释坐标的方式吗?例如,查看以下
insert
query。它首先表示几何体是二维多边形,几行之后,它要求将坐标解释为圆:

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

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

看一看下面的示例(来自的2-7)

这也是一个gtype 2003,但是是一个不同的元素信息数组。 这里的元素信息告诉我们多边形有一个外圈和一个内圈。它还告诉我们sdo_坐标列表中外圈停止坐标的位置和内圈开始坐标的位置


当你在做这个的时候,看看下一个例子2-8。此处显示了一条直线,该直线具有直线段和圆弧。Elem_info告诉您每个孔在sdo_坐标阵列中的起始位置。

可以理解,带孔的多边形是二维多边形。但是,为什么圆是一个二维多边形呢?我不太明白这个概念。休息很好。感谢您的回答。Oracle文档将1003和2003称为多边形,但实际上它是具有内部和外部空间的任何闭合元素。
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)
  )