見出し画像

【実習編】QGISに読み込んだCSVのポイントがヘンな所に表示されるんだけど?

I. はじめに

お店の位置情報やAEDの設置場所、ジオコーディングした住所情報、GPSで取得した移動軌跡データなど、座標値を持つデータをQGISに取り込んだけど、他のGISデータと重なってくれない。正しい位置にポイントが表示されない。

GISを使ったことがある人ならば誰しも経験があるのではないでしょうか。しかも、1度ならず2度3度・・・。

今回は、ポイントデータが重ならない時に確認すべきことを紹介したいと思います。まず、II章ではCSVをポイントデータとして読み込む手順を確認します。この手順に沿ってCSVを読み込めば、ほぼ問題なくポイントデータとして追加することができると思います。

そして、この方法でうまくいかなかったとしたら、次の4つの問題が考えられます。これら4つについて、III章~VI章で解説していきます。

1. 正しい座標参照系(ジオメトリのCRS)を選べていない
2. XフィールドとYフィールドの指定が逆になっている
3. 測地系が異なっている
4. そもそも座標値が間違っている


II. CSVをポイントデータとして読み込む

最初に、CSVをポイントデータとして読み込む方法を確認しておきましょう。例として、ここではウェブサイトから背景図用のGISデータとポイントデータとして読み込むためのCSVを入手し、QGISに追加します。

1. データの用意

まず、政府統計のポータルサイト「e-Stat」から背景地図となるGISデータを入手します(※1)。次のリンクから東京都全域のシェープファイルをダウンロードしました。座標系は「世界測地系平面直角座標系」と書かれています。

※1 e-Statは総務省統計局が開発し独立行政法人統計センターが運営する公的統計のポータルサイトです。国勢調査をはじめ様々な統計情報を扱っており、社会統計分析を行うならば必ずお世話になるであろうウェブサイトです。

画像1

続いて、東京都オープンデータカタログサイトから座標値が入ったCSVファイル「警察署所在地情報」を入手します。データのサムネイルを見ると、座標値は10進表記の地理座標で入力されていることが確認できます。

画像2

ヘッダー名が「緯度」、「経度」となっていることから、この数値が地理座標だと判断しています。もし投影座標なら「X」、「Y」と表記することが多いです。値が35度、139度という馴染みのある(?)数値である点も、ポイントです。

---   ---   ---   ---   ---   ---   ---   ---

2. QGISにデータを追加

ダウンロードしたデータをQGISに追加しましょう。

ショートカットキー [ Ctrl ] + [ Shift ] + [ V ] でデータソースマネージャの「ベクタ」を開き、e-Statからダウンロードした東京都全域のシェープファイルを開きます。このとき、エンコーダは「SJIS」を指定します。

次にCSVを追加します。[ Ctrl ] + [ Shift ] + [ T ] でデータソースマネージャの「CSVテキスト」を開き、読み込み方法を設定します。座標は、先ほど確認したように10進数の経緯度値で入力されていたので、座標参照系は世界測地系の地理座標系(EPSG:6668)を選択します。

画像3

[ 追加 ] ボタンをクリックすると、QGIS Ver.3.10以降では下図のようなウィンドウが表示されます。これは、プロジェクトの座標系と、追加しようとしているCSVの座標系が異なっているから内部で変換するよ、というものです。

画像4

プロジェクトの座標系は、最初に追加したシェープファイルの座標系が採用されています。e-Statのウェブサイトに書いてあった「世界測地系平面直角座標系」ですね(※2)。

それに対し、いまCSVの読み込みで指定した座標系は「世界測地系の地理座標系」でした。

異なる座標系のデータ、特に距離で定義される投影座標系と角度で定義される地理座標系を混用するとGISの処理的に都合が悪いので、内部処理で変換するという警告がこのウィンドウです。実際に使う上では、[ OK ] をクリックしておけば問題ありません。QGIS Ver.3.8以前でも、このウィンドウは表示されませんが同じような処理が行われています。

このように、昨今のQGISのバージョンでは、異なる座標系で定義されたデータを混用してもQGIS側で適切に処理してくれるようになっています。しかし、異なる座標系データを混用するとQGISの処理パフォーマンスが落ちます。そのため、投影変換によって使用するデータの座標系を揃えておくことが望ましいです。

※2 ここでは、この警告ウィンドウを表示させるために「世界測地系平面直角座標系」をダウンロードしましたが、e-Statでは「世界測地系の地理座標系」もダウンロードできます。こちら(リンク)から、「世界測地系緯度経度・Shapefile」を選択し、ダウンロードする行政区域を選びます。

