東京五輪マラソンは本当に暑い? 衛星データで過去と比較してみた
東京五輪のマラソンは過去の大会と比較して本当に暑いのか。実際に衛星データを使って比較してみました。
なぜ東京五輪を暑さが過酷な時期に開催するのかという話題をよく聞きます。
特に2時間以上走り続けるマラソンは、暑さ対策として開始時間を繰り上げたり、沿道の街路樹の枝を伸ばしたりという措置が検討されているようです。
では、過去と比べて、東京五輪が本当に暑いのか。また、どの地点が暑いのか。衛星データから探ってみました!
※本記事は宙畑メンバーが気になったヒト・モノ・コトを衛星画像から探す不定期連載「宇宙データ使ってみた-Space Data Utilization-」の第4弾です。まだまだ修行中の身のため至らない点があるかと思いますがご容赦・アドバイスいただますと幸いです!
(1)結果から発表! 2020東京五輪は暑いのか
解析の手順は長くなってしまうので最初に解析結果から発表します。

上図の通り、解析結果は過去20年で最も暑かった(であろう)2004年のアテネ大会より気温が高くないが、それに近い温度での大会となりそうです。
涼しかった(であろう)2000年シドニー大会、せっかくなので1964年の東京大会とも比較をしています。
また、温度も衛星から撮影している温度のため必ずしも地上の温度とは一致しないことをご理解いただければと思います。
※最後に地上データとの答え合わせを行っているのでそちらも合わせてご覧ください
アテネ大会と2020東京大会は開催時期が8月であることが、温度の高さに大きく影響していると考えられます。シドニーは南半球のため季節が逆転していることが比較的涼しい要因です。
面白いのは一つのコースの中でも温度に多少上下があることです。2020東京五輪のマラソンコースを詳細に見てみると、以下のようになります。

今回の衛星データから解析した結果では、緑や水の多い皇居付近で温度が下がっていることが分かりました。
※解析に際して、年は必ずしも一致しておらず、開催時期(月)を合わせ該当の地域で、雲の少ない衛星画像1枚のみで解析を行っています。そのため、統計的に正しい解析になっていないことをご了承ください。今回の解析方法では衛星画像が重すぎて、大量の解析を行うことができませんでした……。
※本格的に競技の過酷さを比較するためには湿度などほかの要素も調査が必要だと考えられますが、本解析では温度のみを比較してみました
(2)地上の温度データとの答え合わせ
結果を眺めてみると少し温度が高いかなという印象も受けます。実際の東京のその日の温度を調べてみます。

10時前後のは32~33度くらいです。気温よりも地面の温度は、下図のように高いのかもしれないですね。

(3) 衛星データを用いた地表面温度の解析手順
さて、実際に衛星データを触って他のコースの温度や何か温度データを使ってやってみたいことが思いついた!という方のため、具体的にどのように今回の解析を進めたのかを解説します。
今回の解析にかかった時間は、慣れたら30分もかからないのではないでしょうか。
解析の流れは以下の通りです。
<解析の流れ>
(i)東京五輪マラソンコース・日時を調べる
(ii) マラソンコースの位置情報付きファイルを作成する
(iii) 該当する場所・時期の衛星データをダウンロードする
(iv)解析ソフトにダウンロードした衛星画像とkmlファイル読み込ませる
(v) 衛星データから地表面温度を計算する
(vi) マラソンコースに沿った温度を取り出す
(i)東京五輪のマラソンコース・日時を調べる
実際にランナーが走る予定のマラソンコースを知らないと始まりません。
まずはネット上に落ちている2020年東京五輪マラソンコースを調べます。
今回調べたサイトはこちら。

そして日時はというと、8月2日(女子)/8月9日(男子)と、8月上旬の朝方に開催されます。
(ii) マラソンコースの位置情報付きファイルを作成する
次に、マラソンコースのkmlファイル(Google Earth、Google マップなどに地理データを記述するためのファイル形式)を作成します。
先ほど調べたマラソンコースマップでは衛星データと直接重ね合わせるということができないので、位置情報付きの線(専門用語では”シェープファイル”と言ったりするみたいですね)を作る必要があるのです。
マラソンコースをGoogleマップで表示できるようなことができればよいかなと思い探していたら、ジョギングシュミレータというサイトが良さそうだったので、今回はこちらのサイトで作成してみることにしました。

