ST_Intersection

返回Geometry对象相交的点集对应的Geometry对象。

语法

geometry  ST_Intersection(geometry  geomA , geometry  geomB);
geography  ST_Intersection(geography  geogA , geography  geogB);
geometry ST_Intersection(geometry set gField);

参数

参数名称

描述

geomA/geomB

两个目标Geometry对象。

geogA/geogB

两个目标Geography对象。

gField

Geometry字段。

描述

  • 如果输入的两个对象没有任何公共的部分或者不相交,那么该函数返回一个空对象。

  • 对于Geography类型对象,该函数只是对Geometry型函数的简单封装。该函数首先将其转换成Geometry对象,然后在平面参考系中相交得到交集,然后转换回WGS84参考系,变成Geography类型对象。

  • 该函数不支持GeometryCollection类型对象作为输入参数。

  • 该函数会丢弃对象的M坐标值。

  • 聚合函数会将所有Geometry对象依次执行intersection,返回所有对象的交集部分。

示例

  • 默认调用:

    SELECT ST_AsText(ST_Intersection('POLYGON((0 0,0 2,2 2,2 0,0 0))'::geometry,'POLYGON((0 0,3 0,3 1,0 1,0 0))'::geometry));
               st_astext
    --------------------------------
     POLYGON((0 1,2 1,2 0,0 0,0 1))
    (1 row)      
  • 聚合裁剪

    create table agg_result(id integer, geom geometry);
    insert into agg_result values(0, ST_GeomFromText('POLYGON((0 0, 0 0.5, 0.5 0.5, 0.5 0, 0 0))'));
    insert into agg_result select i, st_buffer('POINT(0 0)', 0.8 + random()*0.1) from generate_series(1,100) as i;
    select st_astext(st_intersection(geom)) from agg_result;
                   st_astext
    ----------------------------------------
     POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
    (1 row)
    图1