跳转至

Geo distance left join(地理距离左连接(Geo distance left join))

Supported in: Batch

Left joins datasets together if the distance between input geometries is less than or equal to the specified distance. Internally converts geometries into the given projected coordinate reference system prior to the join and back to WGS84.

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
  • Distance: The distance within which to join geometries, in the same units as the coordinate reference system.
    Literal\
  • Join key: The geojson columns from the left and right inputs on which to join.
    Tuple\, Column\\>
  • Left dataset: Left dataset to use in join.
    Table
  • Projected coordinate system: Input geometries will be converted to this coordinate system prior to the join, and distance will be measured in the units of the given coordinate system. Formatted as "authority:id", so for example UTM zone 18N could be identified by EPSG:32618.
    Literal\
  • 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:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • Distance: 1640.42
  • Join key: (geometryColLhs, geometryColRhs)
  • Left dataset: ri.foundry.main.dataset.left
  • Projected coordinate system: epsg:2868
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

Inputs:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2

Output:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null

Example 2: Base case

Argument values:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [geometryCol, col1, arrayCol],
    )
  • Distance: 10.0
  • Join key: (geometryColLhs, geometryCol)
  • Left dataset: ri.foundry.main.dataset.left
  • Projected coordinate system: EPSG:4326
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: rhs_

Inputs:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"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
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0

ri.foundry.main.dataset.right

geometryCol col1 arrayCol
{"coordinates": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} rhsVal1 [ 0.0, 1.0 ]
{"coordinates": [[[21.0, 21.0], [27.0, 21.0], [27.0, 27.0], [21.0, 27.0], [21.0, 21.0]]], "type": "Polygon"} rhsVal2 [ 0.0, 1.0 ]
{"coordinates": [0.0, 0.0], "type":"Point"} rhsVal3 [ 0.0, 1.0 ]
{"coordinates": [10.0, 10.0], "type":"Point"} rhsVal4 [ 0.0, 1.0 ]
{"coordinates": [14.0, 14.0], "type":"Point"} rhsVal5 [ 0.0, 1.0 ]
{"coordinates": [25.0, 25.0], "type":"Point"} rhsVal6 [ 0.0, 1.0 ]

Output:

geometryColLhs lhs-1 rhs_geometryCol rhs_col1 rhs_arrayCol
{"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": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} rhsVal1 [ 0.0, 1.0 ]
{"coordinates": [55.0, 5.0], "type":"Point"} 43.0 null null null
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0 {"coordinates": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} rhsVal1 [ 0.0, 1.0 ]
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0 {"coordinates": [10.0, 10.0], "type":"Point"} rhsVal4 [ 0.0, 1.0 ]
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0 {"coordinates": [14.0, 14.0], "type":"Point"} rhsVal5 [ 0.0, 1.0 ]
{"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": [10.0, 10.0], "type":"Point"} rhsVal4 [ 0.0, 1.0 ]
{"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 [ 0.0, 1.0 ]
{"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": [14.0, 14.0], "type":"Point"} rhsVal5 [ 0.0, 1.0 ]

Example 3: Base case

Argument values:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • Distance: 1641
  • Join key: (geometryColLhs, geometryColRhs)
  • Left dataset: ri.foundry.main.dataset.left
  • Projected coordinate system: epsg:2868
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

Inputs:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2

Output:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null

Example 4: Base case

Argument values:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • Distance: 1641
  • Join key: (geometryColLhs, geometryColRhs)
  • Left dataset: ri.foundry.main.dataset.left
  • Projected coordinate system: epsg:2868
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

Inputs:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2

Output:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null

Example 5: Null case

Argument values:

  • Condition for columns to select on the left:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • Condition for columns to select on the right:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • Distance: 1640.42
  • Join key: (geometryColLhs, geometryColRhs)
  • Left dataset: ri.foundry.main.dataset.left
  • Projected coordinate system: EPSG:2868
  • Right dataset: ri.foundry.main.dataset.right
  • Prefix for columns from right: null

Inputs:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2
null rhsVal3

Output:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null


中文翻译

地理距离左连接(Geo distance left join)

支持:批处理(Batch)

当输入几何图形之间的距离小于或等于指定距离时,对数据集执行左连接。在连接之前,内部会将几何图形转换为给定的投影坐标参考系统,然后再转换回WGS84。

转换类别:地理空间(Geospatial),连接(Join)

声明参数(Declared arguments)

  • 左侧列选择条件(Condition for columns to select on the left): 左侧输入模式中的所有列都将被测试是否匹配此条件。如果匹配,该列将被选中输出。
    ColumnPredicate
  • 右侧列选择条件(Condition for columns to select on the right): 右侧输入模式中的所有列都将被测试是否匹配此条件。如果匹配,该列将被选中输出。
    ColumnPredicate
  • 距离(Distance): 连接几何图形的距离范围,单位与坐标参考系统相同。
    Literal\
  • 连接键(Join key): 用于连接的左侧和右侧输入的geojson列。
    Tuple\, Column\\>
  • 左侧数据集(Left dataset): 用于连接的左侧数据集。
    Table
  • 投影坐标系统(Projected coordinate system): 输入几何图形将在连接前转换为此坐标系统,距离将以给定坐标系统的单位进行测量。格式为"authority:id",例如UTM zone 18N可表示为EPSG:32618。
    Literal\
  • 右侧数据集(Right dataset): 用于连接的右侧数据集。
    Table
  • 可选 右侧列前缀(Prefix for columns from right): 添加到右侧所有列的前缀。
    Literal\

示例(Examples)

示例1:基本情况

参数值:

  • 左侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • 距离: 1640.42
  • 连接键: (geometryColLhs, geometryColRhs)
  • 左侧数据集: ri.foundry.main.dataset.left
  • 投影坐标系统: epsg:2868
  • 右侧数据集: ri.foundry.main.dataset.right
  • 右侧列前缀: null

输入:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2

输出:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null

示例2:基本情况

参数值:

  • 左侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryCol, col1, arrayCol],
    )
  • 距离: 10.0
  • 连接键: (geometryColLhs, geometryCol)
  • 左侧数据集: ri.foundry.main.dataset.left
  • 投影坐标系统: EPSG:4326
  • 右侧数据集: ri.foundry.main.dataset.right
  • 右侧列前缀: rhs_

