Chapter 10. 拓扑学

Table of Contents
10.1. 拓扑类型
10.2. 拓扑域
10.3. 拓扑和拓扑几何管理
10.4. 拓扑统计信息管理
10.5. 拓扑构造器
10.6. 拓扑编辑器
10.7. 拓扑访问器
10.8. 拓扑处理
10.9. 拓扑几何构造器
10.10. 拓扑几何图形编辑器
10.11. Topo几何访问器
10.12. 拓扑几何图形输出
10.13. 拓扑空间关系

PostGIS拓扑类型和功能用于管理面、边和节点等拓扑对象。

Sandro Santilli在PostGIS Day巴黎2011会议上的演讲很好地概述了PostGIS的拓扑结构及其发展方向 使用PostGIS 2.0幻灯片的拓扑

Vincent Picavet对什么是拓扑、如何使用以及支持它的各种FOSS4G工具提供了很好的概要和概述 PostGIS拓扑PGConf EU 2012

基于拓扑的GIS数据库的一个示例是 美国人口普查拓扑集成地理编码和参考系统(TIGER) 数据库。如果您想尝试使用PostGIS拓扑并需要一些数据,请查看 Topology_Load_Tiger

PostGIS拓扑模块存在于以前的PostGIS版本中,但从未出现在官方的PostGIS文档中。在PostGIS 2.0.0中,主要的清理工作是删除其中所有不推荐使用的函数,修复已知的可用性问题,更好地记录特性和函数,添加新函数,并进行增强以更符合SQL-MM标准。

有关该项目的详细信息,请访问 PostGIS拓扑维基

与此模块关联的所有函数和表都安装在一个名为 topology

在SQL/MM标准中定义的函数以ST_为前缀,而特定于PostGIS的函数不带前缀。

默认情况下,从PostGIS 2.0开始构建拓扑支持,可以在构建时指定--不带-topology配置选项来禁用拓扑支持,如中所述 Chapter 2, PostGIS安装

10.1. 拓扑类型

Abstract

本节列出了由PostGIS Topology安装的PostgreSQL数据类型。注意:我们描述了这些函数的强制转换行为,这一点非常重要,尤其是在设计您自己的函数时。

getfaceedges_returntype — 由序列号和边号组成的复合类型。
TopoGeometry — 表示拓扑定义的几何图形的复合类型。
validatetopology_returntype — 由错误消息以及指示错误位置的id1和id2组成的复合类型。这是的返回类型 ValidateTopology

10.2. 拓扑域

Abstract

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

TopoElement — 通常用于标识拓扑几何组件的两个整数的数组。
TopoElementArray — TopoElement对象的数组。

10.3. 拓扑和拓扑几何管理

Abstract

本节列出了用于构建新拓扑方案、验证拓扑和管理TopGeometry列的拓扑函数

AddTopoGeometryColumn — 将拓扑几何图形列添加到现有表中,将此新列注册为topology.layer中的层,并返回新的layer_id。
DropTopology — 请谨慎使用:删除拓扑模式并从topology.topology表中删除其引用,并从GEOMETRY_COLUMNS表中删除对该模式中的表的引用。
DropTopoGeometryColumn — 从名为的表中删除地形几何列 table_name 在架构中 schema_name 并从topology.layer表中注销这些列。
Populate_Topology_Layer — 通过从topo表中读取元数据,将缺少的条目添加到topology.layer表中。
TopologySummary — 获取拓扑名称并提供拓扑中对象类型的汇总。
ValidateTopology — 返回一组validatetopology_returtype对象,这些对象详细说明了拓扑问题。
ValidateTopologyRelation — 返回有关无效拓扑关系记录的信息
FindTopology — 通过不同的方式返回拓扑记录。
FindLayer — 以不同的方式返回topology.layer记录。

10.4. 拓扑统计信息管理

Abstract

本节讨论拓扑构建过程中的数据库统计信息管理。

向拓扑中添加元素会触发许多数据库查询,以查找要拆分的现有边、添加节点并更新将使用新线条进行节点的边。因此,有关拓扑表中数据的统计数据是最新的,这一点很有用。

PostGIS拓扑填充和编辑功能不会自动更新统计数据,因为在拓扑中的每一次更改后更新统计数据都会被夸大,因此调用者有责任处理这一点。

[Note]

在自动真空处理完成之前启动的事务将看不到由自动真空更新的统计信息,因此长期运行的事务将需要运行分析自身,以使用更新的统计信息。

10.5. 拓扑构造器

Abstract

本节介绍用于创建新拓扑的拓扑功能。

CreateTopology — 创建一个新的拓扑模式,并在topology.topology表中注册该新模式。
CopyTopology — 复制拓扑结构(节点、边、面、层和拓扑几何)。
ST_InitTopoGeo — 创建新的拓扑方案,并将此新方案注册到topology。拓扑表和过程的详细信息摘要中。
ST_CreateTopoGeo — 将几何图形集合添加到给定的空拓扑中,并返回一条详细说明成功的消息。
TopoGeo_AddPoint — 使用公差将点添加到现有拓扑,并可能拆分现有边。
TopoGeo_AddLineString — 使用公差并可能拆分现有边/面将线串添加到现有拓扑。返回边标识符。
TopoGeo_AddPolygon — 使用公差并可能拆分现有边/面将多边形添加到现有拓扑。返回面部识别符。

10.6. 拓扑编辑器

Abstract

本节介绍用于添加、移动、删除和拆分边、面和节点的拓扑功能。所有这些函数都由ISO SQL/MM定义。

ST_AddIsoNode — 将隔离节点添加到拓扑中的面,并返回新节点的节点ID。如果Faces为空,仍会创建该节点。
ST_AddIsoEdge — 添加由几何图形定义的隔离边 alinestring 连接两个现有隔离节点的拓扑 anodeanothernode 并返回新边的边ID。
ST_AddEdgeNewFaces — 添加新边,如果这样做会分割一个面,则删除原始面并用两个新面替换它。
ST_AddEdgeModFace — 添加新边,如果这样做会拆分面,则修改原始面并添加新面。
ST_RemEdgeNewFace — 删除边,如果删除的边分隔两个面,则删除原始面并将其替换为新面。
ST_RemEdgeModFace — 删除一条边,如果删除的边分隔了两个面,则删除其中一个面并修改另一个边以占据两个面的空间。
ST_ChangeEdgeGeom — 更改边的形状,而不影响拓扑结构。
ST_ModEdgeSplit — 通过沿现有边创建新节点、修改原始边并添加新边来分割边。
ST_ModEdgeHeal — 通过删除连接两条边的节点、修改第一条边并删除第二条边来修复两条边。返回已删除节点的ID。
ST_NewEdgeHeal — 通过删除连接两条边的节点、删除两条边并将其替换为方向与提供的第一条边相同的边来修复两条边。
ST_MoveIsoNode — 将拓扑中的隔离节点从一点移动到另一点。如果是新的 apoint 几何体以抛出错误的节点的形式存在。返回Move的描述。
ST_NewEdgesSplit — 通过沿现有边创建新节点、删除原始边并将其替换为两条新边来分割边。返回连接新边而创建的新节点的ID。
ST_RemoveIsoNode — 删除隔离节点并返回操作说明。如果节点不是孤立的(是边的开始或结束),则会引发异常。
ST_RemoveIsoEdge — 删除隔离边并返回操作说明。如果边缘不是孤立的,则会引发异常。

10.7. 拓扑访问器

GetEdgeByPoint — 查找与给定点相交的边的边ID。
GetFaceByPoint — 查找与给定点相交的面。
GetFaceContainingPoint — 查找包含点的面。
GetNodeByPoint — 查找位于点位置的节点的node-id。
获取拓扑ID — 在给定拓扑名的情况下,返回topology.topology表中拓扑的ID。
获取拓扑SRID — 在给定拓扑名称的情况下,返回topology.topology表中的拓扑的SRID。
GetTopologyName — 在给定拓扑ID的情况下返回拓扑(架构)的名称。
ST_GetFaceEdges — 返回一组绑定的有序边 aface
ST_GetFaceGeometry — 返回给定拓扑中具有指定面ID的多边形。
GetRingEdges — 返回通过在给定的边上行走而满足的有符号边标识符的有序集。
GetNodeEdges — 返回关联到给定节点的一组有序边。

10.8. 拓扑处理

Abstract

本节介绍以非标准方式处理拓扑的函数。

多角化 — 查找并注册由拓扑边定义的所有面。
AddNode — 将点节点添加到指定拓扑架构中的节点表,并返回新节点的节点ID。如果point已经作为节点存在,则返回现有的nodeid。
AddEdge — 使用指定的线串几何图形将线串边添加到边表中,并将关联的起点和终点添加到指定拓扑模式的点节点表中,并返回新(或现有)边的边ID。
AddFace — 将面基本体注册到拓扑并获取其标识符。
ST_Simplify — 使用Douglas-Peucker算法返回给定拓扑几何体的简化几何体版本。

10.9. 拓扑几何构造器

Abstract

本节介绍用于创建新地形几何的拓扑函数。

CreateTopoGeom — 从拓扑元素数组创建新的地形几何对象-tg_type:1:[多]点,2:[多]线,3:[多]面,4:集合
ToTopGeom — 将简单几何图形转换为拓扑几何图形。
TopoElementArray_Agg — 返回一个 topoelementarray 对于一组Element_id,输入ARRAYS(TopoElements)。

10.10. 拓扑几何图形编辑器

Abstract

本节介绍用于编辑现有地形几何的拓扑功能。

ClearTopGeom — 清除地形几何图形的内容。
TopoGeom_addElement — 将元素添加到拓扑几何图形的定义。
TopoGeom_remElement — 从拓扑几何图形的定义中删除元素。
TopoGeom_addTopoGeom — 将一个拓扑几何图形的元素添加到另一个拓扑几何图形的定义中。
ToTopGeom — 将几何图形添加到现有的地形几何图形。

10.11. Topo几何访问器

GetTopoGeomElementArray — 返回一个 topoelementarray (拓扑元素数组),包含给定拓扑几何的拓扑元素和类型(基元元素)。
GetTopoGeomElements — 返回一组 topoelement 包含给定拓扑几何的拓扑元素_id、元素类型的对象(基本元素)。

10.12. 拓扑几何图形输出

AsGML — 返回拓扑几何的GML表示形式。
AsTopo JSON — 返回拓扑几何的TopOJSON表示。

10.13. 拓扑空间关系

Abstract

本节列出了用于检查地形几何和基本拓扑元素之间关系的拓扑函数

等于 — 如果两个拓扑几何由相同的拓扑基元组成,则返回True。
交点 — 如果两个拓扑几何中的任何一对基元相交,则返回True。