2008年6月30日月曜日

グラフィカルなデータ表示 2階級区分の色分

シェイプファイルの属性を使って、グラフィカルなデータ表示をします。

人口を階級区分して色分けします。

マップファイルに新しいレイヤを追加します。
cloudsレイヤとcountriesレイヤの間に追加します。

---
LAYER
NAME clouds
TYPE RASTER
STATUS ON
DATA "data/day_clouds.tif"
END

LAYER
NAME totalpop
GROUP totalpop
TYPE polygon #面表示になります
STATUS ON #初期状態 ON:表示 OFF:非表示
DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
TRANSPARENCY 50 #透過度 0不透明 100完全透明
CLASSITEM "total" #CLASSを使うときのフィールドの属性値の指定
CLASS
NAME "over 100milion" #凡例のタイトルになります
EXPRESSION ([total] >= 100000000) #描画する条件値(式)
COLOR 255 0 0 #塗りつぶし色 RGB 0-255
END
CLASS
NAME "10 to 100milion"
EXPRESSION ([total] <= 100000000 AND [total] >= 10000000) #正しく直しました2009.7.11
COLOR 255 102 102
END
CLASS
NAME "1 to 10milion"
EXPRESSION ([total] <= 10000000 AND [total] >= 1000000) #正しく直しました2009.7.11
COLOR 255 204 204
END
END

LAYER
NAME countries
---


しかし、このままでは半透明になりませんでした。
TRANSPARENCYはrasterレイヤに対して透過度を調整できるようです。
これはMapServerでそうなのか、ka-Mapだけなのかは分かりませんでした。
totalpopレイヤのGROUPを削除してcloudsレイヤとBASEレイヤを構成するか、次のようにcloudsレイヤと同じ内容で clouds2レイヤを追加し、totalpopレイヤと同じGROUP名にするとTRANSPARENCYが有効になります。
(MapServer5では、OPACITYの使用が推奨されています。使い方は同じです。)

global.mapの全体は次のようになります。


MAP
NAME global_map
STATUS ON
SIZE 600 300
EXTENT -180 -90 180 90
UNITS DD
IMAGECOLOR 255 255 255
IMAGETYPE png

WEB
IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
END

LEGEND
TRANSPARENT TRUE
END

SCALEBAR
TRANSPARENT TRUE
END

REFERENCE
EXTENT -180 -90 180 90
SIZE 241 121
IMAGE data/keymap.jpg
COLOR -1 -1 -1
OUTLINECOLOR 255 0 0
END

LAYER
NAME clouds
TYPE RASTER
STATUS ON
DATA "data/day_clouds.tif"
END

LAYER
NAME clouds2
GROUP totalpop
TYPE RASTER
STATUS ON
DATA "data/day_clouds.tif"
END

LAYER
NAME totalpop
GROUP totalpop
TYPE polygon
STATUS ON
DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
TRANSPARENCY 50
CLASSITEM "total"
CLASS
NAME "over 100milion"
EXPRESSION ([total] >= 100000000)
COLOR 255 0 0
END
CLASS
NAME "10 to 100milion"
EXPRESSION (([total] <= 10000000) AND ([total] >= 1000000)) #正しく直しました2009.7.11
COLOR 255 102 102
END
CLASS
NAME "1 to 10milion"
EXPRESSION ([total] <= 1000000) #正しく直しました2009.7.11
COLOR 255 204 204
END
END

LAYER
NAME countries
TYPE LINE
STATUS ON
DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
LABELITEM "NAME"
METADATA
"queryable" "true"
"searchfield" "name"
"fields" "name:Name,total:population" #total:populationを追加(global_template.htmlも修正してください。) 正しく直しました2009.7.11
END
CLASS
NAME "Country Boundaries"
STYLE
COLOR 200 100 100
END
END
TEMPLATE global_template.html
END
END


0 件のコメント: