QGIS3 GeoPackageの使い方

 

QGIS3で「GeoPackage」というファイル形式を使ってみたので、このページで紹介します。GeoPackageはシェープファイルほど出回っていないので、他の人に渡したことはないのですが、スタイル保存と、複数ファイルを一つにまとめられる機能が気に入っているので、最近密かに使っています。


新規作成

f:id:Chiakikun:20191030175302p:plain

ブラウザの『GeoPackage』を右クリックして『データベースの作成』を選択します。
既存のgpkgファイルを使う場合は『新しい接続』からファイルを選択して下さい。

 

f:id:Chiakikun:20191030175840p:plain

ダイアログが表示されるので、『データベース』には保存するgpkgファイルを選択します。『テーブル名』は自動で付与されますが、変更したい場合は編集して下さい。『ジオメトリタイプ』には『テーブル名』で指定したテーブルのジオメトリタイプを指定します。『新フィールド』には『テーブル名』で指定したテーブルのフィールドを設定します。

 

f:id:Chiakikun:20191030180536p:plain

作成に成功すると、『GeoPackage』の下に項目が追加されます。

 


削除

f:id:Chiakikun:20191030181336p:plain

データベース内のレイヤを削除する場合は、データベースの下のレイヤ(上の画像ではnewfile)を右クリックして、『レイヤの削除』を選択します。データベースを削除する場合は、データベース(上の画像ではnewfile.gpkg)を右クリックして、『接続の削除』を選択します。


追加

f:id:Chiakikun:20191030181755p:plain

f:id:Chiakikun:20191030181948p:plain

既にQGISで読み込んでいるレイヤをGeoPackageに追加したい場合は、レイヤをGeoPackageのデータベースにドラッグドロップします。新規にテーブルを追加する場合は、データベースで右クリックして『新しいレイヤまたはテーブルを追加』を選択します。


スタイル保存

f:id:Chiakikun:20191030182612p:plain

GeoPackageではベクターのスタイル設定を保存することができます。赤丸の『スタイル』→『スタイルを保存』を選択します。

 

f:id:Chiakikun:20191030182649p:plain

ダイアログが表示されるので、『スタイルを保存』で「データベース(GeoPackage)」を選択します。これでレイヤをマップに表示する時、スタイル保存した状態で表示されるようになります。残念ながら、ラスタのスタイル設定の保存方法はわかりませんでした。

ありがとうございました。

DotSpatialのインストール

GIS関係のプログラムを作成するのに便利なライブラリ「DotSpatial」をインストールするための手順を紹介します。このページではVisual Studio2019を使ってコンパイルをしています。


コンパイル

最新版のソースをダウンロードする

f:id:Chiakikun:20180912231818p:plain

https://github.com/DotSpatial/DotSpatialからソースをダウンロードします。

 

ファイルを解凍する

f:id:Chiakikun:20180912232018p:plain

ダウンロードしたファイルを解凍します。解凍して出来たフォルダ内の「Source」フォルダに移動して下さい。

 

ソリューションファイルを開く

f:id:Chiakikun:20190924143359p:plain

 

32bit版をコンパイルする

f:id:Chiakikun:20190924232503p:plain

Debug用ビルドする場合は左の赤丸部分で『Debug』を、Release用ビルドする場合は『Release』を選択します。ソリューションエクスプローラの『ソリューション'DotSpatial'(55/55 プロジェクト)』を右クリックして、『ソリューションのビルド』を選択すると、コンパイルが始まります。

 

コンパイルできた?

f:id:Chiakikun:20190924233952p:plain

コンパイルが終わると、「Source\bin」フォルダが作成されています。

f:id:Chiakikun:20190924234114p:plain

Debug用ビルドは「Debug」フォルダに、Release用ビルドは「Release」フォルダに保存されます。

f:id:Chiakikun:20190924234217p:plain

55プロジェクトをコンパイルして作成されたファイルがまとめられています。

 

64bit版をコンパイルする

f:id:Chiakikun:20190925002719p:plain

赤丸部分を「x64」に設定して、あとは32bit版のコンパイルと同じなのですが...

 

f:id:Chiakikun:20190925003045p:plain

デフォルトでは出力先が各プロジェクトのフォルダ内のbinフォルダになっているので、32bit版と同じように出力をまとめたい場合は、赤丸部分の「bin\x64\Debug\」を「..\bin\x64\Debug\」設定してください。Release用ビルドとDebug用ビルドで同じ事を全部のプロジェクトで行うので、少し大変です。

出力先の変更方法

f:id:Chiakikun:20190925003749p:plain

ソリューションエクスプローラの各プロジェクトを右クリックして、『プロパティ』を選択します。

 

f:id:Chiakikun:20190925004135p:plain

プロパティの設定画面になるので、左赤丸の『ビルド』タグを選択すると、出力先を設定できる画面になります。


デモを動かしてみる

f:id:Chiakikun:20180912232613p:plain

コンパイルできたら出力先フォルダに移動して、DemoMap.exeを起動してみます。

 

f:id:Chiakikun:20180912232740p:plain

ウィンドウが表示されました。何か適当なshpファイルを表示させます。赤丸部分のボタンを押すと、ファイル選択ダイアログが表示されるので、shpファイルを選択して下さい。

 

f:id:Chiakikun:20180912232837p:plain

選択したshpファイルが表示されました。


プログラム作成してみる

C#のプロジェクトを新規作成

f:id:Chiakikun:20180912232912p:plain

