拓扑编辑器函数

ST_AddIsoNode

ST_AddIsoNode — 将一个孤立的节点添加到拓扑结构中的一个面,并返回新节点的节点ID。如果"face"为空(null),仍然会创建节点。

  • 如果点几何的空间参考系 (srid) 与拓扑不同、 apoint不是点几何、该点为空或该点与现有边相交(即使在边界处),则例外情况是抛出。 如果该点已作为节点存在,则会引发异常。
  • 如果aface不为null并且apoint不在该面内,则抛出异常。

语法

st_addisonode ::=

参数

atopology

varchar类型。现有拓扑名

aface

integer类型。

apoint

geometry类型。

返回值

返回值为 integer 类型。

示例

SELECT topology.ST_AddIsoNode('sqlmm_topology', NULL, 'POINT(0 0)');
ST_ADDISONODE(int)      |
------------------------
1                       |
总数目:1

ST_AddIsoEdge

ST_AddIsoEdge — 将由几何 alinestring 定义的孤立边添加到连接两个现有孤立节点anode和anothernode的拓扑,并返回新边的边id。

  • 如果alinestring几何的空间参考系统 (SRID) 与拓扑不同、不是点几何、点为 NULL 或点与现有边(包括其边界)交互,则会引发异常。 此外,如果该点已作为节点存在,则会引发异常。
  • 如果alinestring不在anode和anothernode所属的面内,那么将抛出一个异常。
  • 如果anode和anothernode不是alinestring的起始点和结束点,则会抛出异常。

语法

st_addisoedge ::=

参数

atopology

varchar类型。现有拓扑名

anode

integer类型。

anothernode

integer类型。

alinestring

geometry类型。

返回值

返回值为 integer 类型。

示例

SELECT topology.ST_AddIsoEdge('sqlmm_topology', 1, 2, 'LINESTRING(0 0, 2 1, 10 5, 10 0)');
ST_ADDISOEDGE(int)      |
------------------------
2                       |
总数目:1

ST_AddEdgeNewFaces

ST_AddEdgeNewFaces — 添加新边,如果这样做会分割一个面,请删除原始面并用两个新面替换它。返回新添加的边的 id。

语法

st_addedgenewfaces ::=

参数

atopology

varchar类型。现有拓扑名

anode

integer类型。

anothernode

integer类型。

acurve

geometry类型。

返回值

返回值为 integer 类型。

示例

SELECT 1 as id, topology.st_addedgenewfaces('city_data', 14, 18, 'LINESTRING(21 14, 35 22)') as edge_id INTO newedge;

ST_AddEdgeModFace

ST_AddEdgeModFace — 添加新边,如果这样做会分割面,则修改原始面并添加新面。

语法

st_addedgemodface ::=

参数

atopology

varchar类型。现有拓扑名

anode

integer类型。

anothernode

integer类型。

acurve

geometry类型。

返回值

返回值为 integer 类型。

示例

SELECT 1 as id, topology.ST_AddEdgeModFace('city_data', 14, 18, 'LINESTRING(21 14, 35 22)') as edge_id INTO newedge; 

ST_RemEdgeNewFace

ST_RemEdgeNewFace — 删除一条边,如果删除的边将两个面分开,则删除原始面并用新面替换它们。

语法

st_remedgenewface ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

返回值

返回值为 integer 类型。

示例

SELECT 'RN(25)', topology.ST_RemEdgeNewFace('city_data', 25);
?COLUMN?(varchar)      |ST_REMEDGENEWFACE(int)      |
---------------------------------------------------
RN(25)                 |null                        |
总数目:1

ST_RemEdgeModFace

ST_RemEdgeModFace — 删除一条边,如果该边将两个面分开,则删除一个面并修改另一个面以覆盖两个面的空间。

语法

st_remedgemodface ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

返回值

返回值为 integer 类型。

示例

SELECT 'RM(4)', topology.ST_RemEdgeModFace('city_data', 4);
?COLUMN?(varchar)      |ST_REMEDGEMODFACE(int)      |
---------------------------------------------------
RM(4)                  |0                           |
总数目:1

ST_ChangeEdgeGeom

ST_ChangeEdgeGeom — 改变边的形状而不影响拓扑结构。

语法

st_changeedgegeom ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

acurve

integer类型。如果acurve几何对象的空间参考系统(SRID)与拓扑结构不同,那么将抛出异常。如果新的acurve不是简单线(simple line),则会抛出错误。