ポチポチと(i)で調べたマラソンコースを見ながら走るポイントをクリックしてファイルを作成していきます。
※42.195kmは長い……
完成したら[ファイルを出力]で以下のようなテキストが吐き出されます。

これをテキストファイルで保存して拡張子をkmlに変更しましょう。

これで、マラソンコースを地図上のデータに変換することに成功しました。
※五輪のマラソンコースはすでにkmlファイルになっているものもあるみたいです。
(iii) 該当する場所・時期の衛星データをダウンロードする
続いて、解析に用いる衛星画像を選びます。
衛星画像について、「衛星データのキホン~分かること、種類、頻度、解像度、活用事例~」で詳しく解説していますが、衛星から取得できる熱赤外(TIR)データから温度情報を解析することができます。
今回はコースに沿った温度情報にしたいのでそれなりに細かい(高解像度)のデータが欲しいところ。
そのため、数km解像度(数km単位でしか温度の差が分からない)になってしまう静止軌道(地上約35,800km)を周回する衛星よりも、低軌道(地上2,000km以下)を周回する衛星の画像が良いでしょう。
ブラウズ上でいつの、どのような状態の時の衛星画像か確認するため、「EO Browser」を使います。

まずは実際のマラソンコース全体が入る形でEO Browserの画面を調整し、画面右上のアイコンから(ii)で作成したkmlファイルを読み込みましょう。
すると、コースがEO Browser上に反映されます。
TIRを搭載している衛星はSentinel-3、Landsat-8、MODISあたりかな、とあてをつけてラジオボタンをポチポチ。
次に五輪が行われる・行われた季節に近い日付と被雲率(画像中に占める雲の割合)を調整してSearchをクリック!

筆頭候補はLandsat-8です。撮影期間が最も長く、データ量が多いことが特徴です。インターネット上に使い方に関する情報が多くあるのも魅力的なポイント。
では、実際に最初に選んだ3つの衛星の画像を比べてみましょう。検索していくとコース上に雲がかかっているものがあります。
雲がかかっていると地表面の温度が解析できないので、今回はそのような画像は避けることを念頭においておきましょう。

sentinel-3も観てみましたが、ちょっと粗い感じがしました。

MODISはなんだかギザギザしていていたので今回は除外。
という訳で当初の想定通り、Landasat-8の画像を使うことにしました。さらに晴れている画像を探していきます。
全コースに渡って雲がないのは意外と少なくて、いろいろ見た結果雲が少なくてかつ大会の開催日程と近い2014年8月19日のようだったので、今回はその画像を使うことに決めました。

EO Browserで波長ごとにダウンロードする方法が良くわからなかったので、今回は「Landbrowser」でダウンロードしてみることにします。

また、Landsat-8で温度データ(TIR)を取得するためには、Band 10と11ということが分かりました。
ということで、詳細は後で説明しますが、ここではBand4、5、10、11とMTLというファイルを落とします。

(iv)解析ソフトにダウンロードした衛星画像とkmlファイル読み込ませる
衛星画像をただダウンロードしただけでは温度の情報を取り出すことはできません。画像データを解析する必要があります。
解析ソフトは無料のものから有料のものまで各種ありますが、今回、解析ソフトはQGISを使用します。

また、Landsat-8で温度データ(TIR)を取得するためには、Band 10と11ということが分かりました。
ということで、詳細は後で説明しますが、ここではBand4、5、10、11とMTLというファイルを落とします。

(iv)解析ソフトにダウンロードした衛星画像とkmlファイル読み込ませる
衛星画像をただダウンロードしただけでは温度の情報を取り出すことはできません。画像データを解析する必要があります。
解析ソフトは無料のものから有料のものまで各種ありますが、今回、解析ソフトはQGISを使用します。

ダウンロードはこちらから。いろいろ種類がありますが、今回はOSGeo4WのQGISネットワークインストーラーからインストール。

QGIS立ち上げて、(iii)でダウンロードした画像をドラッグ&ドロップしてみたら、こんな感じになりました。うんうん、読み込めてそう。

先ほど作成したkmlファイルも、ドラックアンドドロップで普通に読み込めた!
ちょっとした達成感があります笑

それぞれのプロパティから適当に色を整えることができるのでいい感じに変更してみましょう。

