Loading

ES|QL ST_SYMDIFFERENCE function

Returns the symmetric difference of two geometries.

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 symmetric difference of two geometries, that is the parts of each geometry that are not shared by both. This is equivalent to the union of the two differences: ST_UNION(ST_DIFFERENCE(geomA, geomB), ST_DIFFERENCE(geomB, 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 symdiff = ST_SYMDIFFERENCE(a, b)
| KEEP symdiff
		
symdiff:geo_shape
MULTIPOLYGON (((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)), ((3.0 1.0, 3.0 3.0, 1.0 3.0, 1.0 4.0, 4.0 4.0, 4.0 1.0, 3.0 1.0)))

Symmetric difference of two overlapping polygons

The symmetric difference includes the parts of each polygon that are not shared by both.

Symmetric difference of two overlapping polygons