PostGIS 3.5 Topology Cheatsheet

此版本中的新功能 1在此版本中得到增强 2   需要 GEOS (3.9,3.10,3.11,3.12) 或更高版本 g3.9  
拓扑类型
getfaceedges_returntype    由序号和边号组成的复合类型。
TopoGeometry    表示拓扑定义的几何图形的复合类型。
validatetopology_returntype    复合类型,由错误消息以及表示错误位置的 id1 和 id2 组成。 这是 ValidateTopology 的返回类型。

拓扑域
TopoElement    一个由 2 个整数组成的数组,用于表示简单或分层拓扑几何的一个组件。
TopoElementArray    TopoElement 对象的数组。

拓扑和拓扑几何管理
AddTopoGeometryColumn    将拓扑几何列添加到现有表中,将此新列注册为topology.layer 中的图层并返回新的layer_id。
  1. topology_name, schema_name, table_name, column_name, feature_type
  2. topology_name, schema_name, table_name, column_name, feature_type, child_layer
RenameTopoGeometryColumn (layer_table, feature_column, new_name)    重命名拓扑几何列
DropTopology (topology_schema_name)    谨慎使用:删除拓扑模式并从topology.topology 表中删除其引用,并从geometry_columns 表中删除对该模式中表的引用。
RenameTopology (old_name, new_name)    重命名拓扑
DropTopoGeometryColumn (schema_name, table_name, column_name)    从架构 schema_name 中名为 table_name 的表中删除拓扑几何列,并从 topology.layer 表中取消注册这些列。
Populate_Topology_Layer ()    通过从拓扑表读取元数据,将缺失的条目添加到topology.layer表中。
TopologySummary (topology_schema_name)    获取拓扑名称并提供拓扑中对象类型的汇总总数。
ValidateTopology (toponame, bbox)    返回一组 validatetopology_returntype 对象,详细说明拓扑问题。
ValidateTopologyRelation (toponame)    返回有关无效拓扑关系记录的信息
FindTopology    通过不同的方式返回拓扑记录。
  1. topogeom
  2. layerTable, layerColumn
  3. layerSchema, layerTable, layerColumn
  4. topoName
  5. id
FindLayer    通过不同的方式返回topology.layer记录。
  1. tg
  2. layer_table, feature_column
  3. schema_name, table_name, feature_column
  4. topology_id, layer_id

拓扑统计管理

拓扑构造器
CreateTopology    创建一个新的拓扑架构并将其注册到topology.topology 表中。
  1. topology_schema_name
  2. topology_schema_name, srid
  3. topology_schema_name, srid, prec
  4. topology_schema_name, srid, prec, hasz
CopyTopology (existing_topology_name, new_name)    将拓扑(节点、边、面、层和拓扑几何)的副本复制到新模式中
ST_InitTopoGeo  mm (topology_schema_name)    创建一个新的拓扑架构并将其注册到topology.topology 表中。
ST_CreateTopoGeo  mm (atopology, acollection)    将几何图形集合添加到给定的空拓扑并返回详细说明成功的消息。
TopoGeo_AddPoint (atopology, apoint, tolerance)    使用容差并可能分割现有边向现有拓扑添加点。
TopoGeo_AddLineString (atopology, aline, tolerance)    使用公差并可能分割现有边/面,将线串添加到现有拓扑。 返回边标识符。
TopoGeo_AddPolygon (atopology, apoly, tolerance)    使用公差并可能分割现有边/面将多边形添加到现有拓扑。 返回面标识符。

拓扑编辑器
ST_AddIsoNode  mm (atopology, aface, apoint)    将一个孤立的节点添加到拓扑结构中的一个面,并返回新节点的节点ID。如果"face"为空(null),仍然会创建节点。
ST_AddIsoEdge  mm (atopology, anode, anothernode, alinestring)    将由几何 alinestring 定义的孤立边添加到连接两个现有孤立节点anode和anothernode的拓扑,并返回新边的边id。
ST_AddEdgeNewFaces  mm (atopology, anode, anothernode, acurve)    添加新边,如果这样做会分割一个面,请删除原始面并用两个新面替换它。
ST_AddEdgeModFace  mm (atopology, anode, anothernode, acurve)    添加新边,如果这样做会分割面,则修改原始面并添加新面。
ST_RemEdgeNewFace  mm (atopology, anedge)    删除一条边,如果删除的边将两个面分开,则删除原始面并用新面替换它们。
ST_RemEdgeModFace  mm (atopology, anedge)    删除一条边,如果该边将两个面分开,则删除一个面并修改另一个面以覆盖两个面的空间。
ST_ChangeEdgeGeom  mm (atopology, anedge, acurve)    改变边的形状而不影响拓扑结构。
ST_ModEdgeSplit  mm (atopology, anedge, apoint)    通过沿现有边创建新节点、修改原始边并添加新边来分割边。
ST_ModEdgeHeal  mm (atopology, anedge, anotheredge)    通过删除连接两条边的节点、修改第一条边并删除第二条边来修复两条边。 返回已删除节点的 id。
ST_NewEdgeHeal  mm (atopology, anedge, anotheredge)    通过删除连接两条边的节点、删除两条边并用方向与提供的第一条边相同的边替换它们来修复两条边。
ST_MoveIsoNode  mm (atopology, anode, apoint)    在拓扑结构中将一个孤立节点从一个点移动到另一个点。如果新的apoint几何对象已存在作为一个节点,则会抛出错误。返回移动的描述。
ST_NewEdgesSplit  mm (atopology, anedge, apoint)    通过沿现有边创建新节点、删除原始边并用两条新边替换它来分割边。 返回创建的连接新边的新节点的 id。
ST_RemoveIsoNode  mm (atopology, anode)    删除孤立节点并返回操作描述。 如果节点不是孤立的(是边的开始或结束),则会引发异常。
ST_RemoveIsoEdge  mm (atopology, anedge)    删除孤立的边并返回操作的描述。 如果边缘未被隔离,则会引发异常。

