地理空間分析
PlaidCloudでは、ジオメトリがワークフローの第一級の要素として扱われます。空間ファイルのインポート、座標からのジオメトリの作成、整形と照合、結果の公開まで、別のGISツールを使わずにプラットフォーム内で完結できます。
このガイドでは、それらの機能を一連の流れとして説明します。個々のステップの詳細については、地理空間ステップを参照してください。
ジオメトリは単なる列
Section titled “ジオメトリは単なる列”すべての空間ステップは、ジオメトリを通常のテキスト列内のWKT(Well-Known Text)として読み書きします。これには、最初に知っておくべき3つの利点があります。
- 型宣言が不要です。 ジオメトリ列はテキスト列です。設定も移行も必要ありません。
- ステップを自由に組み合わせられます。 どの空間ステップの出力も、他のどのステップの入力にもなり、順序も問いません。
- SQLとジオメトリを併用できます。 ジオメトリ列はメジャーと並んで存在するため、同じステップ内で両方に対してフィルター、グループ化、結合を行えます。
1. テーブルにジオメトリを取り込む
Section titled “1. テーブルにジオメトリを取り込む”ジオメトリの出所に応じて、2つの取り込み方法があります。
空間ファイルから。 MapInfoの.TAB、ESRIの.shp、.kml、.geojsonには、
Spatial File Importステップを使用します。ファイルとそのサイドカーファイルを同じドキュメントフォルダーにアップロードしてください。ステップは付随ファイル(シェープファイルの場合は.shx/.dbf/.prj、.TABの場合は.dat/.map/.id)を自動的に読み取ります。フィーチャーごとに1行が出力され、WKTジオメトリ列とファイルの属性が含まれます。
すでにある座標から。 データに経度と緯度の列がある場合は、 Table Extract ステップの式でポイントを作成します。この処理はデータベース内で実行されるため、行がウェアハウスの外に出ることはありません。
func.geom_as_wkt( func.geom_point( get_column(table, 'Longitude'), get_column(table, 'Latitude'), ))住所から(ジオコーディング)。 geocodeステップは住所列を座標に変換(順引き)し、geocode reverseステップは緯度経度のペアを住所に戻します(逆引き)。どちらもPlaidCloudのジオコーディングサービスを使用します。順引きジオコーディングではGeocodeLat /
GeocodeLon(およびGeocodeStatus、GeocodeConfidence、一致したラベル)が追加され、逆引きでは解決された住所の構成要素が追加されます。
ロケーションコードによる拡張
Section titled “ロケーションコードによる拡張”どちらのジオコードステップも、返された座標からローカルで計算した簡潔なロケーションコードを各行に追加できます。追加のサービス呼び出しや外部依存はありません。
- Geohash(
GeocodeGeohash)— デフォルトで出力されます。Geohashはデータ分析で広く使われる規約(Elasticsearch、Redis、Lucene)で、プレフィックス特性を持ちます。同じ地点について、短いコードは長いコードの接頭辞になるため、GROUP BY LEFT(GeocodeGeohash, n)で即座に空間のバケット化ができ、プレフィックス結合で近接検索も低コストで行えます。 - Plus Code(
GeocodePlusCode)— 任意で、デフォルトではオフです。Open Location Codeは、Google Mapsや一部の政府の住所体系で使われる、人が共有しやすい住所の形式です。
出力する列は、ステップの location_codes 設定で制御します。
location_codes |
追加される列 |
|---|---|
none |
ロケーションコードなし |
geohash (デフォルト) |
GeocodeGeohash |
geohash+pluscode |
GeocodeGeohashとGeocodePlusCode |
2つの任意設定でコードを調整できます。geohash_precision(デフォルトは9で、約4.8mのセル。上限は12)と、pluscode_length(デフォルトは10で、約14mのセル)です。順引きで座標に解決されなかった行では、コード列は空白のままです。逆引きの行は、住所が見つからない場合でもクエリした座標をエンコードします。
2. ジオメトリを整形する
Section titled “2. ジオメトリを整形する”ジオメトリを列に取り込んだら、知りたい内容に合わせて整形します。
| 知りたいこと | ステップ |
|---|---|
| 各店舗からnマイル以内には何があるか | Spatial Trade Area ステップ |
| この形状から一定距離以内には何があるか | Spatial Buffer ステップ |
| 各リージョンを合わせた範囲はどうなるか | 空間結合ステップ |
| これらのポイントが囲む領域はどこか | Spatial Poly-Build ステップ |
| この2つの範囲はどこで重なり、どこが異なるか | 空間処理ステップ |
| 境界線を軽量化して描画するにはどうするか | Spatial Generalize ステップ |
| この領域を等間隔のセルに分割するにはどうするか | Spatial Make Grid ステップ |
| ポリゴンをパーツに分解するにはどうするか | Spatial Poly-Split ステップ |
小売やサービステリトリーの分析は、通常Trade Area(商圏)から始まります。拠点のテーブルと一組の半径を渡すと、顧客と照合できる同心円状のリングが返されます。
3. 場所をテリトリーと照合する
Section titled “3. 場所をテリトリーと照合する”2つの照合ステップは、答える問いも実行経路も異なります。
各顧客はどのテリトリーにいるか。 空間照合ステップを使用します。データベース内で空間述語による結合として実行されるため、テーブルの規模に応じてスケールします。関係としてintersects、within、containsのいずれかを選ぶと、一致するペアごとに1行が出力されます。
各顧客に最も近い店舗はどこか。 Spatial Find Nearest ステップを使用します。ターゲットごとに最も近いN行を保持し、選択した単位で計算した距離列を追加します。こちらもSQL経路で実行されるため、同様にスケールします。
どのテリトリーにも入らなかった顧客はどれか。 UnmatchedモードでSpatial Match (Intersect / Unmatched) ステップを使用します。同じステップで、ペアではなく共通部分そのものが必要な場合に、重なり合うジオメトリを出力することもできます。
4. 計測する
Section titled “4. 計測する”Spatial Info ステップは、面積、長さ、重心、外接矩形の列を追加します。これらはWGS84の測地線による計測値であるため、平方マイルは平面近似ではなく実際の平方マイルです。緯度の異なるテリトリーを比較するときに重要になります。
同じ行にある2つの列間の直線距離を求めるだけなら、ステップよりもSQL式のほうが低コストです。
5. 公開する
Section titled “5. 公開する”テーブルに残ったままのジオメトリは、誰も行動に移せる答えではありません。
- Report Map ステップは、同じワークフローのチャートやテーブルとともに、ジオメトリをPDFレポートに描画します。
- 結果テーブルは、他のテーブルと同様にダッシュボードに取り込めます。ジオメトリ列も引き継がれますが、実際にダッシュボードでチャート化されることが多いのは、その隣にあるメジャーです。
- 下流のGISツールが必要とする場合は、エクスポートステップでテーブルをCSV、Excel、または外部データベースに書き出せます。
Alteryxからの移行
Section titled “Alteryxからの移行”Alteryxの空間ツールには、すべてPlaidCloud側の対応経路があります。変換されたワークフローでは、その経路が自動的に選ばれます。ツールごとの対応関係はAlteryx変換マトリックスに一覧があり、ファイルのパッケージ化と結果の検証については空間Alteryxワークフローの移行で説明しています。