データを追加した結果が下の図になります。東京都の背景図の上にポイントデータが表示されており、正しく追加されていそうです。図には載っていませんが、離島でも正しく描画されています。

画像5



III. 正しい座標参照系(ジオメトリのCRS)を選べていない

1. 座標参照系が異なると同じ場所でも座標値が全然違う

次の表は、日本国内を対象としたデータで使われる主な座標参照系と具体的な座標値を表したものです。各行は同じ地点を表していますが、座標参照系が異なると座標値も全然違うことが確認できます。

画像6

II章で見たように、CSVをポイントデータとしてQGISにインポートするには、CSVに記載された座標値に合わせて座標参照系を指定します。このとき、座標参照系の選択を誤るとポイントの表示位置がおかしくなることは、この表からも想像がつくと思います。

---   ---   ---   ---   ---   ---   ---   ---

2.  ワザと座標参照系の設定を間違えてみる

試しに II 章のデータを用いて、CSVを間違った設定で読み込んでみましょう。

下の図は、本来は地理座標系を選択すべきところを、平面直角座標系第IX系(EPSG:6677)を選択してCSVをインポートした結果です。ポイントレイヤは追加されましたが、その表示位置がおかしいですね。

画像8

このポイントはいったいどこにあるのでしょう。背景図に地理院地図を追加してポイントがある場所を拡大すると、千葉県北部のとある民家の中に密集していることが分かりました。

画像9

なぜ、千葉県北部にポイントが密集してしまったのでしょう。例えば、東京都中央警察署の所在地は、(緯度、経度)=(35.680428、139.763231)の位置になります。このとき、座標値の単位は角度です。

しかし、今回は平面直角座標系第IX系としてインポートしたので、QGISはこの数値の単位をメートルとして処理しています。つまり、原点から北に約35m、東に約140mの場所にポイントが打たれました。そして、平面直角座標系第IX系の原点は、緯度が36度0分0秒、経度が139度50分0秒の場所にあります。これが、千葉県北部にポイントが表示された理由です。

---   ---   ---   ---   ---   ---   ---   ---

3.  座標参照系を正しく指定するには

それでは、座標参照系を正しく指定するにはどうすればよいでしょうか。まず大前提として、データ提供元に座標参照系の説明があるはずなので、それをしっかり確認しましょう。

傾向として、インターネット上にある座標値データの9割以上は地理座標系で示されています。したがって多くの場合、座標参照系には世界測地系の地理座標系を選択すればよいでしょう(※3)。
地理座標系の座標値は、日本付近では緯度35~41度前後、経度130~140度前後を取ります。座標値から判断しやすいのが特徴です。

※3 世界測地系の地理座標系にはJGD2000(EPSG:4612)とWGS84(EPSG:4326)、JGD2011(EPSG:6668)の3種類があります。JGD2000とJGD2011の違いは、2011年東北地方太平洋沖地震によるズレの修正の有無です。WGS84はGPSで取得したデータに利用されています。しかし、この3つの誤差は数メートル未満なので、あまり気にしなくても問題ありません。

平面直角座標系は、自治体が整備・公開するデータでたまに見かけます。平面直角座標系は第1系から第19系まであり、それぞれ別物です。座標値の数値を見ても、使用されている座標参照系を判断することは困難です。データ提供元の説明を確認することが大切になります(※4)。
また、平面直角座標系は、東京大学アドレスマッチングサービスを利用して住所を座標値に変換したときにも登場します。これについては、IV章でも扱います。

※4 平面直角座標系は、地域ごとに利用する系が分かれています。例えば、大阪のデータなら第6系、東京のデータなら第9系というように提供地域から座標系を推測することができます。

UTM座標系について、これを使ったデータ提供はほとんどありません。あったとしても、他の座標参照系のデータも一緒に提供していることが多いので、インポートの設定で選択することはほぼ無いと思います。UTM座標系は赤道上に原点があるため、座標値は地理座標系や平面直角座標系よりも桁違いに大きな値になっています。ただし、UTM座標系も第51帯~第56帯までありそれぞれ別物なため、データ提供元の説明を確認しなければ正しい座標系を選択できません。


IV. XフィールドとYフィールドの指定が逆になっている

1. XフィールドとYフィールドに指定する列の設定

QGISで座標値をポイントデータとして読み込むとき、XフィールドとYフィールドの指定を行います。当然ですが、ここでXとYの指定を逆にすると、ポイントを正しく描画できません。

XとYに指定する値は次の表のとおりです。

画像7

座標値が地理座標系の場合、Xには経度、Yには緯度を指定します。この対応関係は絶対に覚えましょう。

