# Geometry symmetric difference > Supported in: Batch, Faster, Streaming Calculates the portion that is in either geometry, but not in their intersection. **Expression categories:** Geospatial ## Declared arguments * **Geometry a:** Geometry b.
*Expression\* * **Geometry b:** Geometry a.
*Expression\* **Output type:** *Geometry* ## Examples ### Example 1: Base case **Argument values:** * **Geometry a:** `geometry_a` * **Geometry b:** `geometry_b` | geometry\_a | geometry\_b | **Output** | | ----- | ----- | ----- | | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[2.0,1.0],\[2.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[1.0,0.0],\[1.0,1.0],\[3.0,1.0],\[3.0,0.0],\[1.0,0.0]]]} | {"type":"MultiPolygon","coordinates":\[\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]],\[\[\[2.0,0.0],\[2.0,1.0],\[3.0,1.0],\[3.0,0.0],\[2.0,0.0]]]]} | | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.5,0.0],\[0.5,1.0],\[0.0,1.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[0.5,1.0],\[1.0,1.0],\[1.0,0.0],\[0.5,0.0],\[0.5,1.0]]]} | | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[0.25,0.25],\[0.5,0.25],\[0.5,0.5],\[0.25,0.5],\[0.25,0.25]]]} | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]],\[\[0.25,0.25],\[0.5,0.25],\[0.5,0.5],\[0.25,0.5],\[0.25,0.25]]]} | | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[5.0,5.0],\[5.0,6.0],\[6.0,6.0],\[6.0,5.0],\[5.0,5.0]]]} | {"type":"MultiPolygon","coordinates":\[\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]],\[\[\[5.0,5.0],\[5.0,6.0],\[6.0,6.0],\[6.0,5.0],\[5.0,5.0]]]]} | | {"type":"Point","coordinates":\[0.0,0.0]} | {"type":"Point","coordinates":\[1.0,1.0]} | {"type":"MultiPoint","coordinates":\[\[0.0,0.0],\[1.0,1.0]]} | | {"type":"LineString","coordinates":\[\[0.0,0.0],\[2.0,0.0]]} | {"type":"LineString","coordinates":\[\[1.0,0.0],\[3.0,0.0]]} | {"type":"MultiLineString","coordinates":\[\[\[0.0,0.0],\[1.0,0.0]],\[\[2.0,0.0],\[3.0,0.0]]]} | *** ### Example 2: Null case **Argument values:** * **Geometry a:** `geometry_a` * **Geometry b:** `geometry_b` | geometry\_a | geometry\_b | **Output** | | ----- | ----- | ----- | | *null* | {"type":"LineString","coordinates":\[]} | *null* | | {"type":"LineString","coordinates":\[]} | *null* | *null* | | *null* | *null* | *null* | *** ### Example 3: Edge case **Argument values:** * **Geometry a:** `geometry_a` * **Geometry b:** `geometry_b` | geometry\_a | geometry\_b | **Output** | | ----- | ----- | ----- | | {"type":"Point","coordinates":\[0.0,0.0]} | {"type":"Point","coordinates":\[0.0,0.0]} | {"type":"Point","coordinates":\[]} | | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[]]} | | {"type":"Point","coordinates":\[0.0,0.0]} | {"type":"LineString","coordinates":\[\[0.0,0.0],\[0.0,1.0]]} | {"type":"LineString","coordinates":\[\[0.0,0.0],\[0.0,1.0]]} | | {"type":"LineString","coordinates":\[\[0.0,0.0],\[0.0,1.0]]} | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | {"type":"Polygon","coordinates":\[\[\[0.0,0.0],\[0.0,1.0],\[1.0,1.0],\[1.0,0.0],\[0.0,0.0]]]} | | {"type":"LineString","coordinates":\[\[0.0,0.0],\[1.0,1.0]]} | {"type":"LineString","coordinates":\[\[0.0,0.0],\[1.0,1.0]]} | {"type":"LineString","coordinates":\[]} | ***