電子地図関連のお仕事をする際の基本 ～その②～

# はじめに

[前回の記事](https://qiita.com/Keisuke_Fujiwara/items/bc7edc60a14c5b7a2a3b) で防災データ作成のために、電子地図の仕組みを説明して、今回は地図データの取り扱いについて説明したいと思います。

地図データを作るということは、簡単に言えば背景地図に重ねるデータの層、レイヤーを作るということに帰結します。そして、

`レイヤーってどう作成するのか？という話になりますが、はっきり言って専用のソフトを使えばデータ読み込むだけで大半は片が付く楽な作業です。`

という締めで終えたんですが、実際にデータを扱うにはそれなりの前提知識が必要になるので、いきなりツールを起動してもちんぷんかんぷんな結果になるだけです。

一例を示しますと。
下の図は、日本のある河川の浸水想定区域のデータを取り込んで、地図上に表示したものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145985/2c206eec-e3aa-a0ab-424e-aa1b43e4bdf4.png)

どこだここ？という結果になります。で、ズームアウトをして全体像を確認すると、、、、

![picture2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145985/40b32806-3d8b-3cf3-f773-ab3b4cf852ee.png)
#### 日本のデータなのにフィリピンに表示されると。。。何コレ？

実は地図データというのは、データとしては特殊な形式の物を扱うので、往々にして地図上で位置がズレたり、描画にやたらと時間がかかったりするのです。
（さすがに上の様な例が発生したのは数えるほどですが、、、）

なので、電子地図の大まかな仕組みを理解した次のターンは、そこで取り扱う地図データについて知る必要があるのです。

# そもそも電子地図って、どういう枠で認識してるの？

地図データに限らず、平面の図形を表現する際にデジタルデータでは`xy 座標平面`を使用します。例えば、下の図のように点、線、面は表現されます。
![picture3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145985/10ad9c7c-68e1-d68b-4ad4-837095e820cf.png)
それを背景の地図と重ねる訳です。
xy 座標平面になるわけですから当然どこが原点になるのか？これが次に重要な話になります。

皆さんがパッと思いつくのはこんな感じではないでしょうか？
![picture4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145985/a7633fbd-de1b-b31c-2ec4-f5e30b893b0b.png)
緯度経度がそれぞれ 0 になる地点を原点に、北緯と東経を正の領域に、南緯と西経を負の領域にする。こんな座標平面になるのでは、と。

概ね、この考えを基準にしてOKなんです、、、と言いたいところですが、そんな訳にはいきません。

ここで中学校の社会の授業を思い出してみて下さい。
モルワイデ図法、正距方位図法、メルカトル図法等々、様々な地図の書き方を勉強したはずです。

ちなみに上で示しているのは、メルカトル図法になります。
この図法、角度が正しく、緯線と経線が直角に交わるため、xy 座標平面で図形を表現するデジタルデータとの相性が良いのです。

しかし、思い出して下さい。この図法それ以外が正しくない、結構とんでもないものでは無かったでしょうか？

* 方角が正しくない：東京から真っ直ぐ東に向かってもアメリカへは向かいません。
* 大陸の形が正しくない：球体の地球を無理やり、長方形に調整しているわけです。上図の南極大陸は酷い有様ですよね。
* 面積が正しくない：形がそもそも歪んでいるのです。面積が正しい訳が無い。
* 距離が正しくない：同上。

というわけで、いきなり世界標準はこの地図、この範囲で地図データを表現するのだ！！という訳にはいかないのでした。

# 測地系と座標系

さて、地図データを作るためには、予め図形を描くためのキャンパスを決めなきゃいけないということが分かったかと思います。
具体的に決める初期のパラメータは、測地系と座標系の2つになります。
（規格としては1つのセットにまとまっているので、パラメータとしては測地系を決めれば、自然と座標系も決まるかと。）

