ST_捕捉 — 将输入几何图形的线段和顶点捕捉到参考几何图形的顶点。
geometry ST_捕捉(geometry 输入, geometry 参考, float 容差);
将几何图形的顶点和线段捕捉到另一个几何图形的顶点。使用捕捉距离容差来控制执行捕捉的位置。结果几何图形是已捕捉顶点的输入几何图形。如果未发生捕捉,则返回未更改的输入几何图形。
将一个几何图形捕捉到另一个几何图形可以通过消除几乎重合的边(这会在节点和交点计算期间引起问题)来提高叠加操作的稳健性。
过多的捕捉可能会导致创建无效的拓扑,因此使用启发式方法来确定何时可以安全地进行捕捉,从而决定捕捉顶点的数量和位置。但这可能会导致省略一些潜在的捕捉。
|
|
|
返回的几何图形可能会失去其简单性(请参阅 ST_IsSimple)和有效性(请参阅 ST_IsValid)。 |
由 GEOS 模块执行。
可用性:2.0.0
![]() 显示带有线串的多边形(在任何捕捉之前) |
|
![]() 以 1.01 的距离容差将多边形捕捉到线串。新的多边形与参考线串一起显示
SELECT ST_AsText(ST_Snap(poly,line, ST_Distance(poly,line)*1.01)) AS polysnapped
FROM (SELECT
ST_GeomFromText('MULTIPOLYGON(
((26 125, 26 200, 126 200, 126 125, 26 125 ),
( 51 150, 101 150, 76 175, 51 150 )),
(( 151 100, 151 200, 176 175, 151 100 )))') As poly,
ST_GeomFromText('LINESTRING (5 107, 54 84, 101 100)') As line
) As foo;
polysnapped
---------------------------------------------------------------------
MULTIPOLYGON(((26 125,26 200,126 200,126 125,101 100,26 125),
(51 150,101 150,76 175,51 150)),((151 100,151 200,176 175,151 100)))
|
![]() 以 1.25 的距离容差将多边形捕捉到线串。新的多边形与参考线串一起显示
SELECT ST_AsText(
ST_Snap(poly,line, ST_Distance(poly,line)*1.25)
) AS polysnapped
FROM (SELECT
ST_GeomFromText('MULTIPOLYGON(
(( 26 125, 26 200, 126 200, 126 125, 26 125 ),
( 51 150, 101 150, 76 175, 51 150 )),
(( 151 100, 151 200, 176 175, 151 100 )))') As poly,
ST_GeomFromText('LINESTRING (5 107, 54 84, 101 100)') As line
) As foo;
polysnapped
---------------------------------------------------------------------
MULTIPOLYGON(((5 107,26 200,126 200,126 125,101 100,54 84,5 107),
(51 150,101 150,76 175,51 150)),((151 100,151 200,176 175,151 100)))
|
![]() 以 1.01 的距离容差将线串捕捉到原始多边形。新的线串与参考多边形一起显示
SELECT ST_AsText(
ST_Snap(line, poly, ST_Distance(poly,line)*1.01)
) AS linesnapped
FROM (SELECT
ST_GeomFromText('MULTIPOLYGON(
((26 125, 26 200, 126 200, 126 125, 26 125),
(51 150, 101 150, 76 175, 51 150 )),
((151 100, 151 200, 176 175, 151 100)))') As poly,
ST_GeomFromText('LINESTRING (5 107, 54 84, 101 100)') As line
) As foo;
linesnapped
----------------------------------------
LINESTRING(5 107,26 125,54 84,101 100)
|
![]() 以 1.25 的距离容差将线串捕捉到原始多边形。新的线串与参考多边形一起显示
SELECT ST_AsText(
ST_Snap(line, poly, ST_Distance(poly,line)*1.25)
) AS linesnapped
FROM (SELECT
ST_GeomFromText('MULTIPOLYGON(
(( 26 125, 26 200, 126 200, 126 125, 26 125 ),
(51 150, 101 150, 76 175, 51 150 )),
((151 100, 151 200, 176 175, 151 100 )))') As poly,
ST_GeomFromText('LINESTRING (5 107, 54 84, 101 100)') As line
) As foo;
linesnapped
---------------------------------------
LINESTRING(26 125,54 84,101 100)
|