Daily Archives: 11/19/2012 - Page 2

カテゴリー分類example [Chapter 6-1]

カテゴリー分類example

今回は、shape fileの属性値を使ってカテゴリー分類をしてfeatureを色分けするexampleを作成します。元になるprogramは、ラベルの作成example [Chapter 5]のex05に付け加えていきます。
MapWinGISは、カテゴリー分類の方法は

  1. ctNaturalBreaks 
  2. ctUniqueValues
  3. ctEqualIntervals
  4. ctEqualCount
  5. ctStandardDeviation
  6. ctEqualSumOfValues

の6通りできます。
enum tkClassificationTypeを参照のこと。

今回の[Chapter 6-1]では、まずctUniqueValuesのユニーク値を使ったカテゴリー分類をやってみます。[Capter 6-2]でその他のカテゴリー分類のexampleを作成します。

Program Coding

今回は、ラベルの作成example [Chapter 5]に若干designに付け加えます。

Form design

Form designはiconを使ってtoolbarにsettingします。
こんな感じ、

blog.godo-tys.jp_wp-content_gallery_mapwingis_ex06_image01.jpg
toolbar

カテゴリー分類のiconを追加します。

Coding

それでは、toolbarのbutton click eventにcodingを始めていきます。

カテゴリー分類の作成

blog.godo-tys.jp_wp-content_gallery_mapwingis_ex06_image02.jpg
カテゴリー分類のbutton

カテゴリー分類のbutton click event発生時のcodingは、

    Private Sub ToolStripButton3_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton3.Click
        'shape color set
        Dim sf As MapWinGIS.Shapefile
 
        'sf = AxMap1.get_GetObject(layerHandle)
        sf = Legend1.Map.GetObject(layerHandle)
 
        '市区町村nameでランダムに色づけ
        'c14_region.shpのみに対応
        UniqueValueCategory(sf) 'subroutine
        Legend1.Layers.ItemByHandle(layerHandle).Expanded = False  '展開しない
        AxMap1.set_ShapeLayerFillTransparency(layerHandle, 90)
        Legend1.Refresh()
        AxMap1.Redraw()
 
    End Sub

layerHandle(ユニーク値)が取得して、そのlayerHandleのshape fileについてカテゴリー分類を行います。

カテゴリー分類の大まかな流れは、

  1. Legend1.Map.GetObject(Handle)でmapオブジェクトの取得
  2. UniqueValueCategory(sf)でユニーク値のカテゴリー作成

subroutine UniqueValueCategoryは、

    Private Sub UniqueValueCategory(t_sf As MapWinGIS.Shapefile)
 
        ' setting generation of categories
        Dim fieldIndex As Integer = t_sf.Table.FieldIndexByName("CODE")
        If fieldIndex = -1 Then Exit Sub
 
        t_sf.Categories.Generate(fieldIndex, MapWinGIS.tkClassificationType.ctUniqueValues, 0)
        t_sf.Categories.Caption = t_sf.Table.Field(fieldIndex).Name
        t_sf.Categories.ApplyExpressions()
 
        Dim lColor = Convert.ToUInt32(RGB(Convert.ToInt32(Color.LightPink.R),
                                          Convert.ToInt32(Color.LightPink.G),
                                          Convert.ToInt32(Color.LightPink.B)))
        Dim hColor = Convert.ToUInt32(RGB(Convert.ToInt32(Color.LightGreen.R),
                                          Convert.ToInt32(Color.LightGreen.G),
                                          Convert.ToInt32(Color.LightGreen.B)))
 
        ' apply colors automatically
        Dim scheme As New MapWinGIS.ColorScheme
        'scheme.SetColors2(MapWinGIS.tkMapColor.LightYellow, MapWinGIS.tkMapColor.LightBlue)
        scheme.SetColors(lColor, hColor)
        t_sf.Categories.ApplyColorScheme(MapWinGIS.tkColorSchemeType.ctSchemeRandom, scheme)
 
    End Sub

ここでは、fieldIndex As Integer = t_sf.Table.FieldIndexByName(“CODE”)でフィールド名codeが存在した場合に、codeをユニーク値として分類しています。このexampleでは”c14_region.shp”だけカテゴリー分類されます。

他のフィールドでカテゴリー分類する場合は、”CODE”を変更するようにしてください。

UniqueValueCategoryの大まかな流れは、

  1. fieldIndexの取得
  2. Categories.Generateでカテゴリー分類
  3. Categories.ApplyExpressions()でカテゴリー生成
  4. Categories.ApplyColorSchemeでcoloring設定

となります。
colorSchemeの設定については、Color Schemeを参照してください。

Programの実行

では、ex06を保存して実行してみましょう。

神奈川県のサンプルc14_region.shpを読み込んで表示させます。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex06_image03.jpg
神奈川県のサンプルshape file表示

カテゴリー分類buttonをクリックして、c14_region.shpを分類させます。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex06_image04.jpg
神奈川県のサンプルshape fileのカテゴリー分類表示

ラベルの併せて表示させます。
blog.godo-tys.jp_wp-content_gallery_mapwingis_ex06_image05.jpg
神奈川県のサンプルshape fileのカテゴリー分類とラベル表示

今回のまとめ

  1. カテゴリー分類のcodeing実装を行いました。

vb.netd2010だけでなく、C#でも、visual studio2008でも動作することができます。
簡単に自前のソフトウェアにちょっとしたGIS機能を付け加えるには良いと思います。
ex06のsource code sampleは簡単なのでありません。
サンプルコードを使って、お使いのPCの不具合が生じても一切責任は持てませんので、あくまでも自己責任にて参考にしてください。

最後に、Layerを選択して次の操作を行うことを忘れないように。

Exercise

今回のProgramを少し発展させて以下の項目を付け加えてみてください。

  1. UniqueValueCategoryでのフィールド名を変更できるようにする。
  2. ToolStripButton3_Click event時に別formを表示してカテゴリー分類設定をやってみる。
  3. polyLine、pointについてもカテゴリー分類してみる。

2 / 212

Social Widgets powered by AB-WebLog.com.