キャプチャ

Tableau「MAKELINE」関数の描く線とは?

Tableauの計算式「MAKELINE」の解説です。
あまり、見かけない内容かなと思い執筆しました。
今回、この記事のため、いろいろTableauで検証を行いました。しかしながら、一部、分からないままの部分もあります。それらについては、最後にまとめて掲載します。

「MAKELINE」は、Tableauの空間関数の一つです。
なお、空間関数には
・MAKEPOINT
・MAKELINE
・BUFFER
・DISTANCE(2地点間の距離を求める)
・AREA(面積を求める)
・INTERSECTS(2つのジオメトリが空間で重なっているかどうかを判定)
の6種類があります。
空間関数の概要については、こちらを参照してください。​

https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_spatial.htm

「MAKELINE」は、地図上の2点を線でつなぐ関数です。
さっそく、試してみましょう。
利用するサンプルデータはこちらです。

画像1

こちらのデータに接続し、まず「MAKEPOINT」関数を用いて、Start地点と、End地点を作ります。

画像2
画像3

次に、この2つの計算Fieldから「MAKELINE」関数を用いて線を作ります。

画像4

この計算フィールドを、ワークシートのマーク詳細にドラッグ&ドロップすると・・

画像5

このように、Start地点とEnd地点が結ばれた線が描画されます。

ぱっと見て気づくのは、線が直線ではなく、曲線になっている事です。
そのため、この「MAKELINE」関数は二つの地点を曲線でかっこ良くつないでくれる関数、と思われがちですが、実は少し違います。

この2地点を結ぶ線は、「大圏コース」もしくは「大円コース」と呼ばれるものです。(以後、「大圏コース」と表記します。)

大圏(大円)とは何か?というと
地球を、中心を通る「平面」でスパッと切ったときの、地球表面の線のことです。

詳しくは下記、Wikipediaをご参照ください。
難しい数式が並んでいますが、そこは気にしないで大丈夫です。

地球の中心を通る平面は、無数に存在します。
地球上の2地点を指定して、地球の中心とこれら2つの地点、すべてを通過する平面を考えると、1つの平面が決まります。
(すべての点が一直線にならぶ場合、つまり2地点がちょうど地球の反対側に位置する場合は例外です。後程説明いたします。)

この1つに決まった平面と地球表面が交わって出来る線が、「大圏コース」となります。

先ほどのサンプルデータで「MAKELINE」が描画してくれた線は、この「大圏コース」なのです。

言い換えるなら、この線は地球上の2地点を結ぶ最短コース、でもあります。
私たちが飛行機に乗って旅に出るとき、飛行機の飛んで行くコースは、この「大圏コース」に近いものになっています。
(実際の飛行コースは、上空の風などにより変わります。)

つまり、「MAKELINE」は「2地点を曲線で結びます」という関数ではなく、「2地点をまっすぐにつなぐ線で結ぶ。でも、それをTableauのメルカトル図法の地図に描くと、結果的に曲線になっている。」という関数なのです。

ここからは、Parameterも用いて、遊んでみましょう。

下図は、Start地点を東京、End地点を(緯度 -35度 , 経度 -40.7度)として「MAKELINE」で線を引いたものです。
Start Point : Tokyo
End Point : (-35 , -40,7)

画像6

東京から、アラスカ、カナダ、アメリカ東海岸を通過しブラジル沖に至っています。なお、これは、日本からブラジルに直接、飛行機で飛んで行ったと仮定した場合の最短コースに近いです。

ここから、少しづつEnd地点の経度を変更してみます。

End地点の経度を、0.2度ずらし-40.5度にしてみました。
End Point : (-35 , -40,5)

画像7

先ほどより、ずいぶん北側にふくらみました。
思わず、「いや、ここまで線を曲げないでもいいよ」と言いたくなってしまいますが、Tableauは忠実に最短コースを描いているだけです。

さらに、経度をずらし-40.3度としました。
End Point : (-35 , -40,3)

画像8

今度は、途中で曲線ではなく、折れ曲がって直線になってしまいました。
Tableauのバグでしょうか??
いえ、バグではありません。
この例では2点を結ぶ最短コースが北緯85度より北を通過しています。

通常、メルカトル図法の地図では緯度85度を超える地域を描く事はできません。そのため「MAKELINE」も線を描くことが出来ず、しかたなくこのような描画になっています。

続いては、Start地点も変えてみましょう。
下図は、Start地点を(緯度70度、経度0度)、End地点を(緯度-70度、経度0度)とした場合の「MAKELINE」の線です。
Start Point : (70,0)
End Point : (-70,0)

画像9

直線になりました。
経度が同じ2点間を結ぶ最短距離は、地球の子午線(経度線)と一致します。そのため、このように南北方向のまっすぐな線となります。

次は、Start地点を赤道上の(緯度0度、経度0度)、End地点を同じ赤道上の(緯度0度、経度180度)にしました。つまりは、End地点はStart地点の真裏となります。
Start Point : (0,0)
End Point : (0,180)

画像11

同じく直線が描かれました。今度は赤道と一致しています。

地球をまん丸の球(真球)と仮定した場合、地球の真裏の点への最短コースは無数に存在します。地球の中心、Start地点、End地点が一直線に並んでいるため、この3点を通る平面も無数に存在するためです。
(実際の地球は、赤道方向にわずかに膨らんだ楕円球となっています。)

このような場合でも、Tableauは一つの線を描いてくれます。
(後述の補足参照)

さて、先ほどの状態から、End地点の緯度を少しずらし1度にしました。
Start Point : (0,0)
End Point : (1,180)

画像12

すると、途端に線が変化します。

地球の中心、Start地点、End地点を通る平面は、北極点、南極点を通る平面。つまり、地球を縦に真っ二つにする面となり、「MAKELINE」の描く線もStart地点からまっすぐ北上、北極点を通りEnd地点に南下する線となったのです。

以上、「MAKELINE」でいろいろ実験してまいりました。
実際利用するうえでは、細かいことは気にせず、Viz表現の一つとして楽しむのも全く構わないと思います。

検証に用いたワークブックはTableau Public(下記)にパブリッシュしています。

https://public.tableau.com/profile/satoshi.ganeko#!/vizhome/VizforunderstandingMAKELINE/WithData?publish=yes

加えて、もしご興味ある方は、下記サイトも見てみてください。

このサイトでは、正距方位図法という図法の地図を見られます。中心を任意の点に動かせます。中心から四方八方に引いたまっすぐの直線が、地球の各地点への最短コース、つまり、これまで説明してきた「MAKELINE」の線となります。

最後に解明できなかった点について補足いたします。
*補足1
Tableauが「MAKELINE」の線を描くとき、地球を真球して扱っているか、あるいは赤道方向に伸びた楕円球として扱っているかは、特定出来ませんでした。「DISTANCE」関数を用いて、緯度90度分の距離と、赤道上の経度90度分の距離を比較したところ、後者の方が長く計算されました。この結果から考えると、少なくともDISTANCE計算においては楕円球として扱っている可能性が高いと思います。
*補足2
「MAKELINE」の開始点や、終点を緯度85度を超える地点に設定した場合のの線は、なぜか正しい線とは思えない線となっていました。

これらについては詳細判明しましたら、追記します。

ご精読、ありがとうございました。


By ritz_Tableau
Tableau Zen Master | Tableau Public Ambassador |
Tableau Certified Professional | Data Saber
Twitter : @ritz_Tableau


この記事が気に入ったらサポートをしてみませんか?