ES|QL ST_SYMDIFFERENCE function
Returns the symmetric difference of two geometries.
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 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.