座標系の操作には、データそのものを別の座標系に変更する「再投影」と、データそのものは変更せず、プロパティに記録された座標系の定義のみを変更する「投影法の割り当て」があります。前者は地理座標系のファイルを投影座標系に変換するなどのために使用します。後者は、不適切な座標系が割り当てられていたファイルを修正するために使用します。不適切な座標系が割り当てられているファイルに対して「再投影」を行っても、正しいデータを得ることはできませんし、正しい座標系が割り当てられているファイルに対して不適切な「投影法の割り当て」を行っても、データが使えなくなってしまうだけです。しっかり区別して使用しましょう。
QGISはフリーでオープンソースの地理情報システムです。
例として使うデータについて
下図はベクタデータの例として使うcity.shpとroads.shpです。city.shpはCRSが割り当てられていません。昔のGISデータにはこのようなものがよくあり、別の説明資料がないと正しいCRSを見つけるのは難しいです。このケースだと、幸いTokyo座標系であることが別資料でわかっています。roads.shpはWGS84であることがプロパティから読み取れます。右端の図は、これらのレイヤを重ねて表示したものです。レイヤパネルのcityレイヤの右側に?が表示されており、CRSが認識されていないことがわかります。どちらも緯度経度を用いた地理座標系で、同じ場所の市境界ポリゴンと道路ポリゴンですが、海上に道路が描かれており、位置がずれていることがわかります。TokyoとWGS84は測地系が異なっているためです。
下図はラスタデータの例として使うdem.tifです。プロパティのCRSではJGD2000 / 平面直角座標系と人間の目では読み取れますが、右下のプロジェクトの座標系は「不明なCRS」のままとなっており、QGISには座標系が理解されていないことがわかります。このデータは、ドローン写真を合成するソフトであるMetashapeで作成したもので、座標系も割り当ててあるのですが、QGISとはプロパティの互換性が低いものと思われます。
レイヤパネルでの投影法の割り当て
ベクタデータの例
下図左はcityレイヤで右ボタンクリックしてコンテキストメニューを出した状態です。「レイヤのCRS」-「レイヤのCRSを設定」を選ぶと、右側の「座標参照系の選択」ダイアログが表示されます。cityレイヤの右側の?をクリックしても同じダイアログが開きます。フィルタにTokyoとタイプすると、下のあらかじめ定義されたCRSに選択肢が現れますので、適切なものを選びます。(例えばEPSG:4301と7414をepsg.ioで調べると、4301は日本全体向けの座標系、7414は北海道を除く3島用だとわかります。)
ダイアログのOKをクリックすると、下図のようにレイヤ右の?は消え、道路が海上に描かれることもなくなりました。なお、この方法はデータファイルを変更しませんので、次回も同じようにする必要があります。
ラスタデータの例
ラスタデータに対する操作もまったく同じです。ただ、本稿で準備したデータを用いると、下図左のように、QGISと互換性のない座標系が「カスタム座標系」として表記されています。下図右のようにフィルタであらためてJGD2000 Planeなどの文字で検索すると、同じ名前でもQGISに組み込まれた座標系が検索されるので、これを選びなおすと良いでしょう。その上で、コンテクストメニューから「レイヤのCRS」ー「レイヤのCRSをプロジェクトのCRSに設定」を選ぶことで、プロジェクトのCRSも正しく設定されます。この場合もベクタデータの場合と同様、データファイルには変更が加えられていませんので、次回も同じ操作が必要になります。
ブラウザパネル・レイヤパネルでの再投影
これらのパネルでは、選択したデータを右ボタンクリックして現れるコンテクストメニューからエクスポートするときに、座標系を再投影することができます。ブラウザパネルでは、「レイヤをエクスポート」ー「ファイルへ…」、レイヤパネルでは、「エクスポート」ー「名前を付けて保存…」と、メニューの項目名は違いますが、現れるダイアログはいずれも下図のように同じです。下図左はベクタレイヤに対するもの、下図右はラスタデータに対するものです。(なお、これらを実行する前提として、現在のファイルなりレイヤなりに正しい座標系が設定されていることが必要です。従って、city.shpやdem.tifのようにQGISにCRSが認識されないデータは、いったんレイヤパネルに表示させて投影法を割り当てておくことが必要です。)
最上部の数行で、ファイルの「形式」、出力する「ファイル名」、出力ファイルの「座標参照系」を指定するのはベクタ・ラスタとも共通です。「形式」にはたくさんの候補がありますが、特に理由がなければ元ファイルと同じにしましょう。ラスタの最上部にはベクタにはない「出力モード」がありますが、データとして使用するなら「生データ」を選びます。(「画像」は、RGB画像として保存する時に使用します。)他にもいろいろ設定できますが、再投影するだけならこれだけを設定すればOKです。
以上を設定して「OK」をクリックすると、下図のようなダイアログが表示されることがあります。下図は、cityレイヤにTokyoを割り当てたものをWGS84に再投影しようとした時に表示されました。このダイアログは、再投影するにあたって適用可能な投影法が複数存在する場合に表示されます。この例ではそれぞれ精度や使用エリアに違いがある5つの変換法が提案されていますが、ダイアログの中に判断の助けとなる情報が表示されていますので、落ち着いて良いものを選んでください。場合によっては追加のパラメータのダウンロード・インストールを求められることもあります。
OKをクリックすると、以下のように新しいシェープファイル(city-wgs84.shp)が作成されます。このファイルは新しい投影法に合致するようプロパティもデータそのものも書き換えられていますので、次回使用する時に再投影する必要はありません。
ツールを用いた投影法の割り当て
ブラウザパネル、レイヤパネルではなく、ツールを用いて投影法をファイルに割り当てることもできます。特に、複数のファイルに対して一括して処理を行う時に便利です。ツールバーで歯車のアイコンをクリックすると、画面の右側にプロセシングツールボックスが現れます。検索窓に「投影法」とタイプすると、関連するツールが現れます。
「投影法の割り当て」ツール(QGIS:ベクタ一般)
下図左はベクタ用の「投影法の割り当て」を起動した状態です。ダイアログに「割り当てられたCRS」が2か所にありますが、上の方は「割り当てるCRS]、下の方は「出力ファイル」の誤りでしょうね。レイヤパネルとの違いは、このツールを使うと投影法を割り当てた新しいファイルが作成されることです。また左下の「バッチプロセスで実行」をクリックすると、下図右のダイアログが開き、複数の入力ファイルを選ぶことができます。各カラム上段にあるオートフィルを使いこなせば、「割り当てるCRS」や「出力ファイル」の名前を機械的に生成することもできます。注意点として、「出力ファイル」を直接入力すると、出力ファイル形式が.gpkgとなり、.shpになりません。(しかも実行するとエラーが出ます)かならず入力枠右側の[…]ボタンを押して、「ファイルの種類」で「SHP files」を選ぶ必要があります。
なお、上図右ではcity.shpとroads.shpの両方にTokyo座標系を与えていますが、もちろんroads.shpの方は不正な結果となることはわかりますよね?「割り当て」ツールはデータそのものは書き換えません。roads.shpのデータそのものはWGS84なのにプロパティにはTokyoと記入されることになり、不整合となります。ご注意ください!
「シェープファイルの投影法の定義」ツール(QGIS:ベクタ一般)
「投影法の割り当て」ツールと異なり、新しいファイルを作成せず、元ファイルのプロパティを直接書き換えます。データ形式の変換を伴いませんので、間違いが起こりにくいかもしれません。こちらの方が本命ですね。使い方は、出力ファイルの指定がないだけですので、省略します。
「投影法の割り当て」ツール(GDAL:ラスタ投影)
下図左はラスタ用の「投影法の割り当て」を起動した状態です。 また左下の「バッチプロセスで実行」をクリックすると、下図右のダイアログが開き、複数の入力ファイルを選ぶことができるのもベクタ用と同じです。ただし、ベクタ用の「投影法の割り当て」とは違って、ラスタ用は新しいファイルを作るのではなく、元のファイルのプロパティを書き換えます。 「シェープファイルの投影法の定義」と同じ位置づけですね。
ツールを用いた再投影
再投影についても、ツールを使うと複数のファイルに対して一括して処理を行う時に便利です。ツールバーで歯車のアイコンをクリックすると、画面の右側にプロセシングツールボックスが現れます。検索窓に「再投影」とタイプすると、関連するツールが現れます。
「レイヤの再投影」ツール(QGIS:ベクタ一般)
ベクタファイルを再投影して新しいファイルとして出力するツールです。左下の「バッチプロセスで実行…」をクリックして複数ファイルを一括変換する時に使用するのが良いでしょう。なお、ダイアログには「ラスタのCRS」や「再投影したラスタファイル」と書かれていますが、ベクタファイルに対する操作です。また出力ファイルの形式がいろいろ選択できるのもベクタの「投影法の割り当て」ツールと同様ですので、きちんと適切なファイル形式を選択してから実行しましょう。
「再投影 (warp)」ツール(GDAL:ラスタ投影)
ラスタファイルを再投影するツールです。ブラウザパネルより細かい設定ができます。まず、入力レイヤの座標系が正しく割り当てられていれば、「変換元のCRS」は空欄でも大丈夫です。次の「ラスタのCRS」には変換したい座標系を設定します。「リサンプリング法」は、再変換によりセルの位置がずれた場合に、新しいデータを生成する方法を定義します。たくさんの選択肢がありますが、下図では最も簡単な最近傍としました。新しいセルの位置に最も近い変換元のセルの値をマッピングします。あとは出力ファイルとして「再投影したラスタファイル」を設定すれば大丈夫です。
なお、左下の「バッチプロセスで実行…」をクリックすれば複数ファイルを一括変換することができるのはこれまでのツールと同様です。下図は複数ファイルを処理するダイアログです。
下図左は再投影したdem-wgs84.tifを表示したもの、下図右は元データのdem.tifを表示したものです。どちらのマップビューもまったく同じ範囲を表示しています。プロジェクトの座標系はWGS84なので、再投影されたdem-wgs84.tifはセルの区切りの縦線、横線がマップビューを水平・垂直に区切っています。一方右側のdem.tifは平面直角座標系なので、プロジェクトの座標系とは異なっています。このため、セルの区切りの縦線、横線がわずかに傾いているのがわかるでしょうか。また、値のパターンも中央やや下の黒っぽいセルの横方向の個数など、部分的には大きく異なっています。これは最も近くのセルの値をそのまま取ってくるという最近傍法が原因だと思われます。リサンプリング法によって誤差の出方が異なりますので、試行錯誤する必要があるかもしれません。
おわりに
GISの解析を成功させようと思うなら、使用するすべてのデータの座標系を合わせておくことが大切です。そのためには、本稿の方法が不可欠ですので、十分習熟してくださいね。
Have fun!
コメント