Topology拓扑_3:拓扑和拓扑几何管理

3. 拓扑和拓扑几何管理

3.1. AddTopoGeometryColumn

AddTopoGeometryColumn — 向现有表中添加一个拓扑几何列,并将这个新列注册为拓扑中的一个层。 并返回新的layer_id。

3.1.1. 概要

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

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

3.1.2. 描述

每个TopoGeometry对象都属于特定拓扑的特定层。 在创建TopoGeometry对象之前,您需要创建它的TopologyLayer。 拓扑层是特征表与拓扑的关联。 它还包含类型和层次结构信息。 我们使用AddTopoGeometryColumn()函数创建一个层:

此函数将向表中添加请求的列,并向拓扑中添加记录。 层表与所有给定的信息。

如果不指定child_layer,该层将包含基本拓扑几何(由基本拓扑元素组成)。 否则,该层将包含分层拓扑几何(由来自child_layer的拓扑几何组成)。

一旦创建了层(它的id由AddTopoGeometryColumn函数返回),就可以在其中构造TopoGeometry对象了

有效的feature_type是:POINT, LINE, POLYGON, COLLECTION

3.1.3. 样例

-- 注意,在本例中,我们在ma_topo模式中创建了新表  
-- 尽管我们可以在不同的模式中创建它——在这种情况下,topology_name和schema_name将是不同的  
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');

3.2. DropTopology

DropTopology — 谨慎使用:删除拓扑模式并从拓扑中删除其引用。 拓扑表,并从geometry_columns表中引用到该模式中的表。

3.2.1. 概要

integer DropTopology(varchar topology_schema_name);

3.2.2. 描述

删除拓扑模式并从拓扑中删除其引用。 拓扑表和对该模式中来自geometry_columns表的表的引用。 使用此函数时应小心,因为它可能会破坏您所关心的数据。 如果模式不存在,它只是删除命名模式中的引用条目。

3.2.3. 样例

  • 级联删除ma_topo模式,并删除拓扑中对它的所有引用。 拓扑和geometry_columns。
SELECT topology.DropTopology('ma_topo');

3.3. DropTopoGeometryColumn

DropTopoGeometryColumn — 在schema_name模式中从名为table_name的表中删除拓扑几何列,并从topology.layer中表注销这些列。

3.3.1. 概要

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

3.3.2. 描述

从模式schema_name中名为table_name的表中删除拓扑几何学列,并从拓扑表中注销这些列。 返回drop状态的摘要。 注意:它首先将所有值设置为NULL,然后删除以绕过参考完整性检查。

3.3.3. 样例

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

3.4. Populate_Topology_Layer

Populate_Topology_Layer — 将缺少的条目添加到拓扑中。 从拓扑表中读取元数据。

3.4.1. 概要

setof record Populate_Topology_Layer();

3.4.2. 描述

将缺少的条目添加到拓扑中。 通过检查表上的拓扑约束来分层表。 此函数用于在用拓扑数据恢复模式后修复拓扑编目中的条目。

它返回创建的条目列表。 返回的列是schema_name, table_name, feature_column。

3.4.3. 样例

SELECT CreateTopology('strk_topo');
CREATE SCHEMA strk;
CREATE TABLE strk.parcels(gid serial, parcel_id varchar(20) PRIMARY KEY, address text);
SELECT topology.AddTopoGeometryColumn('strk_topo', 'strk', 'parcels', 'topo', 'POLYGON');

-- 这将不会返回任何记录,因为该功能已经注册  
SELECT * FROM topology.Populate_Topology_Layer();

-- 重建
TRUNCATE TABLE topology.layer;

SELECT * FROM topology.Populate_Topology_Layer();
SELECT topology_id,layer_id, schema_name As sn, table_name As tn, feature_column As fc FROM topology.layer;
schema_nametable_namefeature_column
strkparcelstopo
topology_idlayer_idsntnfc
22strkparcelstopo

3.5 TopologySummary

TopologySummary — 接受拓扑名称,并提供拓扑中对象类型的汇总

3.5.1. 概要


text TopologySummary(varchar topology_schema_name);

3.5.2. 描述

接受拓扑名称并提供拓扑中对象类型的汇总

3.5.3. 样例

SELECT topology.topologysummary('city_data');
topologysummary
Topology city_data (329), SRID 4326, precision: 0 22 nodes, 24 edges, 10 faces, 29 topogeoms in 5 layers

Layer 1, type Polygonal (3), 9 topogeoms Deploy: features.land_parcels.feature
Layer 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|

3.6. ValidateTopology

ValidateTopology -返回一组validatetopology_returntype对象,这些对象详细描述了拓扑问题

3.6.1. 概要

setof validatetopology_returntype ValidateTopology(varchar topology_schema_name);

3.6.2. 描述

返回一组validatetopology_returntype对象,该对象详细描述了拓扑问题。 可能的错误列表和返回的id代表如下所示:

Errorid1id2
edge crosses node(边缘交叉节点)edge_idnode_id
invalid edge(无效的边缘)edge_idnull
edge not simple(边不简单)edge_idnull
edge crosses edge(边缘交叉边缘)edge_idedge_id
edge start node geometry mis-match(边缘开始节点几何不匹配)edge_idnode_id
edge end node geometry mis-match(边缘末端节点几何不匹配)edge_idnode_id
face without edges(没有边缘的面)face_idnull
face has no rings(面不包含环)face_idnull
face overlaps face(面重叠)face_idface_id
face within face inner(面包含)face_idouter face_id

3.6.3. 样例

SELECT * FROM topology.ValidateTopology('ma_topo');
errorid1id2
face without edges0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自己的九又四分之三站台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值