参照座標系のざっくりとしたお話し

#1.はじめに
QGIS初心者質問グループというところに出没しています.
最近特に感じるのが、思ったよりも多くの方が「参照座標系」で躓いているようだということです。
まだ記事を１本しか書いていないし、「それじゃあ、次は参照座標系について書いてみようか」と思ったのが投稿に至った動機です。

しかしながら、書いている本人の知識がざっくりしたものなので、QGISを使うのに困らない程度の内容です。
「正確には違うよ」とか、突っ込みどころは満載かと思いますが、なにとぞご容赦ください。

#2.地球って丸いよね？
皆さんご存じのとおり、地球は丸い形をしています。
そこで地球上に座標を与える方法で、直感的に理解しやすくて最も普及しているのが、丸い形状のままで座標を与える緯度・経度を用いる方法だと思います。
![globe.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597262/6e284d0e-5d71-2c48-9b23-85d766afe39d.png)

そして地球は丸いけれど真ん丸ではなく、南北方向から少々押しつぶしたような形となっていますので、「地球の形に一番近い楕円体を決めて、それを使って座標を与える」というのが、考え方の基本になっています。
厳密にいうとちょっと違うのですが、GISで使う定義では準拠楕円体のみを使っていますので、まずはこのようにざっくりと押さえておくと良いと思います。

#3.よく使われる測地系
準拠する楕円体と座標の振り方で、特定地点の緯度経度が決まります。これを測地系と呼びます。
日本で良く使われている測地系は、次の4つです。

|測地系|EPSGコード|準拠楕円体|長半径|扁平率の逆数|フレーム|
|:---:|:---:|:---:|:---:|:---|:---|:---|
|日本測地系（Tokyo）|4301|Bessel|6377397.155|299.1528128|日本測地系|
|日本測地系2000（JGD2000）|4612|GRS80|6378137|298.257222101|ITRF94系|
|日本測地系2011（JGD2011）|6668|GRS80|6378137|298.257222101|ITRF94系（北海道、西日本）,ITRF2008系（東日本）|
|WGS84|4326|WGS84|6378137|298.257223563|WGS84系|

「JGD2000」と「JGD2011」の準拠楕円体は同じ「GRS80」なので、定義するパラメータの値は全く同じです。試しにレイヤのプロパティのソースタブで、JGD2000からJGD2011へ（あるいは逆）へ変更しても地物の表示位置は全く変わりません。
さらにWGS84も長半径については全く同じ値で、扁平率の逆数もすごく近い値になっています。これはほぼ同じと言って良いレベルです。
日本測地系（Tokyo）だけがちょっと違いますね？同じ座標値でほかの測地系と比較すると、地上距離で約400mのずれが発生します。

パラメータについてはQGISでも確認できますので、興味のある方はご確認ください。
![CoordinateReference.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597262/69c798cf-6129-5514-a0ec-19afb5f095ea.png)

#4.投影法について
投影法ですぐに思い出すのが、昔、学校で習ったメルカトル地図だと思います。これは北極を上にしてみた地球に、縦方向に円筒をかぶせて投影したものです。
そして投影して何か良いことがあるかと言えば、単位が「度」から「m（メートル）」になることです。
これで距離や面積などを使い慣れた単位で扱うことができるようになります。

ここでもざっくりとした説明にさせてください。
日本でよく使われる投影法のUTM座標系と平面直角座標系の2つと、Web地図に用いられているWebメルカトルを加えて表で整理してみます。
なおWebメルカトルは、名称の頭に「WGS84」とついていますが、地球モデルは楕円体ではなく真球が用いられています。
測地系という基本があって、それが空間参照系によって細分化されているというようにすると把握しやすいかと思います。

投影座標を使う際には、精度の高い順に選ぶというのがわかりやすいと思います。まずは平面直角座標、範囲がはみ出たらUTM、それでも駄目だったらWebメルカトルという感じです。

|測地系|空間参照系|表示名|EPSGコード|
|:---:|:---:|:---:|:---:|
|日本測地系（Tokyo）|地理座標系|Tokyo|4301|
|〃|平面直角投影座標系|Tokyo / Japan Plane Rectanglar CS I～XIX|30161～30179|
|〃|UTM投影座標系|Tokyo / UTM zone 51N～55N|3092～3096|
|日本測地系2000|地理座標系|JGD2000|4612|
|〃|平面直角投影座標系|JGD2000 / Japan Plane Rectanglar CS I～XIX|2443～2461|
|〃|UTM投影座標系|JGD2000 / UTM zone 51N～55N|3097～3101|
|日本測地系2011|地理座標系|JGD2011|6668|
|〃|平面直角投影座標系|JGD2011 / Japan Plane Rectanglar CS I～XIX|6669～6687|
|〃|UTM投影座標系|JGD2011 / UTM zone 51N～55N|6688～6692|
|WGS84|地理座標系|WGS84|4326|
|〃|UTM投影座標系|WGS84 / UTM zone 51N～55N|32651～32655|
|WGS84（真球）|Webメルカトル|WGS84 / Pseudo-Mercator|3857|

