"几何图形创建函数"以几何图形作为输入并输出新的图形。

一、ST_Centroid / ST_PointOnSurface

组成空间查询时的一个常见需求是将多边形要素替换为要素的点表示。这对于空间连接(spatial join)非常有用,因为在两个多边形图层上使用St_Intersects(geometry, geometry)通常会导致重复计算:位于两个多边形的边界上的多边形将与两侧的多边形都相交,将其替换为点将强制它位于一侧或另一侧,而不是与两侧的多边形都相交。

  • ST_Centroid(geometry) —— 返回大约位于输入几何图形的质心上的点。这种简单的计算速度非常快,但有时并不可取,因为返回点不一定在要素本身上。如果输入的几何图形具有凹性(形如字母'C'的几何图形),则返回的质心可能不在图形的内部。

  • ST_PointOnSurface(geometry) —— 返回保证在输入多边形内的点。从计算上讲,它比centroid操作代价要大得多。

二、ST_Buffer

缓冲区操作在GIS工作流中很常见,在PostGIS中也可以进行缓冲区操作。 ST_Buffer(geometry, distance)接受几何图形和缓冲区距离作为参数,并输出一个多边形,这个多边形的边界与输入的几何图形之间的距离与输入的缓冲区距离相等。

ST_Buffer函数也接受负的距离值,从而在输入的多边形内构建内接多边形。而对于线串和点,只会返回空值。

三、ST_Intersection

另一个经典的GIS操作 - 叠置(overlay)- 通过计算两个重叠多边形的交集来创建新的几何图形。

ST_Intersection(geometry A, geometry B)函数返回两个参数共有的空间区域(或直线,或点)。如果参数不相交,该函数将返回一个空几何图形。

四、ST_Union

在前面的示例中,我们将几何图形相交,创建一个新的几何图形,新的几何图形包含来自两个输入图形的线串。

ST_Union将两个几何图形合并起来。

ST_Union函数有两种形式:

  • ST_Union(geometry, geometry) —— 接受两个几何图形参数并返回合并的并集。

  • ST_Union([geometry]) —— 接受一组几何图形并返回全部几何图形的并集。ST_Union([geometry])可与GROUP BY语句一起使用,以创建经过细致合并的基本几何图形集。这种操作非常强大。