KGIS 的拓扑类型和函数用于管理拓扑结构,比如面、边界和点。KGIS 的拓扑类型遵守SQL/MM规范的函数都以ST_为前缀,KGIS自己的函数没有加上前缀。
getfaceedges_returntype — 一种复杂的类型,包括一个序列号和一个边界号。这种类型是函数ST_GetFaceEdges返回的。
描述
一种复杂的类型,包括一个序列号和一个边界号。这种类型是函数ST_GetFaceEdges返回的。
sequence:是一个整型值。它引用定义在表topology.topology(该表定义拓扑的schema和SRID)的一个拓扑结构。
edge:一个整型值,表示拓扑元素的边界的标识。
TopoGeometry —复合数据类型,用于定义几何类型对象的拓扑结构,可以称之为拓扑类型。
描述
一种复合数据类型,它引用一个指定的拓扑图层里的拓扑几何对象,有一个具体的类型和一个具体的ID。一个TopoGeometry类型包含的元素有:topology_id, layer_id, id integer, type integer 。
topology_id是一个整型值。它引用定义在表topology.topology(该表定义拓扑的schema和SRID)的一个拓扑结构。
layer_id:一个整型值,layer_id表示一个拓扑结合对象的某个图层。topology_id, layer_id组合起来提供了在topology.layers 表中的唯一主键约束。
id:一个整型值,id是一个自动生成的序列,它唯一地定义一个拓扑图层中的拓扑几何对象。
type :整型值,范围在1到4,用于定义几何对象类型: 1:[multi]point, 2:[multi]line, 3:[multi]poly, 4:collection 。
转换方式
这里列出的是自动转换方式,和该数据类型的显示转换一样。
目标转换类型 转换方式 | 自动转换 |
---|---|
geometry |
参考
CreateTopoGeom
validatetopology_returntype — 一种复合数据类型,包含错误信息和id1、id2两个用于表示错误信息位置的字段。是校验拓扑结构有效性函数ValidateTopology的返回值。
描述
一种复合数据类型,包含错误信息和id1、id2两个用于表示错误信息位置的字段。是校验拓扑结构有效性函数ValidateTopology的返回值。
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 。
id1 integer类型:表示错误信息中是哪个edge/face/node错了
id2 integer类型:对于包含两个以上对象的数据(层级数据),该字段表示第二个edge/node的错误位置
参考
ValidateTopology
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
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
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
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');
参考
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
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
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