#5.Webマップに重ねてみよう
いよいよ本題に入ります。

トラブルでたまにあるのが、地物がズレて表示されるというものです。
ここまでお読みの方はすぐにわかると思いますが、仲間はずれの測地系が1つありましたよね。ズレを確認して400m程度でしたら測地系を誤って設定しています。
この場合は「日本測地系（Tokyo）」にCRSを設定することで解決します。

そして圧倒的に多いのが、地理座標であるデータに対して投影座標のCRSを設定していたというものです。
現象としては地物が全く重ならない、傾斜を計算したらほぼ垂直の地形になるという形で現れてきます。
なぜこのようなことが起こるのでしょうか？

実は「地球って丸いよね?」で述べたように、「直感的に理解しやすくて最も普及しているのが、丸い形状のままで座標を与える緯度・経度を用いる方法」なので、オープンデータとして公開されているは地理座標（緯度経度）で提供される場合が多いと思います。
そしてダウンロードしたデータは距離や面積を測るのに使ったり、傾斜などの地形解析をしたりするためなどで投影座標に変換することが多いです。

良くある失敗は、ここで起こっています。
地理座標で提供されているデータを投影座標に変換するのでは無く、参照座標系を単に投影座標に設定してしまうのです。
正しい手順は、**ダウンロードしたデータに適切な参照座標系を設定して、その後に投影座標に変換する**ことです。

トラブったら、あるいはドラブル前の事前確認にお勧めなのが、データをWebマップに重ねることです。
Webマップの利用方法はいくつかあります。最も利用されているのが「XYZ Tiles」という機能なのですが、初心者でもすぐに扱いやすいプラグインを利用する方法を紹介します。

メニューの「プラグイン － プラグインの管理とインストール」をクリックしてダイアログをを立ち上げてください。
インストールするプラグインは「QuickMapServices」です。
![plugin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597262/3f612d1f-d465-dbc8-2a13-2fa6e180e888.png)
メニューの「Web － QuickMapServices － settings｝をクリックします。
![menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597262/78bec80b-c38d-3b51-6d6c-99bae4d41723.png)
「More services」タブをクリックして下の方にある「Get contributed pack」ボタンをクリックします。
![setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597262/aafc94e3-bb66-0ed6-d47f-62b243d3d720.png)
「Visibility」タブをクリックして、必要なマップにチェックを入れます。使い慣れている「google」などにチェックを入れると良いでしょう。
![list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597262/1a24e8c8-cd98-3bf1-bd92-fec15b0893b4.png)
ダウンロードしたデータや作成したデータをWebマップに重ねて見ましょう。
どうですか？うまく重なりますか？

重ならない場合は、レイヤのプロパティの「ソース」タブの「座標参照系の設定」で適切だと思われるCRSに変更して、地図への重なり具合を確認してください。投影座標系から地理座標系へ変更することで解決することが多いと思います。
#6.座標参照系の変換
うまく重なったら、現在使用しているデータに正しく座標参照系を設定したということになります。次は座標参照系を変換してみましょう。

ベクタの場合はレイヤ上で右クリックして「エクスポート － 地物の保存」でCRSを指定して保存、またはメニューの「ベクタ － データ管理ツール － レイヤの再投影」で行います。
ラスタの場合はメニューの「ラスタ － 投影法 － 再投影（warp）」で行います。

#7.さいごに
メニュ－の「プロジェクト － プロパティ」でプロジェクトのプロパティを見てください。参照座標系というタブがあり、ここでもCRSを設定できるようになっています。
これで混乱する方もいらっしゃいますが、プロジェクトのプロパティで設定するCRSは「どのCRSで使って地図を見せるか」ということに使われるもので、地物の重なりには関係ないものです。
無論、レイヤのCRS同士やプロパティのCRSは統一した方がトラブルが発生しにくくなるのでお勧めですが、今回の話題には無関係な設定となります。

ちょっとまとめます。
QGISで空間参照を適切に設定しないことで、結構多くの方が躓いています。
対策としてはWebマップにうまく重なるか確認することで、多くの場合、解決に向かいやすいです。

400mほどのズレだった場合、日本測地系（Tokyo）に設定することで解決します。
全く地図とうまく重ならない場合は、地理座標のデータを投影座標の設定にしている場合が多いです。
レイヤのCRSを変更してうまく地図と重なったら、参照座標系を変換したものを出力すると良いです。

さて説明はこれで終わりですが、最初に書いたようにかなりざっくりとしたものになっています。
この記事はQGISに慣れるために活用してくださるのには良いと思いますが、GISを本格的に学ぶ方や業務に使う方は、参考書などでご確認くださいますようお願いいたします。