Geometry symmetric difference(几何对称差集(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":[]} |
中文翻译¶
几何对称差集(Geometry symmetric difference)¶
支持:批处理(Batch)、快速处理(Faster)、流处理(Streaming)
计算两个几何图形中属于任一图形但不属于其交集的部分。
表达式类别: 地理空间(Geospatial)
声明的参数¶
- 几何图形 a(Geometry a): 几何图形 b。
表达式\ - 几何图形 b(Geometry b): 几何图形 a。
表达式\
输出类型: Geometry
示例¶
示例 1:基本情况¶
参数值:
- 几何图形 a:
geometry_a - 几何图形 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]]]} |
示例 2:空值情况¶
参数值:
- 几何图形 a:
geometry_a - 几何图形 b:
geometry_b
| geometry_a | geometry_b | 输出(Output) |
|---|---|---|
| null | {"type":"LineString","coordinates":[]} | null |
| {"type":"LineString","coordinates":[]} | null | null |
| null | null | null |
示例 3:边界情况¶
参数值:
- 几何图形 a:
geometry_a - 几何图形 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":[]} |