拓扑访问器
GetEdgeByPoint (atopology, apoint, tol1)    查找与给定点相交的边的边 ID。
GetFaceByPoint (atopology, apoint, tol1)    查找与给定点相交的面。
GetFaceContainingPoint (atopology, apoint)    查找包含点的面。
GetNodeByPoint (atopology, apoint, tol1)    查找某个点位置处节点的节点 ID。
GetTopologyID (toponame)    返回topology.topology表中给定拓扑名称的拓扑的id。
GetTopologySRID (toponame)    返回拓扑表中给定拓扑名称的拓扑的 SRID。
GetTopologyName (topology_id)    返回给定拓扑 ID 的拓扑(架构)名称。
ST_GetFaceEdges  mm (atopology, aface)    返回一组有序的边,这些边界绑定了aface。
ST_GetFaceGeometry  mm (atopology, aface)    返回给定拓扑中具有指定面 ID 的多边形。
GetRingEdges (atopology, aring, max_edges=null)    返回按顺序排列的边标识符集合,这些标识符是通过沿给定边的一侧行走时遇到的。
GetNodeEdges (atopology, anode)    返回与给定节点相关的一组有序边。

拓扑处理
Polygonize (toponame)    查找并注册由拓扑边定义的所有面。
AddNode (toponame, apoint, allowEdgeSplitting=false, computeContainingFace=false)    将点节点添加到指定拓扑模式的节点表中,并返回新节点的nodeid。 如果点已经作为节点存在,则返回现有的nodeid。
AddEdge (toponame, aline)    使用指定的线串几何将线串边添加到边表,并将关联的起点和终点添加到指定拓扑方案的点节点表,并返回新(或现有)边的edgeid。
AddFace (toponame, apolygon, force_new=false)    将面基元注册到拓扑并获取其标识符。
ST_Simplify (tg, tolerance)    使用 Douglas-Peucker 算法返回给定 TopoGeometry 的“简化”几何版本。
RemoveUnusedPrimitives (topology_name, bbox)    删除定义现有 TopoGeometry 对象不需要的拓扑基元。

拓扑几何构造函数
CreateTopoGeom    从拓扑元素数组创建一个新的拓扑几何对象 - tg_type: 1:[多]点, 2:[多]线, 3:[多]多边形, 4:集合
  1. toponame, tg_type, layer_id, tg_objs
  2. toponame, tg_type, layer_id
toTopoGeom    将简单几何图形转换为拓扑几何图形。
  1. geom, toponame, layer_id, tolerance
  2. geom, topogeom, tolerance
TopoElementArray_Agg (tefield)    返回一组 element_id、类型数组 (topoelements) 的 topoelementarray。
TopoElement (topo)    将拓扑几何转换为拓扑元素。

拓扑几何编辑器
clearTopoGeom (topogeom)    清除拓扑几何的内容。
TopoGeom_addElement (tg, el)    将元素添加到 TopoGeometry 的定义中。
TopoGeom_remElement (tg, el)    从 TopoGeometry 的定义中删除元素。
TopoGeom_addTopoGeom (tgt, src)    将一个 TopoGeometry 的元素添加到另一个 TopoGeometry 的定义中。
toTopoGeom    将几何形状添加到现有拓扑几何图形中。

拓扑几何访问器
GetTopoGeomElementArray    返回一个topoelementarray(包含拓扑元素的数组),其中包含给定TopoGeometry的拓扑元素和类型(原始元素)。
  1. toponame, layer_id, tg_id
  2. tg
GetTopoGeomElements    返回一组 topoelement 对象,其中包含给定 TopoGeometry(原始元素)的拓扑 element_id、element_type。
  1. toponame, layer_id, tg_id
  2. tg
ST_SRID  mm (tg)    返回拓扑几何的空间参考标识符。

拓扑几何输出
AsGML    返回拓扑几何的 GML 表示形式。
  1. tg
  2. tg, nsprefix_in
  3. tg, visitedTable
  4. tg, visitedTable, nsprefix
  5. tg, nsprefix_in, precision, options
  6. tg, nsprefix_in, precision, options, visitedTable
  7. tg, nsprefix_in, precision, options, visitedTable, idprefix
  8. tg, nsprefix_in, precision, options, visitedTable, idprefix, gmlversion
AsTopoJSON (tg, edgeMapTable)    返回拓扑几何的 TopoJSON 表示形式。

拓扑空间关系
Equals  3d (tg1, tg2)    如果两个拓扑几何由相同的拓扑基元组成,则返回 true。
Intersects  3d (tg1, tg2)    如果两个拓扑几何中的任何一对图元相交,则返回 true。

导入和导出拓扑