QGIS3 GeoPackageの使い方
QGIS3で「GeoPackage」というファイル形式を使ってみたので、このページで紹介します。GeoPackageはシェープファイルほど出回っていないので、他の人に渡したことはないのですが、スタイル保存と、複数ファイルを一つにまとめられる機能が気に入っているので、最近密かに使っています。
新規作成
ブラウザの『GeoPackage』を右クリックして『データベースの作成』を選択します。
既存のgpkgファイルを使う場合は『新しい接続』からファイルを選択して下さい。
ダイアログが表示されるので、『データベース』には保存するgpkgファイルを選択します。『テーブル名』は自動で付与されますが、変更したい場合は編集して下さい。『ジオメトリタイプ』には『テーブル名』で指定したテーブルのジオメトリタイプを指定します。『新フィールド』には『テーブル名』で指定したテーブルのフィールドを設定します。
作成に成功すると、『GeoPackage』の下に項目が追加されます。
削除
データベース内のレイヤを削除する場合は、データベースの下のレイヤ(上の画像ではnewfile)を右クリックして、『レイヤの削除』を選択します。データベースを削除する場合は、データベース(上の画像ではnewfile.gpkg)を右クリックして、『接続の削除』を選択します。
追加
既にQGISで読み込んでいるレイヤをGeoPackageに追加したい場合は、レイヤをGeoPackageのデータベースにドラッグドロップします。新規にテーブルを追加する場合は、データベースで右クリックして『新しいレイヤまたはテーブルを追加』を選択します。
スタイル保存
GeoPackageではベクターのスタイル設定を保存することができます。赤丸の『スタイル』→『スタイルを保存』を選択します。
ダイアログが表示されるので、『スタイルを保存』で「データベース(GeoPackage)」を選択します。これでレイヤをマップに表示する時、スタイル保存した状態で表示されるようになります。残念ながら、ラスタのスタイル設定の保存方法はわかりませんでした。
ありがとうございました。
DotSpatialのインストール
GIS関係のプログラムを作成するのに便利なライブラリ「DotSpatial」をインストールするための手順を紹介します。このページではVisual Studio2019を使ってコンパイルをしています。
コンパイル
最新版のソースをダウンロードする
https://github.com/DotSpatial/DotSpatialからソースをダウンロードします。
ファイルを解凍する
ダウンロードしたファイルを解凍します。解凍して出来たフォルダ内の「Source」フォルダに移動して下さい。
ソリューションファイルを開く
32bit版をコンパイルする
Debug用ビルドする場合は左の赤丸部分で『Debug』を、Release用ビルドする場合は『Release』を選択します。ソリューションエクスプローラの『ソリューション'DotSpatial'(55/55 プロジェクト)』を右クリックして、『ソリューションのビルド』を選択すると、コンパイルが始まります。
コンパイルできた?
コンパイルが終わると、「Source\bin」フォルダが作成されています。
Debug用ビルドは「Debug」フォルダに、Release用ビルドは「Release」フォルダに保存されます。
55プロジェクトをコンパイルして作成されたファイルがまとめられています。
64bit版をコンパイルする
赤丸部分を「x64」に設定して、あとは32bit版のコンパイルと同じなのですが...
デフォルトでは出力先が各プロジェクトのフォルダ内のbinフォルダになっているので、32bit版と同じように出力をまとめたい場合は、赤丸部分の「bin\x64\Debug\」を「..\bin\x64\Debug\」設定してください。Release用ビルドとDebug用ビルドで同じ事を全部のプロジェクトで行うので、少し大変です。
出力先の変更方法
ソリューションエクスプローラの各プロジェクトを右クリックして、『プロパティ』を選択します。
プロパティの設定画面になるので、左赤丸の『ビルド』タグを選択すると、出力先を設定できる画面になります。
デモを動かしてみる
コンパイルできたら出力先フォルダに移動して、DemoMap.exeを起動してみます。
ウィンドウが表示されました。何か適当なshpファイルを表示させます。赤丸部分のボタンを押すと、ファイル選択ダイアログが表示されるので、shpファイルを選択して下さい。
選択したshpファイルが表示されました。
プログラム作成してみる
C#のプロジェクトを新規作成
自分のプログラムにDotSpatialを使ってみます。VisualStudioを起動して、C#のプロジェクトを新規作成します。
コントロールを追加する
ツールボックスにタブを追加する
ツールボックスにDotSpatialのコントロールを追加します。ツールボックスを右クリックして、メニューの『タブの追加』を選択します。
新規のタブを「DotSpatial」としました。
DLLを読み込む
DotSpatialを右クリックして、メニューの『アイテムの選択』をクリックします。
表示されるダイアログの、『参照』ボタンを押下します。
コンパイルして出来たbinフォルダ内の「DotSpatial.Controls.dll」を選択します。
読み込まれたらOKボタンをクリックします。
コントロールを配置する
『ツールボックス』→『DotSpatial』から『Map』と、『コモン コントロール』から『Button』をフォームに貼り付けます。
コードを書く
DLLを読み込む
『ソリューションエクスプローラー』の『参照』を右クリックして、『参照の追加』でDotSpatialのDLLを読み込みます。
コンパイルして出来たbinフォルダ内の「DotSpatial.Data.dll」と「DotSpatial.Symbology.dll」を選択します。
ボタンを押したときの挙動をコーディングする
貼り付けたボタンをダブルクリックして、次のコードを入力して下さい。
map1.ClearLayers(); map1.AddLayer(@"D:\N03-17_170101.shp"); //←適当なshpファイルを指定する
ソースコードの上の方に、次のコードも入力して下さい。
using DotSpatial.Controls; using DotSpatial.Symbology;
実行してみる
プログラムをコンパイルして実行します。ボタンを押して、shpファイルが表示されましたでしょうか?
お疲れさまでした。
QGISに付属のPython環境でのエラーと対処
- pipを実行すると「unable to load the file system codec」とエラーが出力される
- matplotlibをインポートしようとすると「ModuleNotFoundError: No module named 'tkinter'」とエラーが出力される
- pipでインストールできなかったpythonのライブラリを入れたい
QGIS3.6をインストールした環境でPythonプログラミングにあたり、幾つかハマったエラーがありますので、対処法をメモしておきます。
pipを実行すると「unable to load the file system codec」とエラーが出力される
pipを実行すると「unable to load the file system codec」とエラーが出力された場合は...
pipコマンドをアップグレードします。powershellを管理者権限で起動して、次のコマンドを実行します。
python -m pip install --upgrade pip
pipをアップグレードした後は、エラーが出力されなくなります。
matplotlibをインポートしようとすると「ModuleNotFoundError: No module named 'tkinter'」とエラーが出力される
pythonで次のコマンドを実行すると「ModuleNotFoundError: No module named 'tkinter'」というエラーが出力されます。
import matplotlib.pyplot as plt
Python3.7.0(インストールされているQGISに付属のPythonと同じバージョン)のインストーラーを実行します。オプションのチェックは外して、『Customize installation』を選択してください。
『tcl/tk and IDLE』だけチェックしてNextボタンを押下してください。
オプションは全部外してください。インストール先に指定するパスは、QGISのPythonとは被らないようにして下さい。 インストールが完了したら、下記のファイルを取り出して、「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のライブラリを入れたい
pipコマンドでpythonのライブラリをインストールしようとしてエラーが発生してしまった場合、できることならエラーメッセージを読んで対処したいところですが、どうしても無理だった場合、
Python Extension Packages for Windows - Christoph Gohlke
からwhlファイルをダウンロードして、次のようにすればインストールできる可能性があります。
pip install 〇〇.whl
お疲れさまでした。