DotSpatialでVectorとRasterを表示してみる。
DotSpatialを使ってみる。 [Chapter 1]で簡単にshape fileが表示できたので、それではとrasterも簡単にできるんでない? と思い、挑戦したんですが。。。
なぜか、「使用するパラメータが違う」というdialogが出てきてうまくいかないんですね。
参考にしたtutorialは、Raster data operations in DotSpatialです。
この通りにやろうとしても、gdal formatを読む「Data Extensions」フォルダーがないのです。
net上で探すこと半日、見つけました。
このDotSpatial Release Candidateの DotSpatial_Release.1.0.845 RC2.zipにありましたよ。
1年以上前のものですが、ちょいと試してみました。[Chapter 2]では、RC2を使いました。
[Chapter 2]では、DotSpatial 1.4 Extended.zipをダウンロードして、DotSpatial Class Libraryを使います。
[Chapter 1]のDotSpatial 1.4 Minimalのdll登録を再度やり直してくださいね。
GISアプリを作成
tutorialも豊富なので、あえてここでは書きませんが、tutorialののDotSpatial_Tutorial_3.docxを参考にして、rasterを読み込んでみます。
vb.net2010のdllの参照設定については、事前にDotSpatial_Tutorial_1.docxですませておいてくださいね。
私のToolboxには
な感じで登録してあります。
Form Design
Formのdesignは、MapWinGISのtutorialで使っているものを流用して、
な感じにします。
DotSpatialには標準でToolStripMenuがあるのですが、Formに配置するとErrorで動きません。設定が悪いのか?「呼び出し方が古いよ」と怒られてしまいます。
[Chapter 2]では、VectorとRasterと別々にlayerの追加を行ってみます。
Coding
Form Load時の設定
gdal/ogr formatのデータを読み込むには、AppManager Controlを使う必要があります。このAppManagerを使って、DotSpatialのplunginを追加できるようです。
たった1行ですが、
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'Extension load AppManager1.LoadExtensions() End Sub
が必要になります。
また、System.ComponentModel.Compositionも併せて参照の追加をします。
次に、Layerの追加は、Add Vector Layer,Add Raster LayersをToolbarに作成します。
な感じですね。
Add Vector Layers
これも、たったの1行です。おまけに、ZoomToMaxExtent()を付け加えています。
Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click 'AddFeatureLayer() method is used to add a shapefile in to mapcontrol 'vector = shp,kml Map1.AddFeatureLayer() Map1.ZoomToMaxExtent() End Sub
Vectorデータを総称してFeatureとしているようですね。
確認したところ、shp,kmlは読み込めるようです。geojasonはだめでした。(program実行で説明)
Add Raster Layers
これも、たったの1行です。おまけに、ZoomToMaxExtent()を付け加えています。
Private Sub ToolStripButton3_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton3.Click 'AddRasterLayer() method is used to add a raster in to mapcontrol 'gdal format Map1.AddRasterLayer() Map1.ZoomToMaxExtent() End Sub
AddRasterLayer()とAddImageLayer()があるようです。違いについては確認していません。
そのほかのControlについては[Chapter 1]と同じです。なんだか拍子抜けするくらい簡単です。
早速保存して、programを実行してみましょう。
とその前に、探し求めた「Data Extensions」フォルダーを作成したvisual studio projectのbin¥debug¥にコピーしておきます。
赤枠のData Extensions
programの実行
.Net 4の環境でなければ動きませんので、注意してください。
作成したdebugフォルダーのDotspatial_ex02.exeを動かすとメイン画面が表示されます。
Add Vector Layersをclickして、神奈川県のshpを読み込んだ例です。
神奈川県のshpを読み込んだ例
次に、Add Raster Layersをclickして、神奈川県の標高raster(asc)を選択します。
raster(asc)の選択
神奈川県の標高raster(asc)を選択した後、メッセージが表示されます。これは、projectionを自動的に先に読み込んだProjectionに変換する機能のようです。
projection設定画面表示
そうすると、神奈川県の標高raster(asc)とVectorが表示されます。
神奈川県の標高raster(asc)とVector表示例
後は、legend control上のlabelやらcategoryなどをマウス操作でいろいろと表示の変更をすることができます。
いろいろと試してみてください。
おまけで、kmlファイルを読み込んでみました。
Add Vector Layersをclickして、電子国土地図Overlayで使った神奈川県のkmlを読み込んだ例です。
神奈川県のkml表示例
神奈川県のkmlを読み込んだ後、mouse 右クリックでpopupメニューを表示した例です。このDataメニューのExportでshpに出力することができます。
popupメニューを表示
今回のまとめ
では、今回のまとめを
-
Dotspatial 1.4 ExtenedeのClass libraryを使って、VectorとRatse表示アプリを作成しました。
-
ほとんど、programmingすることなく実装できることがわかりました。
-
Data Extensionsフォルダーを追加することで、gdal/ogr formatを読み込みました。
vb.net2010だけでなく、C#でも動作することができます。ただし、.NET 4.0の環境だけです。
DotSpatialは機能が非常に豊富で何でもできるようですが、documentが少ないので、試行錯誤で理解するには時間がかかりそうですが、ほとんどprogramなしで基本機能が使えるのは非常に良いLibaryだと思います。
先人の偉業に感謝します。
今回は、超~簡単なので、サンプルはありません。
サンプルプログラムおよびサンプルデータを使って、お使いのPCの不具合が生じても一切責任は持てませんので、あくまでも自己責任にて使用してください。
次回は、せっかくなので、Raster data operations in DotSpatialを参考にアプリケーションを作成してみましょう。
Exercise
今回のProgramをsourceから作成してみてください。
最近のコメント