ラベル 階級区分 の投稿を表示しています。 すべての投稿を表示
ラベル 階級区分 の投稿を表示しています。 すべての投稿を表示

2015年5月26日火曜日

9 グラフィカルなデータ表示 2 - 色分け

9-2 階級区分の色分け
シェイプファイルの属性を使って、グラフィカルなデータ表示をします。
人口を階級区分して色分けします。
マップファイルの global-raster レイヤの後に、新しい population レイヤを追加します。
country-boundary レイヤは削除します。
MAP
 NAME "global_map"
 STATUS ON
 SIZE 600 300
 EXTENT -180 -90 180 90
 UNITS DD
 SHAPEPATH "../mapdata"
 IMAGECOLOR 255 255 255

 #
 # Start of web interface definition
 #
 WEB
  IMAGEPATH "/home/user/public_html/ms_tmp/"
  IMAGEURL "/public_html/ms_tmp/"
 END # WEB
 #
 # Start of layer definitions
 #
 LAYER
  NAME global-raster
  TYPE RASTER
  STATUS DEFAULT
  DATA "land_ocean_ice_2048.jpg"
 END
 LAYER
  NAME population
  TYPE POLYGON
  STATUS ON
  DATA "110m_cultural/ne_110m_admin_0_countries.shp"
  OPACITY 50 #透過度 0完全透明 100不透明
  CLASSITEM "pop_est" #CLASSを使うときのフィールドの属性値の指定
  CLASS
   NAME "over 1billion" #凡例のタイトルになります
   EXPRESSION ([pop_est] >= 1000000000) #描画する条件値(式)
   STYLE
    COLOR 255 0 0 #塗りつぶし色 RGB 0-255
    OUTLINECOLOR 153 0 0
   END
  END
  CLASS
   NAME "100million to 1billion"
   EXPRESSION ([pop_est] <= 1000000000 AND [pop_est] >= 100000000)
   STYLE
    COLOR 255 102 102
    OUTLINECOLOR 153 0 0
   END
  END
  CLASS
   NAME "10 to 100million"
   EXPRESSION ([pop_est] <= 100000000 AND [pop_est] >= 10000000)
   STYLE
    COLOR 255 204 204
    OUTLINECOLOR 153 0 0
   END
  END
  CLASS
   NAME "under 10million"
   EXPRESSION ([pop_est] <= 10000000)
   STYLE
    OUTLINECOLOR 153 0 0
   END
  END
 END
# LAYER
#  NAME country-boundary
#  TYPE POLYGON
#  STATUS ON
#  DATA "110m_cultural/ne_110m_admin_0_countries.shp"
#  CLASS
#   NAME 'Country Boundary'
#   STYLE
#    OUTLINECOLOR 153 0 0
#   END
#  END
# END

END # MAP

OPACITY: Sets the opacity level (or the inability to see through the layer) of all classed pixels for a given layer. A value of 100 is opaque and 0 is fully transparent.
Deprecated since version 7.0: Use a COMPOSITE block instead.
特定のレイヤのすべての分類された画素の不透明度(またはレイヤを通して見ることができない)を設定します。 100の値は不透明であり、0は完全に透明です。
(http://mapserver.org/el/mapfile/composite.html#composite)
バージョン7.0で撤廃:代わりに、COMPOSITE を使用してください。
(http://mapserver.org/el/mapfile/layer.html)

CLASSITEM [attribute]: Item name in attribute table to use for class lookups.
クラス検索に使用する属性テーブルの項目名。
(http://mapserver.org/el/mapfile/layer.html)

EXPRESSION: A classification for the items matched above would be done by setting the CLASSITEM in the LAYER and the EXPRESSION in the CLASS.
上記一致した項目の分類は、LAYER 内の CLASSITEM と CLASS で EXPRESSION を設定することで実行されます。
(http://mapserver.org/el/mapfile/expressions.html)


Webブラウザのアドレスバーに次のように入力して Enter キーを押します。

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=global-laster&layer=population&map=/home/user/mapfile/global.map


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