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
お疲れさまでした。
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)」を参考に作成しました。有益な情報をありがとうございます。皆様に感謝いたします。
ダウンロードする
プラグインをダウンロードする
https://github.com/Chiakikun/fg_gml_importerからプログラムをダウンロードして下さい。上の赤丸部分を押下した後に出てくる、下の赤丸部分からダウンロードできます。
インストール
プラグインをインストールするダイアログを表示する
QGISのメニューから『プラグイン』→『プラグインの管理とインストール』を選択します。
インストールするプラグインファイルを選択する
『ZIPからインストールする』を選択して、ダウンロードしたZIPファイルを選択してインストールを実行します。
警告が出ますが、『はい』ボタンを押下して先に進みます。
アイコンが表示される
インストールが完了すると、QGISのメニューにアイコンが追加されます。
プラグインを実行してみる
追加されたアイコンをクリックすると、ダイアログが表示されるので、ダウンロードした数値モデルのzipファイルの格納先フォルダを選択して、『実行』ボタンを押下します。
選択したフォルダにGeoTiffを作成します。全て作成できたらQGISにインポートされます。
お疲れさまでした。