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

地理空間データの変換の作成

Pipeline Builder を使って、地理空間データをロードし、変換し、操作できます。地理空間ワークフローが Pipeline Builder の現在の機能でまだサポートされていない場合は、コードリポジトリでデータを変換するための Foundry のレガシー地理空間ドキュメントを参照してください。

地理空間データのモデリング

論理型

Pipeline Builder は、内部的に論理型という概念を使用して地理空間データをモデリングします。論理型は、基本型(文字列、整数、ブール、配列、構造体)に、表現されるデータに対する追加の制約が適用されたものです。たとえば、Geometry 型は、有効な GeoJSON でなければならない文字列として定義されており、Geo-point は、-180 から 180 までの経度と、-90 から 90 までの緯度を持つ構造体でなければならない。サポートされている型の完全なリストは下記を参照してください。

Pipeline Builder のすべての論理型は、基本型を継承しています。たとえば、Geometry は文字列型の入力が必要な式に入力として使用できますが、その逆はできません。基本型からその基本型を拡張する特定の論理型にキャストするには、「論理型キャスト」式を使用できます。これにより、その論理型に関連する制約がデータに適用され、この検証に失敗する値が null になります。式が入力および出力として論理型を指定できるようにすることで、地理空間特有の式が GeoJSON 文字列を期待する場合、GeoJSON 文字列が受け取られることが保証されます。

サポートされている地理空間型

Pipeline Builder は現在、以下の地理空間型をサポートしています。

  • Geo-point: 経度と緯度の構造体で、経度は -90 から 90 までの範囲で、緯度は -180 から 180 までの範囲で、どちらも含まれる。Geo-point は、WGS:84 または EPSG:4326 座標参照系(CRS)に従った有効な (x, y) 座標でなければならない。
  • Geometry: GeoJSON 仕様に準拠した文字列化された JSON ブロブ。個々の座標は、Geo-point 型と同様に WGS:84/EPSG:4326 形式であることが期待される。
  • H3Index: 有効な H3 六角形インデックスを表す文字列。
  • LatLonBoundingBox: バウンディングボックスで、minLatminLonmaxLatmaxLon の構造体で表され、それぞれが有効な Geo-point であり、maxLat > minLat および maxLon > minLon である。
  • Ontology Geo-point: Ontology の geo-point プロパティタイプと互換性のある文字列で、{lat},{lon} の形式を満たし、-90 <= lat <= 90 および -180 <= lon <= 180 である。
  • MGRS: 有効な MGRS(Military Grid Reference System)座標を表す文字列。

地理空間データのロード

Pipeline Builder は、地理空間データのさまざまな変換と式をサポートしています。

  • Geo-point:
    • Construct Geo-point column: lat,lon ペアを取り、上記で概説した範囲を検証し、Geo-point 表現に変換します。
    • Create Geo-point from Coordinate System (CRS): x,y ペアと座標参照系を取り、その (x,y) を WGS:84 に投影し、Geo-point 表現を作成します。EPSG データベースのほとんどの座標系からの変換をサポートし、すべての UTM ゾーンを含む。
  • Geometry:
    • Parse well-known text (WKT): Well-known text(WKT)文字列をジオメトリ論理型に変換します。オプションで、ソース座標系識別子を指定して、WKT がすでに WGS:84 でない場合、ソース CRS から WGS:84 に変換します。
    • Normalize Geometry: WGS:84 形式の GeoJSON 文字列を与えると、次の属性を正規化します。適切な順序(右手ルール)、閉じたリング、重複の削除、およびポイントの定数次元。
    • Extract rows from Shapefile: 生のシェープファイルのデータセットが与えられると、各シェープファイルをジオメトリとプロパティを含む行に解析します。出力データセットには、ジオメトリ列とユーザーがリストした各プロパティの列があります。非 WGS:84 のデータセットに座標参照系を指定できます。
    • Extract rows from GeoJSON: 生の GeoJSON ファイルのデータセットが与えられると、各シェープファイルをジオメトリとプロパティを含む行に解析します。出力データセットには、ジオメトリ列とユーザーがリストした各プロパティの列があります。非 WGS:84 のデータセットに座標参照系を指定できます。