投影座標系も地理座標系と同じく、Xには東西方向(経度方向)の座標値、Yには南北方向(緯度方向)の座標値を指定します。
ここで注意すべきことは、投影座標系では東西方向をY座標、南北方向をX座標と呼ぶので、QGISのフィールド名と座標のアルファベットの対応が逆になっていることです。

---   ---   ---   ---   ---   ---   ---   ---

2.  ワザとX・Yの設定を間違えてみる

ここでも、XフィールドとYフィールドの指定をワザと間違えてCSVを読み込み、その結果を確認してみましょう。上の表と逆の指定を行っています。

画像10

地理座標系では、ポイントレイヤは追加されましたがポイントは表示されません。これは、本来は経度の座標値を緯度として読み込んだとき、その値が緯度の定義域(-90度~90度)を超えているためです。

投影座標系では、ポイントレイヤが追加されポイントも描画されました。しかし、正しいポイント分布から90度回転した状態で描画されています。

---   ---   ---   ---   ---   ---   ---   ---

3.  東京大学アドレスマッチングサービスの注意点

この設定でミスを犯しやすいのは、東京大学のCSVアドレスマッチングサービスで得た座標値を読み込むときだと思います。最後に、この注意点について紹介します。

アドレスマッチングサービスとは、住所情報をもとにGISで利用可能な座標値情報を付加してくれるサービスです(※5)。中でも、東大アドレスマッチングサービスは無料で利用できるサービスであり、大学等のGISの講義では必ずといってよいほど紹介されます(※6)。

※5 アドレスマッチングはジオコーディングとも呼ばれます。
※6 東京大学アドレスマッチングサービスはマッチング精度が街区レベルです。近年は、地番レベルの精度でマッチングできるAPIがESRI、OSM、Google等で公開されており、そちらを使う方が良いと思います。

下図は、東大アドレスマッチングサービスの画面です。設定の最初に「対象範囲」という項目があり、付与する座標値の座標参照系を選択します。ここで、特に理由が無ければ「全国街区レベル(経緯度・世界測地系)」を選択しましょう。これを選択すれば、座標値が緯度・経度で与えられるので、後はII章にある手順に沿ってポイントデータにすることができます。

画像11

ミスを犯しやすいのは、「公共測量座標系」と書かれている設定を選択した時です。ここで「公共測量座標系」とは平面直角座標系のことで、地域に応じて第1系~第19系で座標値が付与されます。

下図は、住所列の住所を対象としてアドレスマッチングしたCSVファイルです。「公共測量座標系(世界測地系)」を選択したので、fX、fY列の数値は平面直角座標系の座標値になります。fXは南北方向、fYは東西方向に対応しています。これをQGISでポイントデータとして表示するには、XフィールドにfY、YフィールドにfXを指定します。

画像12

さて、東大アドレスマッチングサービスの設定項目には、「x,yを反転」というオプション設定があります。そして、下図はこの設定にチェックを入れて座標値を付与したCSVファイルです。上図と比較してみましょう。どこが変わったでしょうか?

画像13

よく見ると、fXとfYの値が逆転しています。そのため、このCSVをQGISで読み込むには、XフィールドにfX、YフィールドにfYを指定します。つまり、アルファベットの対応通りに設定すればよくなります。

一見すると親切設計にみえる「x,yを反転」機能ですが、これこそが、Xフィールド・Yフィールドの設定における最大の落とし穴です。

これにより、ただでさえ地理座標系と投影座標系で混乱しがちなところに、「x,yを反転」させたかどうかまで考慮しなければならず判断が複雑になります。

それ以上に問題なのは、CSVファイルに「x,yを反転」機能を使ったかどうかを確認できる情報が付かないことです。アドレスマッチングサービスを利用した本人が、利用後すぐにQGISにデータを取り込めばまだミスは起きにくいかもしれません。しかし、時間が経ってから作業したり、データを他者に提供し他者がQGISにインポートしたりする場合は、高い確率でXとYの設定を間違えることになるでしょう。

以上より、XフィールドとYフィールドの指定ミスを防ぐために東大アドレスマッチングサービスで注意すべきことは2つです。

・ 「全国街区レベル(経緯度・世界測地系)」を選択する。
・ 「x,yを反転」機能は使わない。

---   ---   ---   ---   ---   ---   ---   ---

4.  練習問題

最後に問題を出します。下図のようなデータを持つ CSV を QGIS にインポートするとき、XフィールドとYフィールドはどのように指定すればよいでしょう?

画像14

lng は経度を意味する longitude の略、lat は緯度を意味する latitude の略です。したがって、IV章冒頭の表を確認すれば、Xフィールドにlng、Yフィールドにlatを指定すればよさそうですが・・・?