输入:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"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
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0

ri.foundry.main.dataset.right

geometryCol col1 arrayCol
{"coordinates": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} rhsVal1 [ 0.0, 1.0 ]
{"coordinates": [[[21.0, 21.0], [27.0, 21.0], [27.0, 27.0], [21.0, 27.0], [21.0, 21.0]]], "type": "Polygon"} rhsVal2 [ 0.0, 1.0 ]
{"coordinates": [0.0, 0.0], "type":"Point"} rhsVal3 [ 0.0, 1.0 ]
{"coordinates": [10.0, 10.0], "type":"Point"} rhsVal4 [ 0.0, 1.0 ]
{"coordinates": [14.0, 14.0], "type":"Point"} rhsVal5 [ 0.0, 1.0 ]
{"coordinates": [25.0, 25.0], "type":"Point"} rhsVal6 [ 0.0, 1.0 ]

输出:

geometryColLhs lhs-1 rhs_geometryCol rhs_col1 rhs_arrayCol
{"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": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} rhsVal1 [ 0.0, 1.0 ]
{"coordinates": [55.0, 5.0], "type":"Point"} 43.0 null null null
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0 {"coordinates": [[[20.0, 10.0], [27.0, 10.0], [27.0, 17.0], [20.0, 17.0], [20.0, 10.0]]], "type": "Polygon"} rhsVal1 [ 0.0, 1.0 ]
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0 {"coordinates": [10.0, 10.0], "type":"Point"} rhsVal4 [ 0.0, 1.0 ]
{"coordinates": [[25.0, 0.0], [0.0, 25.0]], "type":"LineString"} 44.0 {"coordinates": [14.0, 14.0], "type":"Point"} rhsVal5 [ 0.0, 1.0 ]
{"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": [10.0, 10.0], "type":"Point"} rhsVal4 [ 0.0, 1.0 ]
{"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 [ 0.0, 1.0 ]
{"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": [14.0, 14.0], "type":"Point"} rhsVal5 [ 0.0, 1.0 ]

示例3:基本情况

参数值:

  • 左侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • 距离: 1641
  • 连接键: (geometryColLhs, geometryColRhs)
  • 左侧数据集: ri.foundry.main.dataset.left
  • 投影坐标系统: epsg:2868
  • 右侧数据集: ri.foundry.main.dataset.right
  • 右侧列前缀: null

输入:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2

输出:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null

示例4:基本情况

参数值:

  • 左侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • 距离: 1641
  • 连接键: (geometryColLhs, geometryColRhs)
  • 左侧数据集: ri.foundry.main.dataset.left
  • 投影坐标系统: epsg:2868
  • 右侧数据集: ri.foundry.main.dataset.right
  • 右侧列前缀: null

输入:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2

输出:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null

示例5:空值情况

参数值:

  • 左侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右侧列选择条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • 距离: 1640.42
  • 连接键: (geometryColLhs, geometryColRhs)
  • 左侧数据集: ri.foundry.main.dataset.left
  • 投影坐标系统: EPSG:2868
  • 右侧数据集: ri.foundry.main.dataset.right
  • 右侧列前缀: null

输入:

ri.foundry.main.dataset.left

geometryColLhs lhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0
null 43.0

ri.foundry.main.dataset.right

geometryColRhs rhs-1
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
{"coordinates": [-112.11796760559083,33.440895931474124], "type":"Point"} rhsVal2
null rhsVal3

输出:

geometryColLhs lhs-1 geometryColRhs rhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"} 42.0 {"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"} rhsVal1
null 43.0 null null