上記の 2 つのタイプ間の変換、およびそれらを H3 インデックス、MGRS、バウンディングボックス、Ontology geo-point 形式に変換するための追加の式が存在します。

座標参照系と投影に関するドキュメントで、地理空間データ形式の詳細を学びます。

地理空間データの変換

Pipeline Builder の地理空間型の列が入力されたら、地理空間データに特化した変換を利用できます。ほとんどの変換(ジオジョインを除く)は、ストリーミングとバッチの両方のワークフローで現在サポートされています。以下にいくつかのハイライトを挙げます。

ジオメトリの比較

  • 交差
  • 差異
  • 対称差
  • 結合(列単位および集約)

球面幾何学

  • 2点間のハヴァシン/大円距離
  • 逆ハヴァシン距離(開始点、距離、方位角を指定して、終点を計算)
  • ジオメトリの面積/重心/長さ

H3

  • 特定の解像度での H3 六角形の隣接セルの取得
  • 特定の解像度でのポリゴンを H3 六角形でカバー

複雑な形状の近似

  • 楕円/円
  • 範囲ファン(アナルス・セクター)
  • 与えられたジオメトリの凸包

地理空間ジョイン

Pipeline Builder は、次の地理空間ジョインをサポートしています。

ジオメトリ交差ジョイン

Pipeline Builder のジオメトリ交差ジョインには、それぞれがジオメトリ型の列を持つ 2 つのデータセットが必要です。ジオメトリ交差ジョインでは、Ontology geopoint または geopoint 入力型を受け付けません。ジョインを適用する前に、ジオメトリ列を正規化し、出力に必要ない場合は、明示的に null 値をフィルター処理することをお勧めします。パイプラインに非決定性または別のジョインがある場合は、ジオジョインの前にチェックポイントを追加します。

Pipeline Builder は、中程度の大きさのジオメトリ(約 34 ポイントまで)を最大 100 万行のデータセットと結合できます。出力行の数が 2 倍に増えることを前提としています。データが偏っている場合、片側に最大 2 億 5 千万行、もう片側に 1600 行までのジョインをサポートできます。ジオメトリのサイズが大きくなると、安定性が低下する可能性があります。ジョインは、1 つの大規模なジオメトリ(40k ポイント程度)を最大 50 万行のデータセットと結合することを一貫してサポートできます。これ以上の大規模なスケールは、断続的に成功するかもしれませんが、公式にはサポートされていません。

出力の行数がクロスジョインと同等のジオメトリ交差ジョインは、ジョインの安定性が低下する原因となる場合があります。

ジオメトリ交差ジョインの代替として、「ジオメトリが交差している」というフィルターを設定したクロスジョインが、より安定したメモリ使用量を提供する場合があります。ただし、このアプローチは、ビルド時間が急激に増加する可能性があります。別の代替手段として、Code Repositories の geospatial-tools PySpark ライブラリを使用することができます。詳細については、Palantir の担当者にお問い合わせください。

ジオメトリ距離ジョイン

Pipeline Builder のジオメトリ距離ジョインには、それぞれがジオメトリ型の列を持つ 2 つのデータセットが必要です。また、0 より大きい距離の値と、提供された距離の単位を決定する座標参照系文字列が必要です。たとえば、座標参照系に "epsg:4326" が指定された場合、距離は度単位であると想定されます。交差ジョインと同様に、ジオメトリ列を正規化し、出力に必要ない場合は、明示的に null 値をフィルター処理することをお勧めします。パイプラインに別のジョインや非決定性がある場合は、ジョインの前にチェックポイントを追加します。

Pipeline Builder は、小さなジオメトリ(おおよそ 8 ポイントまで)を含むデータセットを最大 100 万行までのスケールで結合できます。これは、ジョインの結果として行数が 2 倍になることを前提としています。出力の行数がクロスジョインと同等である場合、安定性が低下する可能性があります。