返回值

返回值为 integer 类型。

示例

SELECT 'T1', topology.ST_ChangeEdgeGeom('city_data', 25, 'LINESTRING(9 35, 11 33, 13 35)');
?COLUMN?(varchar)      |ST_CHANGEEDGEGEOM(text)      |
----------------------------------------------------
T1                     |Edge 25 changed              |
总数目:1

ST_ModEdgeSplit

ST_ModEdgeSplit — 通过沿现有边创建新节点、修改原始边并添加新边来分割边。

语法

st_modedgesplit ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

apoint

integer类型。

返回值

返回值为 integer 类型。新添加的节点的标识符。

示例

SELECT 'noniso', topology.ST_ModEdgeSplit('city_data', 10, 'SRID=4326;POINT(28 14)');
?COLUMN?(varchar)      |ST_MODEDGESPLIT(int)      |
-------------------------------------------------
noniso                 |23                        |
总数目:1

ST_ModEdgeHeal

ST_ModEdgeHeal — 通过删除连接两条边的节点、修改第一条边并删除第二条边来修复两条边。 返回已删除节点的 id。

语法

st_modedgeheal ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

anotheredge

integer类型。

返回值

返回值为 integer 类型。

示例

SELECT 'MH(4,5)', topology.ST_ModEdgeHeal('city_data', 4, 5);
?COLUMN?(varchar)      |ST_MODEDGEHEAL(int)      |
------------------------------------------------
MH(4,5)                |6                        |
总数目:1

ST_NewEdgeHeal

ST_NewEdgeHeal — 通过删除连接两条边的节点、删除两条边并用方向与提供的第一条边相同的边替换它们来修复两条边。

语法

st_newedgeheal ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

anotheredge

integer类型。

返回值

返回值为 integer 类型。

示例

SELECT topology.ST_NewEdgeHeal('city_data', 4, 5);
ST_NEWEDGEHEAL(int)      |
-------------------------
27                       |
总数目:1

ST_MoveIsoNode

ST_MoveIsoNode — 在拓扑结构中将一个孤立节点从一个点移动到另一个点。如果新的apoint几何对象已存在作为一个节点,则会抛出错误。返回移动的描述。

语法

st_moveisonode ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

apoint

geometry类型。

返回值

返回值为 integer 类型。

示例

SELECT topology.ST_MoveIsoNode('sqlmm_topology', 8, 'POINT(7 11)');
ST_MOVEISONODE(text)      |
--------------------------
Isolated Node 8 moved to l|
ocation 7,11              |
总数目:1

ST_NewEdgesSplit

ST_NewEdgesSplit — 通过沿现有边创建新节点、删除原始边并用两条新边替换它来分割边。 返回创建的连接新边的新节点的 id。

语法

st_newedgessplit ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

apoint

geometry类型。如果点几何对象的空间参考系统(SRID)与拓扑结构不同,apoint不是点几何对象,点为null,点已经存在作为一个节点,边与现有边不对应,或者点不在边上,则会抛出异常。

返回值

返回值为 integer 类型。

示例

SELECT topology.ST_NewEdgesSplit('sqlmm_topology', 2, 'POINT(10 2)'); 
ST_NEWEDGESSPLIT(int)      |
---------------------------
9                          |
总数目:1

ST_RemoveIsoNode

ST_RemoveIsoNode — 删除孤立节点并返回操作描述。 如果节点不是孤立的(是边的开始或结束),则会引发异常。

语法

st_removeisonode ::=

参数

atopology

varchar类型。现有拓扑名

anode

integer类型。

返回值

返回值为 text 类型。

示例

SELECT topology.ST_RemoveIsoNode('sqlmm_topology', 3);
ST_REMOVEISONODE(text)      |
----------------------------
Isolated node 3 removed     |
总数目:1

ST_RemoveIsoEdge

ST_RemoveIsoEdge — 删除孤立的边并返回操作的描述。 如果边缘未被隔离,则会引发异常。

语法

st_removeisoedge ::=

参数

atopology

varchar类型。现有拓扑名

anedge

integer类型。

返回值

返回值为 text 类型。

示例

SELECT topology.ST_RemoveIsoEdge('sqlmm_topology', 1);
ST_REMOVEISOEDGE(text)      |
----------------------------
Isolated edge 1 removed     |
总数目:1