今は[レンダリングタイプ]が[グレースケール(Singleband gray)]になっているので、[単バンド疑似カラー(Singleband pseudocolor)]に変更します。

カラーランプの右側の▼をクリックして編集すると、下に値と色の関係表が出てくるので、ここまででてきたらOKを押します。

それっぽい画像になりました。皇居や川が涼しいことが見て取れます。
(v)衛星画像から実際の温度を算出してみる

QGISの画面左下、読み込んだ画像を調べてみると、実際の温度とは程遠い数字が並んでいます。なんのこっちゃ。。。
実際の温度の算出には色々と変換が必要のようです。
調べてみると色々と変換の方法を解説してあるサイトや動画がいくつか出てきました。
【今回参考にしたサイト】
・Using the USGS Landsat Level-1 Data Product
・Landsat 8: Estimating Land Surface Temperature Using ArcGIS
・Calculating Land Surface Temperature Landsat8 by ArcGIS
一番上の公式サイトもっとも信ぴょう性が高そうです。下2つの動画は作業手順が分かりやすいのですが、これから使用する式が若干違うのが気になります……。
まとめると、地表面温度を計算するためには以下5つのステップに分けて計算を進めていく必要があることが分かりました。

(vi) マラソンコースに沿った温度を取り出す
衛星画像として記録されている値はDN値(Digital Number)と呼ばれる単なる数値の羅列で、それ自体が意味を持つわけではありません。DN値を温度にする処理がいるのですね。
以降では、それぞれのステップに毎の計算を見ていきます。
※これから使用する式は複雑に見えますが基本的には代入を繰り返すだけですので、無心にやってみましょう
① 植生指数(NDVI)の計算

まずは植生指数(NDVI)を計算してみます。
植生指数とは植物の活性度を示す指数で、農業分野で生育状況の把握などに用いられています。
(iii)でダウンロードした赤(Band4)と近赤外(Band5)の画像をQGISにドラッグ&ドロップします(ivで読み込ませていたらそのままでOK)。

QGISの左下で2枚の画像が読み込めていることを確認できたら、上の方にあるツールバーから、「ラスタ」>「ラスタ計算機」を選択。

なにやら電卓っぽい画面が出現しました。


指定したファイル名が、レイヤパネルに追加されていることが確認できました。

このままでは白黒画像でなんのこっちゃですね。
山々が白っぽい箇所が”植物が活性している”感じなんでしょうか。
②植生のばらつき
同じ要領でがしがし計算していきます。次の式はこんな感じです。

式の意味は今回は割愛します。こういうもんだと思いましょう。
さきほど①で計算したNDVIのレイヤー(画面左下)をみると以下のように最大最小値が分かります。


これでPv(植生のばらつき)の計算ができました。例によって名前をつけてOKをクリック。

よくわかりませんが(笑)、緑が良く見えているような感じがします。
続けて、eを計算します。


何が違うのかもはや不明です。
※だんだんやけくそになっていくライターが面白かったのでライターコメントをそのまま残しています(編集注)
③ 衛星からみた放射量の計算
気を取り直して、今度は熱赤外画像から放射量を計算します。計算式はこんな感じです。
Band10と11はともにTIRではありますが、周波数が異なります。
ネットで調べてみると、別々に以降の計算を行うパターンと平均をとって計算しているパターンとありました。今回は代表としてBand10の方で計算を進めてみます。

計算にいくつか係数が必要なことが分かります。衛星画像と一緒にダウンロードしたMTLファイルから必要な係数を引っ張ってきます。
MTLファイルはいわゆる”メタファイル”と呼ばれるファイルで、衛星画像に付随する情報が色々と記載されています。
今回のケースでは以下の値でした。
・RADIANCE_MULT_BAND_10 = 3.3420E-04
・RADIANCE_ADD_BAND_10 = 0.10000
※解析する場所によって値が異なりますのでご注意ください
この計算式を使ってラスタ計算機で計算します。

計算後の結果を見ていただくと、何が変わったのかはやはり正直不明(2度目)ですが、めげずに次のステップに移りましょう。
④衛星からみた輝度温度の計算
次は放射量から今度は輝度温度なるものを計算します。計算式は以下の通りです。

