Documentation Home

12.17.8 空间算子函数

OpenGIS 提出了许多可以生成几何图形的函数。它们旨在实现空间运算符。

此外,第 12.17.7 节“几何属性函数”讨论了几个从现有几何构造新几何的函数。有关这些功能的说明,请参阅该部分:

这些空间运算符函数可用:

  • Buffer(g, d)

    ST_Buffer()并且 Buffer()是同义词。有关详细信息,请参阅 的说明 ST_Buffer()

  • ST_Buffer(g, d)

    返回一个几何,该几何表示与几何值的距离g小于或等于 的距离的所有点d,或者NULL如果任何参数为 NULL

    ST_Buffer()支持多边形、多边形和包含多边形或多边形的几何集合的负距离。对于不包含任何多边形或多边形的点、多点、线串、多线串和几何集合, ST_Buffer()具有负距离返回NULL

    ST_Buffer()并且 Buffer()是同义词。

  • ST_Difference(g1, g2)

    返回表示几何值g1和 的点集差的几何g2。如果任何参数是 NULL,则返回值为 NULL

    mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);
    mysql> SELECT ST_AsText(ST_Difference(@g1, @g2));
    +------------------------------------+
    | ST_AsText(ST_Difference(@g1, @g2)) |
    +------------------------------------+
    | POINT(1 1)                         |
    +------------------------------------+
  • ST_Intersection(g1, g2)

    返回表示几何值g1和 的点集交集的几何g2。如果任何参数是 NULL,则返回值为 NULL

    mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)');
    mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)');
    mysql> SELECT ST_AsText(ST_Intersection(@g1, @g2));
    +--------------------------------------+
    | ST_AsText(ST_Intersection(@g1, @g2)) |
    +--------------------------------------+
    | POINT(2 2)                           |
    +--------------------------------------+
  • ST_SymDifference(g1, g2)

    返回表示几何值 g1和 的点集对称差的几何g2,其定义为:

    g1 symdifference g2 := (g1 union g2) difference (g1 intersection g2)

    或者,在函数调用符号中:

    ST_SymDifference(g1, g2) = ST_Difference(ST_Union(g1, g2), ST_Intersection(g1, g2))

    如果任何参数是NULL,则返回值为NULL

    mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);
    mysql> SELECT ST_AsText(ST_SymDifference(@g1, @g2));
    +---------------------------------------+
    | ST_AsText(ST_SymDifference(@g1, @g2)) |
    +---------------------------------------+
    | MULTIPOINT(1 1,2 2)                   |
    +---------------------------------------+
  • ST_Union(g1, g2)

    返回表示几何值g1和 的点集并集的几何g2。如果任何参数是 NULL,则返回值为 NULL

    mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)');
    mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)');
    mysql> SELECT ST_AsText(ST_Union(@g1, @g2));
    +--------------------------------------+
    | ST_AsText(ST_Union(@g1, @g2))        |
    +--------------------------------------+
    | MULTILINESTRING((1 1,3 3),(3 1,1 3)) |
    +--------------------------------------+