MySQLの地理情報データをQGISで表示する方法

この日記は、 RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2020 の14日目ぶんとして後から書いているものです。

この日記は

 QGISという GISの専用ツールがあります。 QGIS が何かについては私も語るほど整理できた情報を持っていないので、とにかく地理情報(緯度経度等の情報)のデータを、表示したり色々したりできるツールです(雑な説明)。
この、QGISからMySQLにアクセスし、MySQLのデータを表示する試みを紹介します。本日記ではとりあえず、Windows上で MySQLに接続して、テーブルまるごと表示するところまでです。
f:id:sakaik:20201224230835p:plain

概要

 実は非常に苦労して、あれこれトライしていたのですが(MySQLに接続されるものの、データが表示されなかった)、QGIS を 3.10 から 3.16 に上げたら、あっさりと表示されるようになりました。なので、この日記で紹介するものは、非常にシンプルです。 なんだったんだ、この数日の苦労は。。でも嬉しい。


 以下、手順を示します。

QGIS のインストール

 QGISWindows 10 にインストールします。今回成功したバージョンは 3.16 です。

MySQL にデータを用意

 以下の日記を参考にするなどして、適当なデータをMySQLに登録しておきます。今回動作しているのは MySQL 8.0.22 です。
sakaik.hateblo.jp
 私は、上の日記を書いたあとで、全国の境界値データと、全国の湖沼データを登録しておきました。

QGIS から MySQL への接続情報の登録

 レイヤ - データソースマネージャ を開きます。
左ペインで「ベクタ」を選択し、
 ソースタイプ:データベース
を選択。

データベース は「新規」を押して、以下の画面のとおりに設定。名前はお好きな名前で。
 タイプ:MySQL
 ホスト:localhost
 データベース:(データの入っているデータベース(スキーマ)名)ここでは shptest
 ポート番号:特に設定変更していなければ 3306
 認証はベーシックにして ユーザ名とパスワードを設定。保存にチェックを入れておくと、毎回入れなくて済むのでラク。「構成に変換」を押して変換しておくのが吉(そうでない場合はパスワードも平文で保存/表示されます)
f:id:sakaik:20201224225734p:plain

 「接続テスト」ボタン押下して接続が問題なければ、OK。
ここまでで、MySQLへの接続情報の登録が完了しました。
この画面を開いたままで、次の作業へと進みます。
閉じちゃった場合、次回以降は レイヤ - レイヤを追加 - ベクタレイヤを追加 で同じ画面が開かれます。接続情報は記憶されているので、上記DB接続設定作業を繰り返す必要はありません。
f:id:sakaik:20201224225244p:plain 

QGISMySQLデータを読み込む

 とりあえず今回は、テーブルを指定して、そのテーブルの空間データをすべて表示する、ということが目標です。
データソースマネージャのベクタの画面を開き(この日記の手順通りにやってきた場合は、ひらきっぱなしになっている画面のことです)、「追加」ボタンを押下します。(ベクタレイヤを追加する、という指示になります)
 設定されたデータベース(スキーマ)の全テーブルが一覧表示されるので、QGISで参照したいテーブルを指定してOKを押します。データのサイズによっては少し時間がかかるので、処理が終わるのをおとなしく待ちましょう。
f:id:sakaik:20201224230643p:plain

 そして表示されるのが、冒頭の日本地図です。関東地方を拡大してみたのが以下の図。
f:id:sakaik:20201224231133p:plain

 たったこれだけです。

おまけ:表示の変更、調整など

 ここからは単純に QGIS の操作の話になります。もうMySQL関係ない。
左側にある「レイヤ」は、取り込んだテーブル1つがひとつのレイヤとなっています。チェックマークを付け外しすることで、表示オンオフを切り替えられます。レイヤの右端にハテナ(?)がついている場合は、そのレイヤに適切な測地系の指定が行われていません。クリックして、一応ちゃんと設定しておいたほうが良いでしょう。
 表示の塗りつぶしや線の色・太さを変えるには、レイヤのひとつを選択して、右クリックーシンボロジ(上から3番目)です。以下にキャプチャした画面で塗りつぶしの色や塗りつぶしパターンを、同画面上部の、ここでは「シンプル塗りつぶし」になっている部分をクリックすると、線の色や太さの設定ができます。
f:id:sakaik:20201224231604p:plain

まとめ

 MySQL(データつき) と QGIS が動作する環境で、QGISからMySQLへの接続情報の設定方法から表示までを説明しました。今回使った日本全土の境界ポリゴンは、構成するポイントが12万ポイント近くあります。なので、マシンスペックによっては表示に結構時間がかかる(北から順にじわじわと表示されていく感じ)と思います。今のところ私も「そういうものだ」と思っていますが、本気で今後触っていくにはポイント数の削減等を含め、もう少しサクサク動くようにしておきたいところですね。今後の課題といたします。