注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Geometry knn inner join

サポートされている環境: バッチ

ベースデータセットの各有効な入力ジオメトリに対して、近隣データセットから最も近いk個のポイントを選択します。内部的には、入力データセットを指定された座標リファレンスシステムに変換し、WGS84に戻します。近隣データセット全体はドライバとエグゼキュータのメモリに収まる必要があります。3 GBのエグゼキュータであれば、最大 100 万ポイントの近隣データセットを処理できます。

トランスフォームカテゴリ: ジオスペーシャル, ジョイン

引数

  • ベースデータセット - ジョインに使用するベースデータセット。
    Table
  • 左側の列を選択する条件 - 左側の入力スキーマ内のすべての列がこの条件に一致するかテストされ、一致する場合は出力に選択されます。
    ColumnPredicate
  • 右側の列を選択する条件 - 右側の入力スキーマ内のすべての列がこの条件に一致するかテストされ、一致する場合は出力に選択されます。
    ColumnPredicate
  • ジョインキー - クエリデータセットのGeoJSON列および近隣データセットのジオポイント列。
    Tuple<Column<Geometry>, Column<GeoPoint>>
  • K - 左側のデータセット内の各有効なジオメトリに対して右側のデータセットから選択する近隣の数。
    Literal<Integer>
  • 近隣データセット - ジョインに使用する潜在的な近隣のデータセット。
    Table
  • 投影座標系 - ジョインの前に入力ジオメトリがこの座標系に変換され、距離は指定された座標系の単位で測定されます。「authority」という形式で、たとえばEPSG:32618でUTMゾーン18Nを識別できます。
    Literal<String>
  • オプション 右側の列のプレフィックス - 右側のすべての列名に追加するプレフィックス。
    Literal<String>

例 1: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, lhsCol],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, col],
    )
  • ジョインキー: (geometryCol, geometryCol)
  • K: 2
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:2868
  • 右側の列のプレフィックス: rhs_

入力: ri.foundry.main.dataset.left

geometryCollhsCol
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0

ri.foundry.main.dataset.right

geometryColcol
{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2
{
latitude: 33.440895931474124,
longitude: -112.11796760559083,
}
rhsVal3

出力:

geometryCollhsColrhs_geometryColrhs_col
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2

例 2: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • ジョインキー: (geometryColLhs, geometryColRhs)
  • K: 1
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:2868
  • 右側の列のプレフィックス: null

入力: ri.foundry.main.dataset.left

geometryColLhslhs-1

ri.foundry.main.dataset.right

geometryColRhsrhs-1

出力:

geometryColLhslhs-1geometryColRhsrhs-1

例 3: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, lhsCol],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, col],
    )
  • ジョインキー: (geometryCol, geometryCol)
  • K: 2
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:2868
  • 右側の列のプレフィックス: rhs_

入力: ri.foundry.main.dataset.left

geometryCollhsCol
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}43.0

ri.foundry.main.dataset.right

geometryColcol
{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2
{
latitude: 33.440895931474124,
longitude: -112.11796760559083,
}
rhsVal3

出力:

geometryCollhsColrhs_geometryColrhs_col
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}43.0{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}43.0{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2

例 4: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, lhsCol],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, col],
    )
  • ジョインキー: (geometryCol, geometryCol)
  • K: 3
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:2868
  • 右側の列のプレフィックス: rhs_

入力: ri.foundry.main.dataset.left

geometryCollhsCol
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0

ri.foundry.main.dataset.right

geometryColcol
{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2
{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2
{
latitude: 33.440895931474124,
longitude: -112.11796760559083,
}
rhsVal3

出力:

geometryCollhsColrhs_geometryColrhs_col
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2

例 5: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • ジョインキー: (geometryColLhs, geometryColRhs)
  • K: 1
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:2868
  • 右側の列のプレフィックス: null

入力: ri.foundry.main.dataset.left

geometryColLhslhs-1

ri.foundry.main.dataset.right

geometryColRhsrhs-1
{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
null
{
latitude: 33.440895931474124,
longitude: -112.11796760559083,
}
rhsVal2
nullrhsVal3

出力:

geometryColLhslhs-1geometryColRhsrhs-1

例 6: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryColLhs, lhs-1],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryColRhs, rhs-1],
    )
  • ジョインキー: (geometryColLhs, geometryColRhs)
  • K: 1
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:2868
  • 右側の列のプレフィックス: null

入力: ri.foundry.main.dataset.left

geometryColLhslhs-1
{"coordinates": [-112.14843750000001,33.440609443703586], "type":"Point"}42.0
{"coordinates": [-112.14560508728029,33.44082430962016], "type":"Point"}43.0

ri.foundry.main.dataset.right

geometryColRhsrhs-1

出力:

geometryColLhslhs-1geometryColRhsrhs-1

例 7: 基本ケース

引数の値:

  • ベースデータセット: ri.foundry.main.dataset.left
  • 左側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, lhsCol],
    )
  • 右側の列を選択する条件:
    columnNameIsIn(
     columnNames: [geometryCol, col1, arrayCol],
    )
  • ジョインキー: (geometryCol, geometryCol)
  • K: 5
  • 近隣データセット: ri.foundry.main.dataset.right
  • 投影座標系: epsg:4326
  • 右側の列のプレフィックス: rhs_

入力: ri.foundry.main.dataset.left

geometryCollhsCol
{"coordinates": [[[0.0, 0.0], [10.0, 0.0], [10.0, 10.0], [0.0, 10.0], [0.0, 0.0]]], "type": "Polygon"}42.0

ri.foundry.main.dataset.right

geometryColcol1arrayColtoDrop
{
latitude: 33.440609443703586,
longitude: -112.14843750000001,
}
rhsVal1[ 0.0, 1.1 ]1.0
{
latitude: 33.44082430962016,
longitude: -112.14560508728029,
}
rhsVal2[ 0.0, 1.1 ]1.0