世界地図がどれだけ歪んでいるか実感する

# TL; DR
我々がふだん目にする世界地図はこのくらい歪んでいます。

|![tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/1166eb53-d3d5-9d85-f652-d1175743eacd.png)|![tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/123ec263-5e3b-d58d-c29d-7685ade7c5cc.png)|
|:---:|:---:|
|よく見かける世界地図|そのおそるべき実態|

# 世界地図の作り方
「地図」は我々の日常にありふれたものです。しかし地図を作るのって意外と大変です。我々は地球という「球」の上に住んでいるわけですが、これを地図という「平たい紙」に書き写すといろいろな**不具合**が生じます。具体的にはこんな感じです。

- 地形が激しく歪む！
- 面積が狂う！
- 地球上での最短経路が地図上では最短経路にならない！
- 地点間の角度がめちゃくちゃになる！

地図には[様々な種類](https://ja.wikipedia.org/wiki/%E5%9C%B0%E5%9B%B3%E6%8A%95%E5%BD%B1%E6%B3%95%E3%81%AE%E4%B8%80%E8%A6%A7)があり、それぞれが一長一短です。そんな中でも、**ミラー図法**というのが大多数の方が想像する「いわゆる世界地図」になると思います。

|![tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/45526fb8-00af-0e3b-e33c-190f946c1570.png)|
|:---:|
|自作のプログラムで加工したミラー図法地図（加工元データの出典：[NASA](https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography)）|

本題に入る前にこのミラー図法の作り方について説明します。

## 正距円筒図法
地球上の一地点は**緯度・経度**によって指定されます。たとえば東京タワーはおおむね北緯 35 度、東経 139 度の位置にあります。

ところで地理情報を数学的に取り扱うときには緯度・経度をそれぞれ $\phi$, $\lambda$ と置くそうです。緯度は北向きを正、経度は東向きを正とするのが一般的なようです。よって東京タワーの座標はざっくりと $(\phi, \lambda) = (35^\circ, 139^\circ)$ と表せます。

さてこの一方で地図は平面ですから、$x$ 座標と $y$ 座標で位置があらわされます。つまり地図を作るには**緯度・経度から $x$ 座標・$y$ 座標への変換**が必要になるのです。

ここで説明する**正距円筒図法**は実に単純明快な変換を用います。[^plate-carree]

[^plate-carree]: 赤道が真ん中に来る場合。そうでない場合は[ちょっとだけ複雑](https://ja.wikipedia.org/wiki/%E6%AD%A3%E8%B7%9D%E5%86%86%E7%AD%92%E5%9B%B3%E6%B3%95)になります。

```math
\left\{
  \begin{array}{ll}
    x = \lambda \\
    y = \phi
  \end{array}
\right.
```

正距円筒図法の地図はこんな感じです。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/736df6de-42bf-bf56-4a22-820b1b191443.png)|
|:---:|
|正距円筒図法地図（出典：[NASA](https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography)）|

見慣れた世界地図に比べるとアメリカの方がつぶれてますね。この地図は赤道上、もしくは経線上において距離関係が正しく保たれています。その代わり面積や角度は狂っています。

## メルカトル図法
正距円筒図法の地図を「逆グーデルマン関数」というものを使って縦方向に引き伸ばしたものを**メルカトル図法**といいます。

```math
\left\{
  \begin{array}{ll}
    x = \lambda \\
    y = \mathrm{gd}^{-1}(\phi)
  \end{array}
\right.
```

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/1991e28f-d25b-ead5-4fdc-2da07d215110.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/5cead1ce-895e-e577-62e8-2239369d1d24.png)|
|:---:|:---:|
|メルカトル図法地図（[パブリックドメイン](https://commons.wikimedia.org/wiki/File:Mercator-projection.jpg?uselang=ja)）|逆グーデルマン関数（[パブリックドメイン](https://commons.wikimedia.org/wiki/File:GudermannianInverse.svg)）|

縦に伸ばすことのメリットですが、メルカトル図法の地図上での直線は**等角航路**になります。メルカトル図法地図において出発地と目的地を結ぶ直線と経線の角度（**舵角**）を測り、あとはコンパスを頼りにひたすら舵角の方へ進んでいけば目的地に着きます。つまりメルカトル図法地図は**海図**にとても向いていたのです。

ただしメルカトル図法地図には見過ごせない欠点もあります。一つ目は地図の上と下の方で面積が激しく歪むということです。例えばグリーンランドなんかは超巨大に描かれてしまっていますが、実際には大した大きさではありません。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/694282e7-31e4-0ee6-a4f1-db460b427da7.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/5b948cb4-950e-71ed-ceb6-30399c926448.png)|
|:---:|:---:|
|メルカトル図法地図上での日本とグリーンランド（出典：[The True Size Of ...](https://www.thetruesize.com)）|概ね正しい面積比（出典：同左）|

もう一つの欠点ですが、用途次第ではこれが致命的です。メルカトル図法の地図においては、地球全域を描くのに**無限の面積**が必要になってしまうのです。なので巷で見かけるメルカトル図法の地図は実は北端の方と南端の方を切り取っています。切り取らないとこんな感じになってしまいます。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/02382cd6-824d-aa0b-7baa-a44724e033cb.png)|
|:---:|
|南極がデカすぎるメルカトル図法地図（出典：[esri](https://desktop.arcgis.com/ja/arcmap/latest/map/projections/mercator.htm)）|

## ミラー図法
メルカトル図法の地図は面積が無限になってしまう欠点がありましたが、メルカトル図法の計算式をちょっといじくることでこれを回避したのが**ミラー図法**です。

```math
\left\{
  \begin{array}{ll}
    x = \lambda \\
    y = \frac{5}{4}\mathrm{gd}^{-1}\left(\frac{4}{5}\phi\right)
  \end{array}
\right.
```

|![foo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/70ecd7c7-9378-7a3a-f641-b49b9a126e88.png)|
|:---:|
|自作のプログラムで加工したミラー図法地図（加工元データの出典：[NASA](https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography)）|

正距円筒図法のように潰れてもいませんし、メルカトル図法のように面積が無限になることもないので見やすい世界地図になっています。その代わり正距円筒図法と違って距離は狂っていますし、メルカトル図法とも違って角度も狂っています。ついでに面積も狂っています。~~ぶっちゃけ「見やすい」こと以外の実用性はありません~~

# 本題
この記事の目的は我々が普段目にする世界地図、すなわちミラー図法の地図の歪みを分かりやすく実感したいというものでした。そこで、**地球をぐるぐる回すことで、ミラー図法地図がどのように変化するか**を動画形式でお見せしたいと思います。

動画の作成に使用した地図画像は NASA のサイトから一番解像度が高いやつをもらいました。画像データなのに 600 メガバイト以上あります。

https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography

また動画の作成に利用したプログラムのソースコードはこちらになります。

https://gist.github.com/reika727/474eae91c6220e2ea6c18e028c9d10f0

画像処理にも動画の書き出しにも OpenCV が使えました。しかも並列計算もできるので爆速です。便利ですね～。

## ヨー
まずは**ヨー**（$z$ 軸周りの回転）からです。ちなみに以下の動画は無駄に 1080p 60fps です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/7rFXsIMZyl8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

・・・まあ、これに関しては「うん、だろうね」って感じの結果だと思います。次からが本番です。

## ピッチ
お次は**ピッチ**（$y$ 軸周りの回転）です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/uZKstWNTmPg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

**ぐにゃんぐにゃん**になっています。また先ほども述べたように、地図の上の方と下の方で激しく歪んでいるのがわかると思います。

## ロール
最後に**ロール**（$x$ 軸周りの回転）です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/D_BCr3bbRh0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

こちらもぐにゃぐにゃです。やっぱり上の方と下の方で激しく歪んでいます。

# まとめ
**やっぱり地球儀がナンバーワン！！**
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507500/35366925-9a1e-f14a-33f2-fdcd66182f8d.jpeg" width = 50% />