Geo intersection left join(地理空间左连接(Geo intersection left join))¶
Supported in: Batch, Streaming
Left joins input datasets based on whether input geometries overlap. Includes just touching geometries in the results. Null or invalid geometries will not return matches.
Transform categories: Geospatial, Join
Declared arguments¶
- Condition for columns to select on the left: All columns in the left input schema will be tested to see if they match this condition. If they match, the column will be selected in the output.
ColumnPredicate - Condition for columns to select on the right: All columns in the right input schema will be tested to see if they match this condition. If they match, the column will be selected in the output.
ColumnPredicate - Join key: GeoJSON columns from the left and right inputs on which to join.
Tuple\, Column\\ > - Left dataset: Left dataset to use in join.
Table - Right dataset: Right dataset to use in join.
Table - optional Prefix for columns from right: Prefix to add to all columns on the right hand side.
Literal\
Examples¶
Example 1: Base case¶
Argument values:
- Condition for columns to select on the left:
allColumns(
) - Condition for columns to select on the right:
allColumns(
) - Join key: (
geometryColLhs,geometryColRhs) - Left dataset: ri.foundry.main.dataset.left
- Right dataset: ri.foundry.main.dataset.right
- Prefix for columns from right: null
Inputs:
ri.foundry.main.dataset.left
| geometryColLhs | col1Lhs |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | col1Rhs |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [15.0, 15.0], "type":"Point"} | rhsVal4 |
| {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal5 |
| {"coordinates": [[20.0, 20.0], [21.0, 23.0]], "type":"LineString"} | rhsVal6 |
| {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal7 |
| {"coordinates": [[20.0, 20.0], [21.0, 23.0]], "type":"LineString"} | rhsVal8 |
| {"coordinates": [[[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | rhsVal9 |
| {"coordinates": [[[[170.0, 170.0], [190.0, 170.0], [190.0, 190.0], [170.0, 190.0], [170.0, 170.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | rhsVal10 |
Output:
| geometryColLhs | col1Lhs | geometryColRhs | col1Rhs |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal5 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal7 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | rhsVal9 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 | null | null |
Example 2: Base case¶
Argument values:
- Condition for columns to select on the left:
allColumns(
) - Condition for columns to select on the right:
allColumns(
) - Join key: (
geometryColLhs,geometryColRhs) - Left dataset: ri.foundry.main.dataset.left
- Right dataset: ri.foundry.main.dataset.right
- Prefix for columns from right: null
Inputs:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {} | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
Output:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {} | 42.0 | null | null |
Example 3: Base case¶
Argument values:
- Condition for columns to select on the left:
columnNameIsIn(
columnNames: [lhs1],
) - Condition for columns to select on the right:
allColumns(
) - Join key: (
geometryColLhs,geometryColRhs) - Left dataset: ri.foundry.main.dataset.left
- Right dataset: ri.foundry.main.dataset.right
- Prefix for columns from right: null
Inputs:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
Output:
| lhs1 | geometryColRhs | rhs1 |
|---|---|---|
| 42.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| 43.0 | null | null |
Example 4: Base case¶
Argument values:
- Condition for columns to select on the left:
allColumns(
) - Condition for columns to select on the right:
allColumns(
) - Join key: (
geometry,geometry) - Left dataset: ri.foundry.main.dataset.left
- Right dataset: ri.foundry.main.dataset.right
- Prefix for columns from right: rhs_
Inputs:
ri.foundry.main.dataset.left
| geometry | value |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometry | value |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [15.0, 15.0], "type":"Point"} | rhsVal4 |
Output:
| geometry | value | rhs_geometry | rhs_value |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 | null | null |
Example 5: Null case¶
Argument values:
- Condition for columns to select on the left:
allColumns(
) - Condition for columns to select on the right:
allColumns(
) - Join key: (
geometryColLhs,geometryColRhs) - Left dataset: ri.foundry.main.dataset.left
- Right dataset: ri.foundry.main.dataset.right
- Prefix for columns from right: null
Inputs:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| null | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
Output:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| null | 42.0 | null | null |
中文翻译¶
地理空间左连接(Geo intersection left join)¶
支持:批处理(Batch)、流处理(Streaming)
根据输入几何图形是否重叠对输入数据集进行左连接。结果中包含仅接触的几何图形。空值或无效的几何图形不会返回匹配结果。
转换类别:地理空间(Geospatial)、连接(Join)
声明的参数¶
- 左侧列选择条件: 左侧输入模式中的所有列都将被测试是否匹配此条件。如果匹配,该列将被选中输出。
ColumnPredicate - 右侧列选择条件: 右侧输入模式中的所有列都将被测试是否匹配此条件。如果匹配,该列将被选中输出。
ColumnPredicate - 连接键(Join key): 来自左侧和右侧输入的 GeoJSON 列,用于执行连接。
Tuple\, Column\\ > - 左侧数据集: 用于连接的左侧数据集。
Table - 右侧数据集: 用于连接的右侧数据集。
Table - 可选 右侧列前缀: 为右侧所有列添加的前缀。
Literal\
示例¶
示例 1:基本情况¶
参数值:
- 左侧列选择条件:
allColumns(
) - 右侧列选择条件:
allColumns(
) - 连接键: (
geometryColLhs,geometryColRhs) - 左侧数据集: ri.foundry.main.dataset.left
- 右侧数据集: ri.foundry.main.dataset.right
- 右侧列前缀: null
输入:
ri.foundry.main.dataset.left
| geometryColLhs | col1Lhs |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | col1Rhs |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [15.0, 15.0], "type":"Point"} | rhsVal4 |
| {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal5 |
| {"coordinates": [[20.0, 20.0], [21.0, 23.0]], "type":"LineString"} | rhsVal6 |
| {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal7 |
| {"coordinates": [[20.0, 20.0], [21.0, 23.0]], "type":"LineString"} | rhsVal8 |
| {"coordinates": [[[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | rhsVal9 |
| {"coordinates": [[[[170.0, 170.0], [190.0, 170.0], [190.0, 190.0], [170.0, 190.0], [170.0, 170.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | rhsVal10 |
输出:
| geometryColLhs | col1Lhs | geometryColRhs | col1Rhs |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal5 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[-1.0, -1.0], [5.0, 5.0]], "type":"LineString"} | rhsVal7 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]]], "type":"MultiPolygon"} | rhsVal9 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 | null | null |
示例 2:基本情况¶
参数值:
- 左侧列选择条件:
allColumns(
) - 右侧列选择条件:
allColumns(
) - 连接键: (
geometryColLhs,geometryColRhs) - 左侧数据集: ri.foundry.main.dataset.left
- 右侧数据集: ri.foundry.main.dataset.right
- 右侧列前缀: null
输入:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {} | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
输出:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {} | 42.0 | null | null |
示例 3:基本情况¶
参数值:
- 左侧列选择条件:
columnNameIsIn(
columnNames: [lhs1],
) - 右侧列选择条件:
allColumns(
) - 连接键: (
geometryColLhs,geometryColRhs) - 左侧数据集: ri.foundry.main.dataset.left
- 右侧数据集: ri.foundry.main.dataset.right
- 右侧列前缀: null
输入:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
输出:
| lhs1 | geometryColRhs | rhs1 |
|---|---|---|
| 42.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| 43.0 | null | null |
示例 4:基本情况¶
参数值:
- 左侧列选择条件:
allColumns(
) - 右侧列选择条件:
allColumns(
) - 连接键: (
geometry,geometry) - 左侧数据集: ri.foundry.main.dataset.left
- 右侧数据集: ri.foundry.main.dataset.right
- 右侧列前缀: rhs_
输入:
ri.foundry.main.dataset.left
| geometry | value |
|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 |
ri.foundry.main.dataset.right
| geometry | value |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"coordinates": [[[12.0, 12.0], [17.0, 12.0], [17.0, 17.0], [12.0, 17.0], [12.0, 12.0]]], "type": "Polygon"} | rhsVal2 |
| {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [15.0, 15.0], "type":"Point"} | rhsVal4 |
输出:
| geometry | value | rhs_geometry | rhs_value |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 42.0 | {"coordinates": [0.0, 0.0], "type":"Point"} | rhsVal3 |
| {"coordinates": [55.0, 5.0], "type":"Point"} | 43.0 | null | null |
示例 5:空值情况¶
参数值:
- 左侧列选择条件:
allColumns(
) - 右侧列选择条件:
allColumns(
) - 连接键: (
geometryColLhs,geometryColRhs) - 左侧数据集: ri.foundry.main.dataset.left
- 右侧数据集: ri.foundry.main.dataset.right
- 右侧列前缀: null
输入:
ri.foundry.main.dataset.left
| geometryColLhs | lhs1 |
|---|---|
| null | 42.0 |
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 |
ri.foundry.main.dataset.right
| geometryColRhs | rhs1 |
|---|---|
| {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
输出:
| geometryColLhs | lhs1 | geometryColRhs | rhs1 |
|---|---|---|---|
| {"type":"Polygon","coordinates":[[[0.0,0.0],[0.0,10.0],[10.0,10.0],[10.0,0.0],[0.0,0.0]]]} | 43.0 | {"coordinates": [[[2.0, 2.0], [7.0, 2.0], [7.0, 7.0], [2.0, 7.0], [2.0, 2.0]]], "type": "Polygon"} | rhsVal1 |
| null | 42.0 | null | null |