Loading

ES|QL ST_DIFFERENCE function

Returns the part of geomA that does not intersect with geomB.

Embedded
geomA
Expression of type geo_point, geo_shape, cartesian_point or cartesian_shape. If null, the function returns null.
geomB

Expression of type geo_point, geo_shape, cartesian_point or cartesian_shape. Must share the same coordinate reference system as the first parameter. If null, the function returns null.

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.

Difference of two overlapping polygons