DotSpatialをインストールしてみました。

f:id:Chiakikun:20180512175722j:plain

『DotSpatial』というライブラリを最近知りました。GISを作るためのライブラリだそうです。インストールまでは出来るようになったので、その手順を紹介いたします。コンパイルするためには、VisualStudioが必要です。ここではVisualStudio2017を使ってコンパイルをしています。

目次

ソースをダウンロード

コンパイル

デモを動かしてみる

プログラム作成

ソースをダウンロード

f:id:Chiakikun:20180912231818p:plain

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

 

f:id:Chiakikun:20180912232018p:plain

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

 

コンパイル

f:id:Chiakikun:20180912232124p:plain

③『Compile.cmd』を編集します。私の環境では『%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe』を
『%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64\MSBuild.exe』に変更しました。

 

f:id:Chiakikun:20180912232440p:plain

 ④編集したCompile.cmdを実行します。

 

f:id:Chiakikun:20180912232520p:plain

コンパイルが終わると、binフォルダが出来ているので、フォルダ内に移動します。

デモを動かしてみる

f:id:Chiakikun:20180912232613p:plain

⑥DemoMap.exeを起動してみます。

 

 

f:id:Chiakikun:20180912232740p:plain

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

 

f:id:Chiakikun:20180912232837p:plain

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

プログラム作成

f:id:Chiakikun:20180912232912p:plain

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

 

f:id:Chiakikun:20180912233158p:plain

⑩『参照の追加』でDotSpatialのDLLを読み込みます。

 

f:id:Chiakikun:20180912233251p:plain

f:id:Chiakikun:20180912233329p:plain

⑪先ほどコンパイルしたdotspatialのbinフォルダ内のDLLを選択します。選択したDLLにチェックがされているか確認して、OKボタンを押します。

 

f:id:Chiakikun:20180912233458p:plain

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

 

f:id:Chiakikun:20180912233615p:plain

⑬新規のタブを『DotSpatial』としました。

 

f:id:Chiakikun:20180912233656p:plain

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

 

f:id:Chiakikun:20180912233808p:plain

⑮表示されるダイアログの、参照ボタンをクリックします。

 

f:id:Chiakikun:20180912233928p:plain

コンパイルして出来たbinフォルダ内のDLLを選択します。

 

f:id:Chiakikun:20180912234024p:plain

⑰このようなエラーが出ますが、気にせずOKボタンをクリックして下さい。

 

f:id:Chiakikun:20180912234115p:plain

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

 

f:id:Chiakikun:20180912234200p:plain

⑲DotSpatialの下に、コントロールが追加されました。『Map』を選択して、フォームの適当な場所に貼り付けて下さい。他にCommandButtonもMapに重ならないように貼り付けて下さい。貼り付けたボタンをダブルクリックして、次のコードを入力して下さい。

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

map1.ClearLayers();
map1.AddLayer(@"D:\適当なシェープファイル.shp"); //←適当なshpファイルを指定する
IMapFeatureLayer imp = map1.Layers.Last() as IMapFeatureLayer;
imp.SelectionSymbolizer = new PolygonSymbolizer();
PolygonSymbolizer poly = imp.Symbolizer as PolygonSymbolizer;
poly.SetFillColor(System.Drawing.Color.FromArgb(0)); //ポリゴン塗りつぶし色無し

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

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

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

using DotSpatial.Controls;
using DotSpatial.Symbology;

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

 

f:id:Chiakikun:20180912234348p:plain

⑳プログラムをコンパイルして実行します。ボタンを押すと、指定したshpファイルが表示されれば、インストールは上手くいっています。

お疲れさまでした。

QGIS3に付属のPython3でのエラーと対処

f:id:Chiakikun:20180512175722j:plain

QGIS3.2環境のPythonでプログラミングを勉強中ですが、幾つかハマったエラーがありますので、対処法をメモしておきます。