データをよく見てみましょう。lng(経度)列の東京の値をみると、35.709…となっています。一方、lat(緯度)は139.731…です。

実は、このデータは緯度と経度のヘッダー名が逆に名付けられた誤りのあるデータです。そのため、ヘッダー名だけを見てX・Yフィールドを指定すると、ポイントが正しく読み込まれません。

本来、ヘッダー名はその列のデータを説明するものですが、人が整備するものなので誤りもあります。その誤りに気付かず教科書通りにX・Yフィールドを指定しても、ポイントは正しく表示されません。ヘッダー名の誤りは、意外とよくある落とし穴です。CSVを読み込む前にその中身を確認することも大切です。


V. 測地系が異なっている

1. 世界測地系だけ考えておけば良い 

測地系とは、地球をどのような形として考えるか?というモデルを示したものです。測地系の詳細は解説編に譲ることとし、ここでは間違えると問題が生じる次の2つに絞って解説します。

・ 日本測地系(東京測地系、旧測地系)
・ 世界測地系

日本測地系は、かつて利用されていた測地系です。2002年に測量法という法律が改正され、以降は世界測地系を使うことが定められました。

つまり、現在は基本的に世界測地系の適用だけを考えればよいです。日本測地系を考慮しなければならないのは、2002年以前に整備されたデータを扱う時だけです(※7)。

※7 実際には、法改正後もしばらくは現場の理解が伴わなかったので、2010年くらいまでのデータの中には日本測地系のものも紛れていると思います。また、これまで役所内に埋もれていた2002年以前に測量された日本測地系に準拠したデータが、近年のオープンデータ化の波に乗ってさも新しいデータかのように公表されることがあるのではないかと心配しています。

---   ---   ---   ---   ---   ---   ---   ---

2.  ワザと測地系の設定を間違えてみる

世界測地系のデータを日本測地系で読み込むとどうなるか確認してみましょう(※8)。下の図で、黄色で示したポイントが、世界測地系のデータを日本測地系で読み込んだ誤った地点です。比較のため、世界測地系で読み込んだ正しい地点を赤いポイントで示しています。都道府県単位の縮尺で見ればその違いは目立ちませんが、拡大するとどの地点も北西方向に約450mズレていることが分かります。

※8 具体的には、次のように座標参照系を設定しています。
・日本測地系:Tokyo(EPSG:4301)
・世界測地系:JGD2011(EPSG:6668)

画像15

このように、日本測地系と世界測地系の設定を間違えると、北西・南東の軸に沿ってズレが生じます。ズレの大きさは、地域によって異なりますが約400~450mになります。この2つのズレの特徴を覚えておくことで、CSVを取り込んで「ポイントの表示位置がなんか変だな?」と違和感を覚えた時、測地系の設定ミスを疑うことができます。


VI. そもそも座標値が間違っている

III章~V章のどれにも該当しないにも関わらず正しい位置にポイントが表示されない場合は、そもそも座標値が間違っているかもしれません。

座標値を自分で用意した場合、計算ミスやデータ処理に問題が無かったかチェックしましょう。例えば、60進数の経緯度を10進数に変換する時に、計算方法を間違えているかもしれません。標準地域メッシュコードからメッシュの中心点や四隅の座標を求める処理も複雑でミスしやすいです。GPSで取得した場合は、精度が悪かったり何らかの動作不良で異常な値の座標値が含まれることもあります。

Webサイト等から入手したデータの値が間違っていた場合は、利用者側でデータを修正するのは困難です。公開元に問い合わせてみましょう。


VII. おわりに

今回は、CSVの座標値をポイントとして取り込むという操作に焦点を当てて紹介しました。

この操作において、地理座標系の設定はこうする、平面直角座標系ではこうする、と考え出すと混乱します。極端な話、「座標値は地理座標系しか扱わない、インポートには地理座標系しか指定しない」のようなルールを設けて作業を単純化することも、ミスを減らす手段の1つです。

II章で地理座標系(緯度・経度)のデータだけを用いて作業手順を紹介したのも、そのような意図があってのことです。地理座標系の座標値さえ取り込むことができれば、困ることはほとんどありません。

III章~V章では、QGISの設定で間違えやすい箇所を紹介しました。特に、設定を間違えたときの描画例を載せた解説は、これまでほとんど無かったと思います。

間違えたら間違えたなりの結果が可視化されるところがGISの優しい点です。失敗の基本パターンを知り、ミスしてもその原因にすぐに気づける対応力を身に付けましょう。

記事の内容でもそれ以外でも、地理やGISに関して疑問な点があれば、可能な限りお答えしたいと思います。