Alteryxツールアイコン「最寄り地点検索ツール」(Find Nearest Tool)をご紹介します
最寄り地点検索ツール(Find Nearest Tool)
[空間]カテゴリの[最寄り地点検索]ツールについて紹介します。概要
このツールは、ある空間オブジェクトを持つリストの各レコードに対して、別の空間オブジェクトを持つリストから最も距離が近いレコードを取得するツールです。
例えば、駅名リストとコンビニリストを持っているとします。
各駅の最寄りのコンビニを取得したい、ということであれば、以下のように駅名リストを「ターゲット(T)」入力に接続し、コンビニリストを「ユニバース(U)」入力に接続します。
アウトプットとしては、「マッチ(M)」出力に「駅に対して条件にマッチした最寄りのコンビニ」を得ることができます。また、条件にマッチするコンビニがない駅については、「アンマッチ(U)」出力にリストが出力されます(駅リストと同じ項目が出てきます)。注意点としては、マッチしなかったコンビニのリストは得られません(もちろん、M出力とコンビニ出力を結合ツールを使うことでアンマッチなコンビニリストを得ることができます)。
また、駅リストの各レコードに対してコンビニリストを検索するため、複数の駅に対して同じコンビニが最寄りとして該当することがあります。
必ず1対1の関係で最寄りを検索したい、ということであれば本ツールはそのままでは利用できません。
注意
入力する空間オブジェクトはポイント、ライン、ポリゴンすべて受け付けますが、ターゲット側は重心として計算されるためライン同士、ポリゴン同士の厳密な距離計算、近傍検索には向いていません。
設定項目
このツールは大きく分けて「ターゲット(T入力)」の設定と「ユニバース(U入力)」の設定、および「検索条件」の設定、「セレクト」機能を持ちます。
①ターゲット設定
T入力に接続したデータのうち、距離を算出する起点となる空間オブジェクトを指定します。ここで指定したデータに対してU入力に入力したデータから近いものを選択することで出力を行います。
基本的に起点はポイントオブジェクトである必要があります。ポリゴンやラインオブジェクトを指定することもできますが、その場合はオブジェクトの重心が計算対象となります。
②ユニバース設定
最寄りとなる候補のリスト(データ)を指定します。U入力からデータを入力することもできますし、ワークフロー外のデータベースやファイルを指定することも可能です。いずれの場合も、距離を算出するための空間オブジェクトを指定する必要があります。ユニバースは、ポイント、ライン、ポリゴンいずれのタイプの空間オブジェクトでも入力可能です。
選択項目名 | 説明 |
---|---|
U入力からのレコードを使用する | 「最寄り地点検索」ツールのU入力のデータを最寄り検索の候補のリストとして使用します |
ファイルまたはデータベースからレコードを使用 | U入力には何も接続せず、ファイルやデータベースを直接指定し、最寄り検索の候補のリストとして使用します |
③検索条件
検索条件を設定します。指定できる項目としては、「最寄りポイント数をトップから何位まで出力するか」「最寄りとして判定する最大距離」「距離が0の場合、対象とするか否か」となります。
設定項目 | 詳細説明 |
---|---|
検索する最寄りポイント数 | 各T入力のレコードに対して、最寄りとなる候補のリスト(ユニバース)のうち近い順にここで指定した数分のレコードを算出します。近い順に、FindNearestRankフィールドに番号が振られます。 |
最大距離 | 最寄り地点として判定される最大の距離を指定します。ここで指定した距離以上離れているユニバースのレコードは最寄り地点として判定されません。
単位も指定でき「マイル」「キロメートル」「ドライブタイム(分)」「ドライブ距離(Mi)」「ドライブ距離(Km)」が選択できます。 なお、「ドライブ~」を使うには、オプションのドライブタイムデータベースが必要となります。データセットをここで指定する必要があります。 |
0の距離の一致を無視する | チェックを入れると、ターゲットとユニバースの距離が0の場合、最寄り地点として判定されません。以下のような場合が該当します。
|
④セレクトツール同等機能
「マッチ(M)出力」へ出力されるデータに対して、セレクトツールと同等の機能が設定可能です(フィールド名変更、フィールドの並び替え、フィールド出力有無)。
なお、本ツールでの演算結果として以下の項目が出力されます(不要であればチェックを外せば出力されません)。
フィールド名 | データ型 | 詳細 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FindNearestRank | Int16 | 検索設定で「検索する最寄りポイント数」を2以上に設定した場合、近い順に番号が振られます。 | ||||||||||||
DistanceKilometers | Double | T入力とU入力の空間オブジェクトの距離を出力します。「最大距離」で設定した単位に応じてフィールド名が変わります。
|
||||||||||||
DriveTime | Double | 「最大距離」の単位を「ドライブタイム(分)」で設定した場合に出力される項目です。時間(分)が出力されます。 | ||||||||||||
Direction | String | T入力を中心に見た時のU入力の空間オブジェクトの方向をアルファベットで出力します。北:N、南:S、西:W、東:Eおよびこれを組み合わせたもの(例:南東=SE)が出力されます(「南南東」といったものは出力されず、8方位が出力されます)
「最大距離」の単位で「ドライブタイム~」を指定した場合は出力されません。 また、距離が0の場合は空白となります。 |
なお、セレクトツール同等機能の詳細はセレクトツールと同様になりますのでここでは割愛します。セレクトツールの記事を御覧ください。
サンプル
サンプルとして、ターゲットに「ランドマークリスト(田町駅、東京タワー、都庁)」、ユニバースに「山手線の駅リスト」を読み込ませ、各ランドマークに対して最寄りの山手線の駅を抽出するというワークフローを作成してみました。
Case1.検索する最寄りポイント=1
以下のような設定で実行してみます。
結果は以下の通り、各ランドマークに対して1つずつ最寄り駅を取得できました。
Case2.検索する最寄りポイント=3
以下のような設定に変更して実行してみました。想定どおりであれば、各ランドマークに対して3つずつ駅が出力されます。
結果は以下の通り、想定どおりです(重複が多いので地図上は出力結果が少なく見えてしまいます)。
Case3.検索する最寄りポイント=1,最大距離=1km
以下のような設定に変更して実行してみました。想定どおりであれば、最寄り地点の距離が1kmを超える東京タワーの最寄り地点はない、ということになります。
結果は以下の通り、想定どおりです。東京タワーはU出力の方に出力されます。
Case4.検索する最寄りポイント=1,0距離を無視
以下のような設定に変更して実行してみました。想定どおりであれば、ランドマークとしての田町駅の最寄り駅として距離が0になる田町駅は出力されません。
結果は以下の通り、想定どおり田町駅の最寄り駅は浜松町駅となりました。
ワークフロー作成時のポイント
ターゲット入力に入れたリストをワークフローの最後まで保持したいということであれば、最大距離の制限に引っかかって最寄りのユニバースがない、ということになるレコードが出てくる可能性があり、その場合は欠落するレコードが出てきます。対策として、M出力とU出力をユニオン等で結合することで最後までリストの保持が可能です。
まとめ
最寄り地点検索ツールは、空間オブジェクト同士で最も近いものを取得することが可能です。
できること
- ポイント同士で最寄りのポイントを取得
- ポイントとラインで最寄りのラインを取得
- ポイントとポリゴンで最寄りのポリゴンを取得
- ラインもしくはポリゴンの重心を取って、最寄りの空間オブジェクトを取得
- 最寄りの空間オブジェクトは、近い順に複数取得可能
- ポイント同士の場合は同じ場所であれば最寄り地点から省くことが可能
- ポイントとラインの場合は、ポイントがラインに乗っている場合は最寄り地点から省くことが可能
- ポイントがポリゴンの中にある場合は、最寄り地点から省くことが可能
- 最寄り地点までの距離、方向の取得が可能
- データベースがあれば、最寄り地点までのドライブ時間やドライブ距離の取得が可能(データベースは有償かつ日本は未リリース)
注意点
- ポリゴン同士、ライン同士の最寄り検索は厳密にはできない(ターゲットは重心を利用)
- ターゲットに入れたリストを最後まで保持したい場合は、M出力、U出力両方使う
サンプルワークフローダウンロード
FindNearest_Sample fa-download
※Alteryx Designer 2019.4.4.20206時点の情報です