QGIS初心者がCRSの設定ではまったこと

判っている人にとっては当たり前のことでも、知らない人は思いもつかないことがある。
今回身をもって思い知った。

QGISは以前触ったことがあるものの、頻繁に使うわけでもない。まあ初心者といってもいいだろう。
オープンソース系で活発な活動を行っているソフトだけに、1年前の情報は使えない場合も多いので、今回使うに当たって、予習をすることにした。

QGISは、最新版の安定版(3.4.7)をインストールしてテストを開始した。
目的としては、CSV形式のデータをQGIS上で表示・印刷することだ。
地図イメージは国土地理院のタイルマップを用いることにした。

流れとしては次のようになる。

  1. プロジェクトの新規作成
  2. 地理院タイルマップをレイヤーに追加
  3. CSVデータのレイヤーにインポート

QGISでは、プロジェクトに座標参照系を設定することはもちろん、レイヤー毎に座標参照系を設定できる。
座標参照系は、JGD2011か、さらにいうと日本の平面直角座標系(JGD2011で各系)にしたい。

まずは、プロジェクトの座標参照系をJGD2011(EPSG:6666)に設定した(実はこの選択にも問題がある)。
次に地理院タイルマップをレイヤーに追加する。この時点でなぜかプロジェクトの座標参照系がWGS 84/Pseudo-Mercator(EPSG:3857)に変わる。
地理院タイルのプロパティを見るとこの座標参照系がセットされているので、これに引っ張られているのだろう。

プロジェクトの座標参照系をおもむろにJGD2011(EPSG:6666)に直す。
そうすると、地理院タイルが表示されなくなる。
通常レイヤーを右クリックして「レイヤーの領域にズーム」をクリックすれば座標系の変換がうまくいっておればそのレイヤーの全体が表示されるので、そうしてみるが、白い画面だけが表示される。
ここで勘違いだが、地理院タイルのレイヤーの座標参照系をJGD2011(EPSG:6666)にすれば正しく表示されるのではないかと思いつく。
そうすると、正しく表示されているように見える。ただし、妙に縮尺が大きかったり、座標表示を度分秒にするとおかしな値を示す。

この状態でCSVのインポートを行う。QGISのVer.2.x.x系とは異なり、インポートは、メニューのレイヤ→レイヤの追加→CSVテキストレイヤの追加を選択する。
QGISでは、メニューの構成がよく変わるのでそのたびに探すことになる。

ファイル名等は良いとして、GIS上に表示させるには座標を読み込ませる必要がある。
ダイアログのジオメトリ定義を開いて、ポイント座標のXフィールドと、Yフィールドを設定する。
ここで、CSVの1行目がカラムヘッダーである場合、その定義名を指定できる。X,Yをそれぞれ指定して、ジオメトリのCRS(座標参照系)をJGD2011(EPSG:6666)に指定して追加をする。

さて、どうなるかというと、追加したポイント座標は大西洋のアフリカ沖(北緯0度東経0度付近)にポイントされる。
度分秒のチェックを入れて、それに対応したフォーマットのCSVを用意しても同じ結果である。

何が悪いのかよくわからず、座標参照系をいろいろ変えて試行錯誤した。
インターネットや各種情報では、判を押したように以下のように説明している。

  1. CSV読み込みの座標(X,Y)は緯度経度の浮動小数点値である。
  2. 読み込み時の参照座標系は好きにして良い。

どこを間違ったのだろうか?
実を言うといくつも間違いがあって、それが複合していた。

  1. 地理院タイルレイヤーの座標参照系を変更した。(これはソースの参照座標系なのでそのままにしなくてはならない)
  2. unitがメートルの座標系を選択していた
  3. CSV取り込みに関する情報は正確な説明ではなかった

1番目は、説明不要だがレイヤーのプロパティで設定する参照座標系は、例えばタイルのオリジナルの作成座標系を指定しなくてはならず、通常は読み込み時の座標系で正しい。これを変えるのは、間違った座標系が初期設定されているか、座標系が不明になっている場合だ。

2番目は、インターネットでも書籍でも記事を見かけない。当たり前といえば当たり前なのだが、座標参照系の種類によって、座標は緯度経度であったり、XYのメートルであったりする。実を言うとJGD2011(EPSG:6666)はメートル座標系なのだ。一方、JGD2011(EPSG:6668)は緯度経度で表す。

3番目は、2番目の問題と同根である。取り込み時の座標とCRS(座標参照系)の設定は次のように表現するのが正確だろう。

  1. 取り込む座標系に即したXとYをCSVに設定して、その値のあるカラムをXフィールドとYフィールドに設定する。
  2. 参照座標系は、X,Yに設定した座標を示す参照座標系を選択する。

緯度経度で設定した座標であれば、例えばGPSで取得した座標は通常WGS84であるはずなので、Xに経度、Yに緯度を与え、CRSにはWGS 84を設定する。
平面直角座標系で設定した座標であれば、Xに平面直角座標系のY値を、Yに平面直角座標系のX値を与え、CRSにはJGD2011の各系を設定する。XYが逆なので注意が必要だ。

今回の一件は、注意深く考えていれば当たり前のことに躓いている案件だ。

なお、Ver3.x.x系では、CSV読み込みの設定に度分秒のチェックがあり、度の小数点表記でなくとも読み込めるようになった。
例えば、34度45分12.33秒は、34(半角スペース)45(半角スペース)12.33と半角スペースで区切ったり、あるいは/などで区切りを入れることで取り込みが可能だ。繰り返すようだが、この場合においてもCRSを平面直角座標系などにすると間違った場所にポイントされる。