ES|QL ST_DIFFERENCE function
Returns the part of geomA that does not intersect with geomB.
geomA- Expression of type
geo_point,geo_shape,cartesian_pointorcartesian_shape. Ifnull, the function returnsnull. geomB-
Expression of type
geo_point,geo_shape,cartesian_pointorcartesian_shape. Must share the same coordinate reference system as the first parameter. Ifnull, the function returnsnull.
Returns the part of geomA that does not intersect with geomB. This is equivalent to subtracting geomB from geomA. Both geometries must share the same coordinate reference system.
| geomA | geomB | result |
|---|---|---|
| cartesian_point | cartesian_point | cartesian_shape |
| cartesian_point | cartesian_shape | cartesian_shape |
| cartesian_shape | cartesian_point | cartesian_shape |
| cartesian_shape | cartesian_shape | cartesian_shape |
| geo_point | geo_point | geo_shape |
| geo_point | geo_shape | geo_shape |
| geo_shape | geo_point | geo_shape |
| geo_shape | geo_shape | geo_shape |
ROW a = TO_GEOSHAPE("POLYGON ((0 0, 3 0, 3 3, 0 3, 0 0))"),
b = TO_GEOSHAPE("POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1))")
| EVAL diff = ST_DIFFERENCE(a, b)
| KEEP diff
| diff:geo_shape |
|---|
| POLYGON ((3.0 1.0, 3.0 0.0, 0.0 0.0, 0.0 3.0, 1.0 3.0, 1.0 1.0, 3.0 1.0)) |
Difference of two overlapping polygons
The difference is the part of the first polygon that does not overlap with the second.