拓扑类型

本节列出了 oscargis Topology 安装的数据类型和域。域可以像对象类型一样用作函数或表列的返回对象。 域和类型之间的区别在于,域是绑定了检查约束的现有类型。

类型名 表示
getfaceedges_returntype 由序号和边号组成的复合类型。
TopoGeometry 表示拓扑定义的几何图形的复合类型。
validatetopology_returntype 复合类型,由错误消息以及表示错误位置的 id1 和 id2 组成。
TopoElement 一个由 2 个整数组成的数组,用于表示简单或分层拓扑几何的一个组件
TopoElementArray TopoElement 对象的数组

getfaceedges_returntype

由序列号和边号组成的复合类型。

CREATE TYPE TOPOLOGY.GETFACEEDGES_RETURNTYPE AS(
  SEQUENCE INTEGER,
  EDGE INTEGER
);
  • sequence是一个整数:指的是在topology.topology表中定义的拓扑,该表定义了拓扑架构和srid。
  • edge是一个整数:边的标识号。

TopoGeometry

一个复合类型,它引用了特定拓扑层中的拓扑几何图形,具有特定的类型和特定的标识符。TopoGeometry 的元素包括属性:topology_id、layer_id、id 整数和 type 整数。

CREATE TYPE TOPOLOGY.TOPOGEOMETRY AS(
  TOPOLOGY_ID INTEGER,
  LAYER_ID INTEGER,
  ID INTEGER,
  TYPEID INTEGER -- 1: [MULTI]POINT, 2: [MULTI]LINE,
             -- 3: [MULTI]POLYGON, 4: COLLECTION
);
  • topology_id 是一个整数:指的是在topology.topology 表中定义的拓扑,该表定义了拓扑架构和srid。
  • layer_id (整数):拓扑几何所属的图层表中的layer_id。 topology_id 和 layer_id 的组合唯一地引用了拓扑图层表。
  • id 是一个整数:id 是自动生成的序列号,唯一定义相应拓扑层中的主题几何图形。
  • type输入 1 - 4 之间的整数,定义几何类型:1:[多]点、2:[多]线、3:[多]多边形、4:集合

validatetopology_returntype

由错误消息和两个整数组成的复合类型。ValidateTopology函数返回一组值来表示验证错误,并返回 id1 和 id2 来表示错误中涉及的拓扑对象的 id。

CREATE TYPE TOPOLOGY.VALIDATETOPOLOGY_RETURNTYPE AS(
  ERROR varchar,
  id1 integer,
  id2 integer
);
  • error 为 varchar:表示错误类型。当前的错误描述符有:重合节点、边交叉节点、边不简单、边结束节点几何形状不匹配、边起始节点几何形状不匹配、面重叠面、面内面,
  • id1 是一个整数:表示错误的边/面/节点的标识符。
  • id2 是一个整数:对于涉及 2 个对象的错误,表示次要边缘/或节点

TopoElement

  • 一个由 2 个整数组成的数组,用于表示简单或分层TopoGeometry的一个组件。
  • 对于简单的 TopoGeometry,数组的第一个元素表示拓扑基元的标识符,第二个元素表示其类型(1:节点、2:边、3:面)。 在分层 TopoGeometry 的情况下,数组的第一个元素表示子 TopoGeometry 的标识符,第二个元素表示其层标识符。
CREATE DOMAIN TOPOELEMENT AS integer[]
  CONSTRAINT DIMENSIONS CHECK (
    array_upper(VALUE, 2) IS NULL
    AND array_upper(VALUE, 1) = 2
  )CONSTRAINT lower_dimension CHECK (
    array_lower(VALUE, 1) = 1
  )CONSTRAINT type_range CHECK (
    VALUE[2] > 0
  );

TopoElementArray

  • 1 个或多个 TopoElement 对象的数组,通常用于传递 TopoGeometry 对象的组件。
CREATE DOMAIN TOPOELEMENTARRAY AS integer[][]
  CONSTRAINT DIMENSIONS CHECK (
    array_upper(VALUE, 2) IS NOT NULL
    AND array_upper(VALUE, 2) = 2
    AND array_upper(VALUE, 3) IS NULL
  );