DotSpatialを使ってみる。VectorとRaster [Chapter 2]

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には
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image13.jpg
な感じで登録してあります。

Form Design

Formのdesignは、MapWinGISのtutorialで使っているものを流用して、
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image01.jpg

な感じにします。

DotSpatialには標準でToolStripMenuがあるのですが、Formに配置するとErrorで動きません。設定が悪いのか?「呼び出し方が古いよ」と怒られてしまいます。

[Chapter 2]では、VectorとRasterと別々にlayerの追加を行ってみます。

Coding

まずは、DotDpatial~~.dllの参照設定をします。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image12.jpg
参照設定例

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に作成します。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image02.jpg
な感じですね。

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実行で説明)

blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image03.jpg
読み込めるVactor形式

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()があるようです。違いについては確認していません。

blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image05.jpg
読み込めるRaster形式

そのほかのControlについては[Chapter 1]と同じです。なんだか拍子抜けするくらい簡単です。
早速保存して、programを実行してみましょう。
とその前に、探し求めた「Data Extensions」フォルダーを作成したvisual studio projectのbin¥debug¥にコピーしておきます。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image11.jpg
赤枠のData Extensions

programの実行

.Net 4の環境でなければ動きませんので、注意してください。

作成したdebugフォルダーのDotspatial_ex02.exeを動かすとメイン画面が表示されます。
Add Vector Layersをclickして、神奈川県のshpを読み込んだ例です。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image04.jpg
神奈川県のshpを読み込んだ例

次に、Add Raster Layersをclickして、神奈川県の標高raster(asc)を選択します。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image06.jpg
raster(asc)の選択

神奈川県の標高raster(asc)を選択した後、メッセージが表示されます。これは、projectionを自動的に先に読み込んだProjectionに変換する機能のようです。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image07.jpg
projection設定画面表示

そうすると、神奈川県の標高raster(asc)とVectorが表示されます。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image08.jpg
神奈川県の標高raster(asc)とVector表示例

後は、legend control上のlabelやらcategoryなどをマウス操作でいろいろと表示の変更をすることができます。
いろいろと試してみてください。

おまけで、kmlファイルを読み込んでみました。

Add Vector Layersをclickして、電子国土地図Overlayで使った神奈川県のkmlを読み込んだ例です。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image09.jpg
神奈川県のkml表示例

神奈川県のkmlを読み込んだ後、mouse 右クリックでpopupメニューを表示した例です。このDataメニューのExportでshpに出力することができます。
blog.godo-tys.jp_wp-content_gallery_dotspatial_ex02_image10.jpg
popupメニューを表示

今回のまとめ

では、今回のまとめを

  1. Dotspatial 1.4 ExtenedeのClass libraryを使って、VectorとRatse表示アプリを作成しました。
  2. ほとんど、programmingすることなく実装できることがわかりました。
  3. Data Extensionsフォルダーを追加することで、gdal/ogr formatを読み込みました。

vb.net2010だけでなく、C#でも動作することができます。ただし、.NET 4.0の環境だけです。
DotSpatialは機能が非常に豊富で何でもできるようですが、documentが少ないので、試行錯誤で理解するには時間がかかりそうですが、ほとんどprogramなしで基本機能が使えるのは非常に良いLibaryだと思います。
先人の偉業に感謝します。

今回は、超~簡単なので、サンプルはありません。
サンプルプログラムおよびサンプルデータを使って、お使いのPCの不具合が生じても一切責任は持てませんので、あくまでも自己責任にて使用してください。

次回は、せっかくなので、Raster data operations in DotSpatialを参考にアプリケーションを作成してみましょう。

Exercise

今回のProgramをsourceから作成してみてください。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

WP-SpamFree by Pole Position Marketing

Social Widgets powered by AB-WebLog.com.