再びMTLファイルからパラメーターを探してきます。このあたりですね。
・K1_CONSTANT_BAND_10 = 774.89
・K2_CONSTANT_BAND_10 = 1321.08
この値を使ってラスタ計算機で計算します。

やはり何が違うのか不明(3度目)ですが、レイヤー(画面左下)値は温度らしくなってきました。
※値はケルビンなので、℃+273的なものが見えていたら正解なのではないかと思います。
⑤地表面温度の計算
最後に、やっと地表面の計算です。計算式はこちら。

最後に温度の単位をケルビンから℃にするために「-273」をしておきます。


出来上がった画像に色を付けるとこんな感じになりました。それっぽいかな???
マラソンコースの線が見えなくなってしまった場合、レイヤーの重ね順の問題だと思われるので、レイヤーパネルでマラソンコースをドラッグして一番上に持ってきます。
(vi) マラソンコースに沿った温度を取り出す
最後に、マランコースに沿った温度を出してみます。
QGISには様々なプラグインがあるところが特徴の一つです。慣れてくればPythonで自分で書くこともできます。いずれはそこまでできるように……。

「QGIS 断面図」でGoogle検索して、イメージするプラグインを探してみたところ、qProfというプラグインが良さそうな感じでした。

「プラグイン」>「プラグインの管理とインストール」からqProfを検索してインストールします。

インストールできると、プラグインからqProfが選べるようになります。選択すると以下のような画面になります。

DEM(3D地図/等高線のことです)の代わりにTIRの画像を選択して、Input Lineにマラソンコースを選択します。
あとはひたすら「Read Source Data」→「Caluculate profile statistics」→「Create topographic profile」を順番にクリックして、ウィンドウが出てきたら、ひとまず「OK」

グラフが出てきたーー!!!!!!!!!!!
横軸がちゃんと42kmくらい(図はm単位ですね)になっていて、縦軸も温度っぽいので良さそうです。
「Export」タブからグラフやcsvファイルを出力できます。
これで、マラソンコースに沿った温度を出すことができました。最初にお見せしたものは、ほかのマラソンコースも同じように作成し、並べたものでした。
最後に、今回行ったことをまとめまています。
(4)やってみたまとめ
本記事では、衛星データからマラソンコースの温度について解析してみました。
【今回できたこと】
・マラソンコースの位置情報ファイル化
・衛星画像から温度情報を解析してみる
・マラソンコースに沿ったデータの取り出し
また、やりながら以下のような課題があるなと思いました。
【改善の余地がありそうなこと・困ったこと】
・数字があってるのかよくわからない。計算ミスに気づけない。
そもそも必要な数式を探すのも大変で、その式が正しいのかを追うのも難しいというのは課題だなと感じました。
・統計的には何枚か平均をとってみる必要がある
画像1枚の解析にかなり時間がかかるので何枚もやる気力がありませんでしたが、本来的には何枚か該当する画像を解析する方が正しいと考えられます。
時間がかかっている要因としては、①衛星画像のデータが大きくダウンロードするだけで結構時間がかかること,②数式を打ち込むのが手間なことが挙げられます。
②の課題についてはpythonでコードを書いてしまえば短縮は可能だと思いますので、次回以降そのあたりにチャレンジしていきたいところです。
・想像以上に東京は雲が多い
衛星画像を探しているときに思いましたが、42.195kmがすべて雲がかかっていない写真は思いのほか少なかったです。
見えている部分だけをパッチワークのように掛け合わせるなどの工夫が要るのかもしれないと思いました。
・間違えたときの再計算が面倒
画像解析ソフトの特性かもしれませんが、計算式が結果ファイルに残っておらず、計算を間違えた場合再度計算を行う必要があり、面倒だなと感じました。
このあたりもPythonでコードをかけるようになると解決する余地があるのかもしれません。
以上、今回は五輪のマラソンをテーマにしましたが、温度差が大きいという意味では箱根駅伝も面白そうかなと思っています。(コースのkmlファイル化が大変そうですが!)みなさまも気になる地域やコースの温度解析にトライされてはいかがでしょうか。
以上、宙畑メンバーが気になったヒト・モノ・コトを衛星画像から探す不定期連載「宇宙データ使ってみた-Space Data Utilization-」の第4弾でした!
次回もお楽しみに!
こういう解析がしたい!のリクエストもお待ちしています!