ジオメトリ距離ジョインの代替として、ジオメトリバッファと「ジオメトリが交差している」というフィルターを設定したクロスジョインが、行数の増加が大きい場合にメモリ使用量が安定する可能性があります。ただし、このアプローチは、ほとんどの場合においてビルド時間が急激に増加することがあります。

ジオメトリ k 最近傍(KNN)ジョイン

Pipeline Builder のジオメトリ最近傍ジョインには、ジオメトリの base データセットと neighbors データセットのポイントが必要です。k 整数パラメーターは、各基本ジオメトリに対して見つける最近傍の数を設定します。座標参照系が必要であり、基本ジオメトリと隣接ポイント間の距離が計算され、比較される方法を決定します。結果は、結合された行のセットで、各行には、基本ジオメトリに最も近い k 個のポイントの 1 つが含まれます。タイは任意に解決され、結果は特定の順序で返されません。

このジョインには以下の 2 つの要件があります。

  • neighbors データセット内のすべてのジオポイントが、エグゼキュータとドライバのメモリに収まることができる必要があります。これは現在のハード要件であり、ジョインのスケーラビリティを制限しています。neighbors データセットの分散が必要なユースケースがある場合は、Palantir の担当者にお問い合わせください。

  • Foundry は現在、neighbors データセットのジオポイント論理型のみを受け入れており、メモリ消費を抑えるためです。ジョインの neighbors 側で非ポイントジオメトリが必要な場合は、Palantir の担当者にお問い合わせください。

実際には、Pipeline Builder は、k の値が小さく(< 5)、隣接データセットに数十万行、基本データセットに 100 万ジオメトリがある場合をサポートしています。両方のデータセットに数十万行がある場合、Pipeline Builder は k の値が大幅に大きくなることをサポートできます。このような場合、最大数百の最近傍を見つけることが迅速に完了するでしょう。この点を超える入力のスケールを増やすと、断続的に成功する可能性がありますが、一般的には現在サポートされていません。

トラブルシューティング

ジョインで安定性の問題が発生している場合は、以下の手順で対処してください。

  1. ジョインの前に不要な列を削除します。
  2. 入力ジオメトリを簡略化します(たとえば、大きなジオメトリに対して粗い粒度を使用できますか?)
  3. 垂直にスケールアップし、ドライバーとエグゼキューターのメモリを増やすコンピュートプロファイルを手動で選択します。
  4. 最大の入力データセットを 2500 万行程度のセットに分割し、別のビルドで結果をまとめて結合します。
  5. 出力の行数を減らします(つまり、左側と右側のジオメトリ間の交差の数)。

変換結果のプレビュー

Pipeline Builder でデータの変換が完了したら、地図上でこれらの変換の結果を視覚的に確認できます。通常のプレビューペインで、地図上にプレビューしたいセルを選択します(セルは、上記で述べた地理空間型のいずれかの列からのものである必要があります)。右クリックして Open Geo Preview を選択します。

プレビューペインからジオプレビューを開く。

新しいプレビュータブが表示され、選択したセルが地図上にプロットされます。

選択したセルのジオプレビュー。

Ontology と地理空間データの使用

Pipeline Builder の地理空間機能は、プラットフォーム全体の下流データとシームレスに統合されるように設計されています。

  • Ontology
    • Builder の Geometry 列型は Ontology の geoshape 型と互換性がありますが、Builder で列をオブジェクトにマッピングする前に "Normalize Geometry" 式を適用してください。これにより、geoshape データが Ontology にインデックスされる際に実行される検証にパスすることが保証されます。
    • 現在の Geo-point 論理型は Ontology で直接使用できませんが、インデックス化の前に "Ontology Geo-point" 型(Ontology の geohash 型と同等)に簡単に変換できます。
  • Datasets
    • Builder パイプラインの出力データセットに地理空間型データが永続化されるため、そのデータセットから下流の Builder パイプラインを作成する場合、データは正しい論理/地理空間型を保持します。