• 金仓数据库 KingbaseGIS 使用手册(9.1. 拓扑类型、9.2. 拓扑域函数、9.3. 拓扑和拓扑几何对象管理)


    9. 拓扑计算功能参考

    KGIS 的拓扑类型和函数用于管理拓扑结构,比如面、边界和点。KGIS 的拓扑类型遵守SQL/MM规范的函数都以ST_为前缀,KGIS自己的函数没有加上前缀。

    9.1. 拓扑类型

    9.1.1. getfaceedges_returntype

    getfaceedges_returntype — 一种复杂的类型,包括一个序列号和一个边界号。这种类型是函数ST_GetFaceEdges返回的。

    描述

    一种复杂的类型,包括一个序列号和一个边界号。这种类型是函数ST_GetFaceEdges返回的。

    1. sequence:是一个整型值。它引用定义在表topology.topology(该表定义拓扑的schema和SRID)的一个拓扑结构。

    2. edge:一个整型值,表示拓扑元素的边界的标识。

    9.1.2. TopoGeometry

    TopoGeometry —复合数据类型,用于定义几何类型对象的拓扑结构,可以称之为拓扑类型。

    描述

    一种复合数据类型,它引用一个指定的拓扑图层里的拓扑几何对象,有一个具体的类型和一个具体的ID。一个TopoGeometry类型包含的元素有:topology_id, layer_id, id integer, type integer 。

    1. topology_id是一个整型值。它引用定义在表topology.topology(该表定义拓扑的schema和SRID)的一个拓扑结构。

    2. layer_id:一个整型值,layer_id表示一个拓扑结合对象的某个图层。topology_id, layer_id组合起来提供了在topology.layers 表中的唯一主键约束。

    3. id:一个整型值,id是一个自动生成的序列,它唯一地定义一个拓扑图层中的拓扑几何对象。

    4. type :整型值,范围在1到4,用于定义几何对象类型: 1:[multi]point, 2:[multi]line, 3:[multi]poly, 4:collection 。

    转换方式

    这里列出的是自动转换方式,和该数据类型的显示转换一样。

    目标转换类型 转换方式

    自动转换

    geometry

    参考

    CreateTopoGeom

    9.1.3. validatetopology_returntype

    validatetopology_returntype — 一种复合数据类型,包含错误信息和id1、id2两个用于表示错误信息位置的字段。是校验拓扑结构有效性函数ValidateTopology的返回值。

    描述

    一种复合数据类型,包含错误信息和id1、id2两个用于表示错误信息位置的字段。是校验拓扑结构有效性函数ValidateTopology的返回值。

    1. error varchar类型,表示错误的类型

    目前错误类型枚举如下:coincident nodes, edge crosses node, edge not simple, edge end node geometry mis-match, edge start node geometry mismatch, face overlaps face,face within face 。

    1. id1 integer类型:表示错误信息中是哪个edge/face/node错了

    2. id2 integer类型:对于包含两个以上对象的数据(层级数据),该字段表示第二个edge/node的错误位置

    参考

    ValidateTopology

    9.2. 拓扑域函数

    9.2.1. TopoElement

    TopoElement — 一个包含两个整型数字的数组,通常用于标识一个拓扑几何对象的组成部分。

    描述

    一个包含两个int型元素的数组,其中id(第一个数组元素)和type(第二个数组元素)表示一个拓扑的要素,或者id(第一个数组元素)和layer(第二个数组元素)表示一个TopoGeometry 拓扑结构。这样成对的集合用于定义TopoGeometry对象(无论是简单的还是多层嵌套的)。

    样例

    SELECT te[1] AS id, te[2] AS type FROM( SELECT ARRAY[1,2]::topology.topoelement AS te ) f;
    id  | type
    ----+------
    1   | 2
    
    
    SELECT ARRAY[1,2]::topology.topoelement;
    te
    -------
    {1,2}
    
    
    -- Example of what happens when you try to case a 3 element array to topoelement
    -- NOTE: topoement has to be a 2 element array so fails dimension check
    SELECT ARRAY[1,2,3]::topology.topoelement;
    ERROR: value for domain topology.topoelement violates check constraint "dimensions"

    参考

    GetTopoGeomElements, TopoElementArray

    9.2.2. TopoElementArray

    TopoElementArray — 返回拓扑元素对象的数组

    描述

    一个包含1个或更多个TopoElement 类型对象的数组,一般用来传递TopoGeometry对象的多个组成部分。

    样例

    SELECT '{{1,2},{4,3}}'::topology.topoelementarray As tea;
          tea
    ---------------
    {{1,2},{4,3}}
    
    -- more verbose equivalent --
    
    SELECT ARRAY[ARRAY[1,2], ARRAY[4,3]]::topology.topoelementarray As tea;
          tea
    ---------------
    {{1,2},{4,3}}
    
    
    --using the array agg function packaged with topology --
    
    SELECT topology.TopoElementArray_Agg(ARRAY[e,t]) As tea
    FROM generate_series(1,4) As e CROSS JOIN generate_series(1,3) As t;
                                        tea
    ---------------------------------------------------------------------------
    {{1,1},{2,1},{3,1},{4,1},{1,2},{2,2},{3,2},{4,2},{1,3},{2,3},{3,3},{4,3}}
    
    
    SELECT '{{1,2,4},{3,4,5}}'::topology.topoelementarray As tea;
    ERROR: value for domain topology.topoelementarray violates check constraint "dimensions"

    参考

    TopoElement, GetTopoGeomElementArray, TopoElementArray_Agg

    9.3. 拓扑和拓扑几何对象管理

    9.3.1. AddTopoGeometryColumn

    AddTopoGeometryColumn — 把一个topogeometry类型列添加到一个已经存在的表中,并且把这个列注册到系统表topology.layer中,然后返回layer_id

    用法

    text AddTopoGeometryColumn(varchar topology_name, varchar schema_name,varchar table_name, varchar column_name,varchar feature_type);
    text AddTopoGeometryColumn(varchar topology_name, varchar schema_name,varchar table_name, varchar column_name,varchar feature_type, integer child_layer);

    描述

    每一个TopoGeometry对象属于一个指定拓扑结构的指定图层(layer)。 在创建TopoGeometry类型对象之前,需要先创建它的TopologyLayer(拓扑图层)。 一个拓扑图层与它的拓扑特征表相关联,它也包含类型和隐含的信息。创建使用函数AddTopoGeometryColumn()创建一个图层。 这个函数会把列添加到表中,并且在系统表topology.layer中添加一条改列的记录信息。 如果不指定参数child_layer(或者把它设置为NULL),这个图层将会包含基本的TopoGeometries对象(有原始的拓扑元素组成), 如果指定了这个参数那么这个图层将会包含嵌套的TopoGeometries(包含child_layer对应的TopoGeometries)。 一旦创建了图层(图层的ID由函数AddTopoGeometryColumn返回),就已经做好了在图层里面创建好TopoGeometry对象的准备了。

    参数feature_types的有效值有: POINT, LINE, POLYGON, COLLECTION 。

    样例

    -- 注意 for this example we created our new table in the ma_topo schema
    -- though we could have created it in a different schema
    -- in which case topology_name and schema_name would be different
    
    CREATE SCHEMA ma;
    CREATE TABLE ma.parcels(gid serial, parcel_id varchar(20) PRIMARY KEY, address text);
    SELECT topology.AddTopoGeometryColumn('ma_topo', 'ma', 'parcels', 'topo', 'POLYGON');
    CREATE SCHEMA ri;
    CREATE TABLE ri.roads(gid serial PRIMARY KEY, road_name text);
    SELECT topology.AddTopoGeometryColumn('ri_topo', 'ri', 'roads', 'topo', 'LINE');

    参考

    CreateTopology, CreateTopoGeom

    9.3.2. DropTopology

    DropTopology — 使用警告:这个函数会删除一个topology schema,并且删除该schema与系统表topology.topology和geometry_columns之间的外键引用关系。

    用法

    integer DropTopology(varchar topology_schema_name);

    描述

    这个函数会删除一个topology schema,并且删除该schema与系统表topology.topology和geometry_columns之间的外键引用关系。这个函数应该谨慎使用,因为它会损坏关系的数据。如果这个schema不存在了,它只会删除使用该schema的引用入口。

    样例

    假设数据库中存在名为“ma_topo”的topology schema

    -- Cascade drops the ma_topo schema and removes all references to it
    -- in topology.topology and geometry_columns.
    SELECT topology.DropTopology('ma_topo');

    参考

    9.3.3. DropTopoGeometryColumn

    DropTopoGeometryColumn — 从schema为参数schema_name表名为参数table_name的表中删除一个topogeometry类型的列,并且把这个列的注册信息从系统表topology.layer中删除。

    用法

    text DropTopoGeometryColumn(varchar schema_name, varchar table_name, varchar column_name);

    描述

    从schema为参数schema_name表名为参数table_name的表中删除一个topogeometry类型的列,并且把这个列的注册信息从系统表topology.layer中删除,同时返回删除状态。 注意:它首先将所有值设置为空,然后删除循环引用完整性约束。

    样例

    假设数据库中存在名为“ma_topo”的topology schema,其中包含名为“parcel_topo” 的表,表中包含名为“topo”的列:

    SELECT topology.DropTopoGeometryColumn('ma_topo', 'parcel_topo','topo');

    参考

    AddTopoGeometryColumn

    9.3.4. TopologySummary

    TopologySummary — 根据一个topology name名称,提供一个topology对象里面所有对象类型的概括统计。

    用法

    text TopologySummary(varchar topology_schema_name);

    描述

    根据一个topology name名称,提供一个topology对象里面所有对象类型的概括统计。

    样例

    假设数据库中有一个名为“city_data”的topology schema,且其中包含某城市的拓扑数据:

    SELECT topology.topologysummary('city_data');
    topologysummary
    --------------------------------------------------------
    Topology city_data (329), SRID 4326, precision: 0
    
    22 nodes, 24 edges, 10 faces, 29 topogeoms in 5 layersLayer 1, type
    Polygonal (3), 9 topogeoms
    
    Deploy: features.land_parcels.featureLayer 2, type Puntal (1), 8
    topogeoms
    
    Deploy: features.traffic_signs.feature Layer 3, type Lineal (2), 8
    topogeoms Deploy: features.city_streets.feature
    
    Layer 4, type Polygonal (3), 3 topogeoms
    
    Hierarchy level 1, child layer 1
    
    Deploy: features.big_parcels.feature Layer 5, type Puntal (1), 1
    topogeoms Hierarchy level 1, child layer 2 Deploy:
    features.big_signs.feature

    参考

    Topology_Load_Tiger

    9.3.5. ValidateTopology

    ValidateTopology — 返回类型为validatetopology_returntype的记录集,用于对topology结构的有效性检查结果。

    用法

    setof validatetopology_returntype ValidateTopology(varchar topology_schema_name);

    描述

    返回类型为validatetopology_returntype的记录集,用于对topology结构的有效性检查结果。 参考validatetopology_returntype获取所有可能的错误类别。

    样例

    假设数据库中有一个名为“ma_topo”的topology schema,且其中包含拓扑数据,则函数输出类似下列格式:

    SELECT * FROM
    topology.ValidateTopology('ma_topo');
    
    error              | id1 | id2
    -------------------+-----+-----
    face without edges | 0   |

    参考

    validatetopology_returntype, Topology_Load_Tiger

  • 相关阅读:
    Articulate360在线学习课件制作工具
    新de世界
    基于遗传算法的大规模电动汽车充电行为优化
    数据库课件= =
    论文笔记:Deep Representation Learning for Trajectory Similarity Computation
    机器学习基础之《回归与聚类算法(5)—分类的评估方法》
    Java应用打包成Docker镜像
    Tomcat详解
    Python21天学习挑战赛Day(20)·selenium
    不允许还有Java程序员不了解BlockingQueue阻塞队列的实现原理
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126360745