自分のプログラムにDotSpatialを使ってみます。VisualStudioを起動して、C#のプロジェクトを新規作成します。

 

コントロールを追加する

ツールボックスにタブを追加する

f:id:Chiakikun:20180912233458p:plain

ツールボックスにDotSpatialのコントロールを追加します。ツールボックスを右クリックして、メニューの『タブの追加』を選択します。

 

f:id:Chiakikun:20180912233615p:plain

新規のタブを「DotSpatial」としました。

 

DLLを読み込む

f:id:Chiakikun:20180912233656p:plain

DotSpatialを右クリックして、メニューの『アイテムの選択』をクリックします。

 

f:id:Chiakikun:20180912233808p:plain

表示されるダイアログの、『参照』ボタンを押下します。

 

f:id:Chiakikun:20190929130418p:plain

コンパイルして出来たbinフォルダ内の「DotSpatial.Controls.dll」を選択します。

 

f:id:Chiakikun:20180912234115p:plain

読み込まれたらOKボタンをクリックします。

 

f:id:Chiakikun:20190929130845p:plain

ツールボックス』にコントロールが追加されました。

コントロールを配置する

f:id:Chiakikun:20190929132027p:plain

ツールボックス』→『DotSpatial』から『Map』と、『コモン コントロール』から『Button』をフォームに貼り付けます。

コードを書く

DLLを読み込む

f:id:Chiakikun:20180912233158p:plain

『ソリューションエクスプローラー』の『参照』を右クリックして、『参照の追加』でDotSpatialのDLLを読み込みます。

f:id:Chiakikun:20190929133005p:plain

コンパイルして出来たbinフォルダ内の「DotSpatial.Data.dll」と「DotSpatial.Symbology.dll」を選択します。
 

ボタンを押したときの挙動をコーディングする

 貼り付けたボタンをダブルクリックして、次のコードを入力して下さい。

map1.ClearLayers();
map1.AddLayer(@"D:\N03-17_170101.shp"); //←適当なshpファイルを指定する

ソースコードの上の方に、次のコードも入力して下さい。

using DotSpatial.Controls;
using DotSpatial.Symbology;

実行してみる

f:id:Chiakikun:20180912234348p:plain

プログラムをコンパイルして実行します。ボタンを押して、shpファイルが表示されましたでしょうか?

お疲れさまでした。

QGISに付属のPython環境でのエラーと対処

QGIS3.6をインストールした環境でPythonプログラミングにあたり、幾つかハマったエラーがありますので、対処法をメモしておきます。


pipを実行すると「unable to load the file system codec」とエラーが出力される

f:id:Chiakikun:20190502133352p:plain

pipを実行すると「unable to load the file system codec」とエラーが出力された場合は...

 

f:id:Chiakikun:20190502133547p:plain

pipコマンドをアップグレードします。powershellを管理者権限で起動して、次のコマンドを実行します。

python -m pip install --upgrade pip

 

f:id:Chiakikun:20190502133705p:plain

pipをアップグレードした後は、エラーが出力されなくなります。

 


matplotlibをインポートしようとすると「ModuleNotFoundError: No module named 'tkinter'」とエラーが出力される

f:id:Chiakikun:20190502180859p:plain

pythonで次のコマンドを実行すると「ModuleNotFoundError: No module named 'tkinter'」というエラーが出力されます。

import matplotlib.pyplot as plt

f:id:Chiakikun:20190502181110p:plain

Python3.7.0(インストールされているQGISに付属のPythonと同じバージョン)のインストーラーを実行します。オプションのチェックは外して、『Customize installation』を選択してください。

f:id:Chiakikun:20190502181408p:plain

『tcl/tk and IDLE』だけチェックしてNextボタンを押下してください。

f:id:Chiakikun:20190502181515p:plain

オプションは全部外してください。インストール先に指定するパスは、QGISPythonとは被らないようにして下さい。 インストールが完了したら、下記のファイルを取り出して、「C:\Program Files\QGIS 3.6\apps\Python37」にコピーして下さい。

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

DLLs\_tkinter.pyd → C:\Program Files\QGIS 3.6\apps\Python37\DLLs
DLLs\tcl86t.dll → C:\Program Files\QGIS 3.6\apps\Python37\DLLs
DLLs\tk86t.dll → C:\Program Files\QGIS 3.6\apps\Python37\DLLs
Lib\tkinter 全部 → C:\Program Files\QGIS 3.6\apps\Python37\Lib
libs\_tkinter.lib → C:\Program Files\QGIS 3.6\apps\Python37\libs
libs\libpython37.a → C:\Program Files\QGIS 3.6\apps\Python37\libs
libs\python3.lib → C:\Program Files\QGIS 3.6\apps\Python37\libs
libs\python37.lib → C:\Program Files\QGIS 3.6\apps\Python37\libs
tcl\ 全部 → C:\Program Files\QGIS 3.6\apps\Python37\
------------------------------------------------------------------------------

 作業が終わって、インポートが上手くいったら、インストールしたPythonはアンインストールしてください。

 


pipでインストールできなかったpythonのライブラリを入れたい

f:id:Chiakikun:20190926235518p:plain

pipコマンドでpythonのライブラリをインストールしようとしてエラーが発生してしまった場合、できることならエラーメッセージを読んで対処したいところですが、どうしても無理だった場合、

Python Extension Packages for Windows - Christoph Gohlke

からwhlファイルをダウンロードして、次のようにすればインストールできる可能性があります。

pip install 〇〇.whl

 


お疲れさまでした。