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

 


お疲れさまでした。

QGIS3で国土地理院の数値標高モデルを読み込む

 以前このページでは、国土地理院の数値標高モデルをAsciiGridに変換するプログラムを公開していましたが、最近はGeoTiffの扱いにも慣れてきたので、GeoTiffに変換してQGISにインポートするプラグインを作成してみました。QGIS3.6以前のバージョンでは動かないかもしれません。ご使用については、どうか自己責任でお願いします。

プラグイン作成にあたり、「PythonでJPGIS(GML)形式DEMをGeotiffファイルに変換(https://tm23forest.com/contents/python-jpgis-gml-dem-geotiff)」や、
GIS奮闘記(http://sanvarie.hatenablog.com/entry/2016/01/10/163027)」を参考に作成しました。有益な情報をありがとうございます。皆様に感謝いたします。


ダウンロードする

プラグインをダウンロードする

f:id:Chiakikun:20190904232031p:plain

https://github.com/Chiakikun/fg_gml_importerからプログラムをダウンロードして下さい。上の赤丸部分を押下した後に出てくる、下の赤丸部分からダウンロードできます。


インストール

プラグインをインストールするダイアログを表示する

f:id:Chiakikun:20190904232108p:plain

QGISのメニューから『プラグイン』→『プラグインの管理とインストール』を選択します。

 

インストールするプラグインファイルを選択する

f:id:Chiakikun:20190904232205p:plain

『ZIPからインストールする』を選択して、ダウンロードしたZIPファイルを選択してインストールを実行します。

 

f:id:Chiakikun:20190904232350p:plain

警告が出ますが、『はい』ボタンを押下して先に進みます。

 

アイコンが表示される

f:id:Chiakikun:20190904232436p:plain

インストールが完了すると、QGISのメニューにアイコンが追加されます。


プラグインを実行してみる

f:id:Chiakikun:20190904232539p:plain

f:id:Chiakikun:20190904232602p:plain

追加されたアイコンをクリックすると、ダイアログが表示されるので、ダウンロードした数値モデルのzipファイルの格納先フォルダを選択して、『実行』ボタンを押下します。

 

f:id:Chiakikun:20190904232821p:plain

選択したフォルダにGeoTiffを作成します。全て作成できたらQGISにインポートされます。

 

お疲れさまでした。