注意!問題④でPythonQGISのappフォルダに上書きインストールすると、QGISが起動しなくなるため、修正しました。2018/09/13

 

問題①

Plugin Builderで作成した雛形のuiファイルをpythonのソースに変換しようとpyuic5を実行したら、「ImportError: DLL load failed: 指定されたモジュールが見つかりません。」とエラー出力される。

解決策

「C:\Program Files\QGIS 3.2\apps\Qt5\bin」をPathに追加していないか、「Python3.dll」のコピーを忘れている。

https://chiakikun.hatenadiary.com/entry/2018/09/01/145917#i-1

https://chiakikun.hatenadiary.com/entry/2018/09/01/145917#i-2

このあたりが参考になると思います。

 

問題②

pipを使うと「Fatal error in launcher: Unable to create process using '"'」とエラー出力される。

解決策

python -m pip install -U pip」を実行してpipを更新する。

 

問題③

次のPytonのコードを実行しようとしてImport DLLエラーが出力される。

import gdal,osr

解決策

https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal』から
『GDAL-2.2.4-cp35-cp35m-win_amd64.whl』をダウンロードして解凍します。
展開されたファイルに『gdal202.dll』があるので、それを「C:\Program Files\QGIS 3.2\bin」にコピーすると、エラーは出なくなります。

 

問題④

次のPythonのコードを実行しようとして「ModuleNotFoundError: No module named 'tkinter'」とエラー出力される。

import matplotlib.pyplot as plt

解決策

pipでktinterをインストールしようとしてもエラーになります。Python3をインストールして、下記のファイルを取り出して、「C:\Program Files\QGIS 3.2\apps\Python36」にコピーして下さい。

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

DLLs\_tkinter.pyd
DLLs\tcl86t.dll
DLLs\tk86t.dll
Lib\tkinter 全部
libs\_tkinter.lib
libs\libpython36.a
libs\python3.lib
libs\python36.lib
tcl\ 全部
python.exe
python3.dll
python36.dll
pythonw.exe
vcruntime140.dll

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

 

お疲れさまでした。

Pythonで国土地理院の数値標高モデルをAsciiGridに変換するプログラム

f:id:Chiakikun:20180512175722j:plain

 国土地理院の数値標高モデルをAsciiGridに変換するプログラムをPythonで作成しました。GeoTiffに変換するツールは既に良いものがあるのですが、私はGeoTiffよりもAsciiGridの方が扱いやすいと感じているので、自分で変換するプログラムを作ってみました。機会がありましたら、使ってみてください。

プログラム作成にあたり、「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:20180908171145p:plain

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

 

f:id:Chiakikun:20180908170252p:plain

②ダウンロードしたzipファイルを解凍し、Powershellを起動して、解凍後のフォルダに移動します。移動したら「python main.py」と入力します。

 

f:id:Chiakikun:20180908171746p:plain

③プログラムが起動します。上の赤丸ボタンを押下すると、フォルダ選択ダイアログが表示されるので、国土地理院からダウンロードした数値標高モデルのxmlが圧縮されているzipファイルの格納先フォルダを選択します。選択したらOKボタンを押します。

 

f:id:Chiakikun:20180908171458p:plain

④zipの格納先フォルダです。

  

f:id:Chiakikun:20180908172018p:plain

 ⑤処理に少し時間がかかります。「終了しました」とメッセージが表示されたら終了です。

 

f:id:Chiakikun:20180908172200p:plain

⑥変換されたAsciiGridファイルは、zipファイルと同じフォルダに格納されています。出来上がったgrdファイルをQGISにドラッグしてみて下さい。

 

 

f:id:Chiakikun:20180908172333p:plain

⑦変換されたgrdファイルが表示されます。

 

f:id:Chiakikun:20180908172418p:plain

地理院地図の上に重ねてみました。下の地図が見やすくなるように、少し透かしてあります。

 

お疲れさまでした。