カテゴリー分類example
今回は、shape fileの属性値を使ってカテゴリー分類をしてfeatureを色分けするexampleを作成します。元になるprogramは、ラベルの作成example [Chapter 5]のex05に付け加えていきます。
MapWinGISは、カテゴリー分類の方法は
-
ctNaturalBreaks
-
ctUniqueValues
-
ctEqualIntervals
-
ctEqualCount
-
ctStandardDeviation
-
ctEqualSumOfValues
の6通りできます。
enum tkClassificationTypeを参照のこと。
今回の[Chapter 6-1]では、まずctUniqueValuesのユニーク値を使ったカテゴリー分類をやってみます。[Capter 6-2]でその他のカテゴリー分類のexampleを作成します。
Program Coding
今回は、ラベルの作成example [Chapter 5]に若干designに付け加えます。
Form design
Coding
それでは、toolbarのbutton click eventにcodingを始めていきます。
カテゴリー分類の作成
カテゴリー分類の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についてカテゴリー分類を行います。
カテゴリー分類の大まかな流れは、
-
Legend1.Map.GetObject(Handle)でmapオブジェクトの取得
-
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の大まかな流れは、
-
fieldIndexの取得
-
Categories.Generateでカテゴリー分類
-
Categories.ApplyExpressions()でカテゴリー生成
-
Categories.ApplyColorSchemeでcoloring設定
となります。
colorSchemeの設定については、Color Schemeを参照してください。
Programの実行
では、ex06を保存して実行してみましょう。
神奈川県のサンプルc14_region.shpを読み込んで表示させます。
神奈川県のサンプルshape file表示
カテゴリー分類buttonをクリックして、c14_region.shpを分類させます。
神奈川県のサンプルshape fileのカテゴリー分類表示
今回のまとめ
-
カテゴリー分類のcodeing実装を行いました。
vb.netd2010だけでなく、C#でも、visual studio2008でも動作することができます。
簡単に自前のソフトウェアにちょっとしたGIS機能を付け加えるには良いと思います。
ex06のsource code sampleは簡単なのでありません。
サンプルコードを使って、お使いのPCの不具合が生じても一切責任は持てませんので、あくまでも自己責任にて参考にしてください。
最後に、Layerを選択して次の操作を行うことを忘れないように。
Exercise
今回のProgramを少し発展させて以下の項目を付け加えてみてください。
-
UniqueValueCategoryでのフィールド名を変更できるようにする。
-
ToolStripButton3_Click event時に別formを表示してカテゴリー分類設定をやってみる。
-
polyLine、pointについてもカテゴリー分類してみる。
最近のコメント