<dl>
  <dt>測地系：地球上の位置を緯度・経度・標高を用いる座標で表すためのシステム</dt>
  <dd>要はベースとなる地球の形を決めましょうという話</dd>
  <dt>座標系：地球上の特定の場所を示すための座標値の求め方</dt>
  <dd>要は北緯XX度YY分と表記するか、Y座標に+ZZ m(メートル) と表現するかという話</dd>
</dl>

まずは、測地系から解説していきます。地球の形という話ですが、地球は球体だとよく表現されますが実際は楕円形です。さらに言えば、所々に山脈があったり、谷底があったりで表面上もデコボコしているわけです。

なので、世界規模に領域を拡大していくとデータが丸められて正確な値や形から少しずつ遠ざかっていくわけです。（全データを正確に表現した地図規格なんてものを作れる人はいません。。。）

こうした理由から、我々は地図データを扱う際に、範囲の広い世界測地系と日本独自の測地系（日本の地理に特化した地球の形を定義）するという2つの測地系のいずれかを選択することになるのです。

* 世界測地系：WGS84
* 日本測地系：JGD2000、JGD2011

上の他にも各国の測地系がありますし、日本の測地系も年度ごとに測量のやり方や範囲の取り決めの違いによって複数の測地系が生まれています。
ただまぁ、あまりややこしいことを言ってもという話なので世界と日本の2つがあるよ、と認識してもらえればと思います。

次に、座標系になりますが違いとしては、度で表現するか、メートルで表現するかという単純な話になるんですが、その理由を説明しだすともう大学の一般教養の講義を受けて下さい、というほどのマニアックな話になります。

個人的にはこちらの羽田 康祐さんという方が書かれている記事が分かり易くてお勧めです。

https://www.wingfield.gr.jp/archives/9721

1度をメートルに変換するのがこんなにも大変な話になるとは、、、

<dl>
  <dt>度で表現する：緯度経度座標系 (球形座標系)</dt>
  <dd>広範囲を扱う小縮尺の座標系</dd>
  <dd>WGS84やJGD2011といった測地系はこちらを採用してます。</dd>
  <dt>メートルで表現する：XY座標系(数学座標系)</dt>
  <dd>狭い範囲を測量する際に適した座標系</dd>
</dl>

区分としては上の2つになるので分かりやすいかと。

# 基礎知識としては、これで半分ですかね、、

はい、というわけで `「地図データ作成作業を始める前に、測地系と座標系を決めて、絵を描くキャンパスを設定してやる必要があるよ」`というのがこの記事のまとめになります。

この記事を書いた2021年12月時点では、下の2つの測地系を把握していれば問題無いかと。
（JGD2011 はまだそこまで既存の地図データには使われていないみたいです。これからかな？）

* WGS84
* JGD2000

ちなみにJGD2000 は、より詳細形式として沖縄から北海道まで全19の区分に分けて規定しています。
（九州は2系、関西は6系、関東は9系のようになってます。）

さて、ここまでくれば最初のデータがなぜフィリピンに表示されたかが分かるかと思います。

実は、あの地図データにはある欠損があって、自身の測地系と座標系の設定データを失っていたのです。このため、ツールが無理やり世界測地系WGS84を基準に描画した所、相対的な位置がずれてフィリピンまですっ飛んで行ったという訳です。

# さて、次こそようやく本題のデータの話に入れる

作業前に何故、こんな小難しい話が要るんだというツッコミを以前スキトラした新人さんから頂いたんですが、理由は簡単です。

#### ちゃんと表示されません、位置がズレました、この手の話の6，7割が測地系と座標系に関係するからです！！

前例の極端なズレならすぐ気付けますが、実際のズレって軽微な場合が多いんです。しかし、地図上で2cm でもズレると大問題になります。例えば、そんな状態でお店や施設にたどり着けますか？という話になるからです。

災害情報になると安全経路や避難指示に直結するのでなおさらです。

とまぁ、ここできっちり理解しないまま、データを作らせる、触らせるとことは多分無いでしょう。

理解してもらえたならば、次こそデータ作成のための話に移れるんです。
・・・・・・データ結構種類あるけどね、、、

次回はそんなお話。