end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

mapserverのmapファイルで、sql発行 , 日本語出力 , マーカー表示

今回、mapserverのマップファイルで、sql発行や日本語出力、マーカー表示をする機会があったので、srcを記載しておきます。

MAP
    SIZE 1000 1000           #画像size
    EXTENT 140.2 38.3 141.8 38.6   #出力範囲の座標
    STATUS ON              #地図を表示するか
    UNITS DD               #地図の単位(DD は緯度経度)
    IMAGECOLOR 255 255 255 #背景色R G B
    IMAGETYPE PNG          #地図画像を保存する形式
    FONTSET /Users/endo/local/mapserver-5.6.3/fonts/fonts.list
    SYMBOL NAME "circle" TYPE ellipse FILLED true POINTS 1 1 END END #SYMBOL定義
    LAYER
      NAME "gyosei"
      CONNECTIONTYPE POSTGIS
      CONNECTION "user=postgres password='' dbname=hazard host=localhost"
      #DATA〜の行は実際には1行です
      DATA "the_geom FROM
           (select g.*, c.city||'\n'||c.builded as adrs,builded
            from gyosei g left
            join city_summary c
              on (g.prn=c.prn and
                   (c.city like '%'||g.con||'%' or c.city like '%'||g.cn2||'%'))
             where g.prn='宮城県')
        AS new_table using unique gid"
      TYPE POLYGON
      STATUS ON
      LABELITEM 'adrs'
      CLASS
        EXPRESSION (   0<=[builded] && [builded]< 100)
        OUTLINECOLOR 0 0 0
        COLOR 240 248 255
        LABEL
          TYPE TRUETYPE
          FONT ipa_gothic
          COLOR 0 0 0
          OUTLINECOLOR 255 255 255
          SIZE 11
        END
      END
      CLASS
        EXPRESSION (100<=[builded])
        OUTLINECOLOR 0 0 0
        COLOR   0   0 139
        LABEL
          TYPE TRUETYPE
          FONT ipa_gothic
          COLOR 0 0 0
          OUTLINECOLOR 255 255 255
          SIZE 11
        END
      END
      CLASS
        OUTLINECOLOR 0 0 0
        COLOR 255 255 255
        LABEL
          TYPE TRUETYPE
          FONT ipa_gothic
          COLOR 0 0 0
          OUTLINECOLOR 255 255 255
          SIZE 11
        END
      END
    END
    LAYER
      NAME "tei"
      CONNECTIONTYPE POSTGIS
      CONNECTION "user=postgres password='' dbname=hazard host=localhost"
      DATA "point FROM tei_coord"
      TYPE POINT
      STATUS ON
      CLASS
        SYMBOL "circle"
          SIZE 10
          COLOR 200 0 0
        END
      END
    END
END

日本語の出力には、FONTSET の定義が必要

マップファイルの8行目に次のような記述があります。

FONTSET /Users/endo/local/mapserver-5.6.3/fonts/fonts.list

mapfileで日本語を出力するにはフォントファイルと、このFONTSET定義が必要ですが、私の場合、ipaから日本語フォントをダウンロードし、次のようにfonts.listに定義しました。

ipa_gothic			/Users/endo/local/font/ipag.ttf

DATA行でjoinしたsqlを発行する場合、GIDの指定が必要

今回、DATA行では、joinを用いたsqlを発行していますが、
このようなsqlを用いる場合、「using unique gid」のようにGIDの指定が必要になるようです。

※前述のmapfileにあるsqlは、実際には1行で記述して下さい。

POINTなオブジェクトを円で表示する場合、SYMBOL定義が必要

    SYMBOL NAME "circle" TYPE ellipse FILLED true POINTS 1 1 END END

ここで定義している「circle」は、「LAYER NAME "tei"」で使用しています。