跳转至

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":[]}