Alteryxを使って無茶をしない旅行計画を立てよう

ほっかいどうはでっかいどう

こんにちは、小澤です。

コロナ禍でなかなか遠出をしづらいご時世ですが、GoToトラベルキャンペーンなども伴って人々の旅行欲が高まってきています。 今までどこにも行けなかった分、「ここにも行きたい」「あそこにも行きたい」という欲求が高まる一方で、時に悲劇を生むこともあります。

以下の情報をご覧ください

思わず「無茶しやがって...」と行ってしまいそうになる旅行プランですね。

今回は、こんな悲劇を生まないために、Alteryxを使ってあらかじめある程度予想しておきましょう。

道の駅と道の駅を繋ぐマクロ

さて、具体的にどんなことをするのかをまず解説します。 今回は、とあるマクロを作成します。 任意の2つの地点を指定すると、それぞれに最も近い道の駅の場所を調べてその間の距離を返します。

運転中にAlteryxを操作することは非常に危険で絶対にやってはいけない行為なので、必ず始点と終点を道の駅に寄せるようにしています。

Alteryxでの距離計算は直線距離で行われるため、実際の道路などが反映されず本来の距離よりも短くなっていますが、 これでおおよそどのくらい離れているか予想できます。

では、マクロの中身を見てみましょう。

取り立てて、難しいことは行っていません。

最初のInput Data~Formulaツールまでの処理は、道の駅情報を取得するものです。 これは、国土数値情報のデータを利用しています。

このデータはP35_xxxのように連番で列名が振られているので、まずはSelectツールで列名を変更しつつ、必要な情報だけにしています。

Filteツールで北海道の道の駅の情報だけに絞り込んだのち、見やすくするために「町」や「村」についている「○○郡」の部分をFormulaツールで以下のように取り除いています。

iif(
  FindString([市町村名], "郡") == -1,
  [市町村名],
  Right([市町村名], Length([市町村名]) - FindString([市町村名], "郡") - 1)
)

これで準備は整いました。

上部では、Map InputツールとインターフェースのMapツールを使って設定値として出発地と目的地を設定できるようにしています。

その後、Find Nearestツールを使って入力された出発地、目的地それぞれに最も近い道の駅を取得しています。

あとは、それらをAppend Fieldsツールで結合して、Distanceツールで2点間の距離を取得するだけです。

使ってみる

使ってみましょう。

縦にいっぱい並んでいる青い丸が作成したマクロです。 なぜこんなにいっぱい並んでいるかというと、冒頭で紹介した以下の移動をそれぞれ配置しています。

  • 千歳 → 帯広
  • 帯広 → 知床
  • 知床 → 旭川
  • 旭川 → 札幌
  • 札幌 → 函館

※ 冒頭記事では札幌 → 小樽という経路が入っていますが、どちらの市にも道の駅が無く、最も近いが当別となるため経路を省略しています。

各ルートをUnionツールで結合指定1つにしています。

上部は実際の移動経路をPoly Lineにして可視化してみたものです。 以下のようになります。

直線距離のため、海をわたるなど相当無茶なショートカットもしてますが、何となくそれっぽいですね。 (こんなルートで函館に行けたらどんなに楽なことか...w)

Summarizeツールではこのルートの総移動距離を算出しています。

直線というかなりのショートカットルートなので、実際の距離では1000kmを超えるでしょう。 1泊2日でこんな旅行をしてたら、ずっと運転だけになるのは明白ですね。 ドライブが趣味な人でもつらいでしょうw

おわりに

今回は、Alteryxを使って無茶な旅行を事前に防ぐためのツールを作成しました。

カーナビやGoogleマップなど、道に沿って動くことを前提にしたものに比べると、直線でしか表せないデメリットはありますが、もっと頑張ればAlteryxで途中の通り道にある道の駅を休憩ポイントとして複数経由させるなどの処理を自動化することも可能です。

あと、高速道路使います...