Category Archives: ms4w - Page 82

p.mapper-4.2 on Windows [Chapter 1]

p.mapper-4.2 [Chaper 1]

前回のms4wでp.mapper-4.2.0のデモが動いたので、今回は、手持ちのshapeファイルを表示してみたいと思います。
最終的には
p.mapper-4.2で表示した三重県
な感じで日本語環境にしていきます。
また、p.mapperのマニュアルは必ず目を通して、不明点があればマニュアルを読みましょう。 何となくわかる英語ですので。。。

準備

まずは、簡単にすませるために、ms4w¥apps¥pmapper¥pmapper-4.2.0を丸ごとms4w¥Apsche¥htdocs¥にコピーして、pmapper42_mieとfolderの名前を変更しておきます。
pmapper42_mie内のconfigフォルダーをconfig_originalとして万一のためにコピーしておきます。

データをこちらからダウンロードして、解凍します。 解凍後mie_dataフォルダーをpmapper42_mieにコピーしておきます。

そうするとfolderの中は、
pmap42-mieのfolder
な感じになっていると思います。

configファイルの編集

pmapper42_mie¥config¥config_default.xmlを編集します。
今回は、単純にshapeファイルを表示させるのではなく、日本語表示も合わせてやってみたいと思います。
config_default.xmlは、tagを記述して、設定をしていくことが基本となります。
一つ一つのtagの説明については、p.mapperのマニュアルを見てください。
修正点は、mie_city.shpmie_railroad.shpmie_river.shpcategoryごとに表示することにします。
config_default.xmlは、最終的には、

<pmapper>
    <ini>
        <pmapper>
            <pmTitle>p.mapper - A MapServer PHP/MapScript Framework</pmTitle>
            <debugLevel>3</debugLevel>
            <plugins>export</plugins>
            <plugins>scalebar</plugins>
            <plugins>transparency</plugins>
        </pmapper>
        <config>
            <pm_config_location>default</pm_config_location>
            <pm_javascript_location>javascript</pm_javascript_location>
            <pm_javascript_optional>optional/ui</pm_javascript_optional>
            <pm_print_configfile>common/print.xml</pm_print_configfile>
            <pm_search_configfile>inline</pm_search_configfile>
        </config>
        <map>
            <mapFile>mie.map</mapFile>
            <tplMapFile>common/template.map</tplMapFile>
            <categories>
                <!-- <category name="cat_admin">
 -->
                <category name="主題図">
                    <group>行政界</group>
                    <group>鉄道</group>
                </category>
                <!-- <category name="cat_nature">
 -->
                <category name="自然環境図">
                    <group>河川</group>
                </category>
                <!-- <category name="cat_raster">

                    <group>dem</group>
                    <group>jpl_wms_global_mosaic</group>
                </category> -->
            </categories>
            <allGroups>
                <group>行政界</group>
                <group>鉄道</group>
                <group>河川</group>
            </allGroups>
            <defGroups>
                <group>行政界</group>
                <group>河川</group>
            </defGroups>
            <layerAutoRefresh>1</layerAutoRefresh>
            <!-- <imgFormat>
png8</imgFormat> -->
            <imgFormat>png</imgFormat>
            <altImgFormat>jpeg</altImgFormat>
            <!--
            <altImgFormatLayers>

                <layer>jpl_wms_global_mosaic</layer>
                <layer>dem</layer>
            </altImgFormatLayers>
            -->
            <sliderMax>max</sliderMax>
            <sliderMin>5000</sliderMin>
        </map>
        <query>
            <limitResult>300</limitResult>
            <highlightColor>0 255 255</highlightColor>
            <highlightSelected>1</highlightSelected>
            <autoZoom>nquery</autoZoom>
            <autoZoom>search</autoZoom>
            <zoomAll>search</zoomAll>
            <zoomAll>nquery</zoomAll>
            <infoWin>dynwin</infoWin>
            <alignQueryResults>1</alignQueryResults>
            <pointBuffer>10000</pointBuffer>
            <shapeQueryBuffer>0.02</shapeQueryBuffer>
        </query>
        <ui>
            <tocStyle>tree</tocStyle>
            <legendStyle>attached</legendStyle>
            <useCategories>1</useCategories>
            <catWithCheckbox>1</catWithCheckbox>
            <scaleLayers>1</scaleLayers>
            <icoW>18</icoW>
            <icoH>14</icoH>
			<legendKeyimageRewrite>0</legendKeyimageRewrite>
        </ui>
        <locale>
            <defaultLanguage>ja</defaultLanguage>
            <defaultCharset>UTF-8</defaultCharset>
            <!-- <map2unicode>
1</map2unicode> -->
            <map2unicode>0</map2unicode>
        </locale>
        <print>
            <printImgFormat>png</printImgFormat>
            <printAltImgFormat>jpeg</printAltImgFormat>
            <pdfres>2</pdfres>
        </print>
        <download>
            <dpiLevels>150</dpiLevels>
            <dpiLevels>200</dpiLevels>
            <dpiLevels>300</dpiLevels>
        </download>
        <php>
            <pearDbClass>MDB2</pearDbClass>
            <defaultTimeZone>Asia/Tokyo</defaultTimeZone>
        </php>
        <pluginsConfig>
            <export>
                <formats>XLS</formats>
                <formats>CSV</formats>
                <formats>PDF</formats>
            </export>
            <transparency2>
                <useOpacity>off</useOpacity>
            </transparency2>
        </pluginsConfig>
    </ini>
 
     <!-- searchlist内の記述は開発途中です。-->
     <searchlist version="1.0">
        <dataroot>$</dataroot>
        <searchitem name="市町村名" description="行政界">
            <layer type="shape" name="行政界">
                <field type="s" name="CN2" description="mie_city" wildcard="2">
                    <definition type="options" connectiontype="ms" sort="asc" firstoption="*">
                        <mslayer encoding="UTF-8"/>
                    </definition>
                </field>
            </layer>
        </searchitem>
    </searchlist>
</pmapper>

のようになります。

保存する際は、UTF-8で保存してください。私は、editorはTeraPadを使わせてもらっています。 保存時に文字コードを変更して保存できるので、非常に便利です。TeraPadでは、文字コードをUTF-8Nとして保存します。

主題図カテゴリーの中に、行政界と鉄道をグループとして登録、自然環境に河川をグループとして登録しています。
<searchlist>については、私自身が完全に理解できていないので、開発中としています。

map fileの作成

p.mapperのデモでも修正をしましたが、map fileを作成します。
pmapper42_mie¥config¥default¥内に、mie.mapをエディターで作成します。
今回使うmie.mapは、最終的には、

####################################################
# Start of map file  (pmapper-4.2.0)
####################################################

MAP

# The ShapeFile access is available in MapServer5.6.5
# Projection of PROJ4
# mie shpfile
# editer:TYS update:2012.04.03

####################################################
# Start of output projection definition
####################################################
PROJECTION
  'proj=longlat'
  'ellps=WGS84'
  'datum=WGS84'
  'no_defs'
END
#CONFIG "PROJ_LIB" "C:/ms4w/proj/nad/"
# End of output projection

EXTENT 135.347801 33.682544 137.491510 35.305096

STATUS ON
UNITS DD
INTERLACE OFF
SIZE 400 400
IMAGETYPE jpeg
IMAGECOLOR 255 255 255

####################################################
#linux
#FONTSET   "../common/fonts/msfontset.txt"
#SYMBOLSET "../common/symbols/symbols-pmapper.sym"
#SHAPEPATH "../../mie_data"

#windows
FONTSET "../common/fonts/msfontset.txt"
SYMBOLSET "../common/symbols/symbols-pmapper.sym"
SHAPEPATH "../../mie_data"
####################################################

#DEBUG ON

OUTPUTFORMAT
  NAME png
  DRIVER "GD/PNG"
  MIMETYPE "image/png"
  IMAGEMODE RGB
  FORMATOPTION  INTERLACE=OFF
  TRANSPARENT OFF
END

OUTPUTFORMAT
  NAME png8
  DRIVER "GD/PNG"
  MIMETYPE "image/png"
  IMAGEMODE PC256
  FORMATOPTION  INTERLACE=OFF
  TRANSPARENT OFF
END

OUTPUTFORMAT
  NAME GTiff
  DRIVER "GDAL/GTiff"
  MIMETYPE "image/tiff"
  IMAGEMODE RGB
  #FORMATOPTION "TFW=YES"
  #FORMATOPTION "COMPRESS=PACKBITS"
END

OUTPUTFORMAT
  NAME imagemap
  MIMETYPE "text/html"
  FORMATOPTION SKIPENDTAG=OFF
  DRIVER imagemap
END

####################################################
# Start of web interface definition
####################################################
WEB
  TEMPLATE "map.html"

  #Linux
  #IMAGEPATH "/var/www/html/tmp/ms_tmp/"
  #IMAGEURL "/tmp/ms_tmp/"

  #Windows
  IMAGEPATH "/ms4w/tmp/ms_tmp/"
  IMAGEURL "/ms_tmp/"

  QUERYFORMAT text/html
  MAXSCALE 1000000
  MINSCALE 5000
END

####################################################
# Start of Reference map definition
####################################################
REFERENCE
  EXTENT 135.347801 33.682544 137.491510 35.305096
  IMAGE "../../images/reference.png"
  SIZE 200 150
  COLOR -1 -1 -1
  OUTLINECOLOR 255 0 0
  STATUS ON
    MARKER 0
    MARKERSIZE 0
    MINBOXSIZE 3
    MAXBOXSIZE 0
  COLOR -1 -1 -1
  OUTLINECOLOR 255 0 0
END  # Reference

####################################################
# Start of layer definitions
####################################################
# mie_city
LAYER
  NAME "行政界"
  TYPE POLYGON
  STATUS ON
  DATA "mie_city"
  METADATA
    "DESCRIPTION"   "行政界"
    #"RESULT_FIELDS" "mie_city"
  END
  TRANSPARENCY 100
  CLASS
    NAME "行政界"
    STYLE
      #SYMBOL 1
      SIZE 7.0
      COLOR -1 -1 -1 #255 255 255
      OUTLINECOLOR 255 0  0
    END
    TEMPLATE "ttt_query.html"
  END
  TOLERANCE 5
END # Layer

####################################################
# mie_river
LAYER
  NAME "河川"
  METADATA
    "DESCRIPTION" "河川"
  END
  TYPE LINE
  STATUS ON
  DATA "mie_river"
  CLASS
    NAME "河川"
    STYLE
       SYMBOL 1
       SIZE 1.0
       WIDTH 1 #0.5
      COLOR 0 170 255
    END
    #TEMPLATE void
  END
END # layer

####################################################
# mie_railroad
LAYER
  NAME "鉄道"
  METADATA
    "DESCRIPTION" "鉄道"
  END
  TYPE LINE
  STATUS OFF
  DATA "mie_railroad"
  CLASS
    NAME "鉄道"
    STYLE
      SYMBOL 1
      COLOR 0 0 0
    END
    #TEMPLATE void
  END
END # Layer

END  #Map

となります。

保存する際は、UTF-8で保存してください。

ここで、config_default.xmlmie.mapを見比べてください。
LAYERのNAMEがそれぞれの<group>tagと一致しています。
また、LAYER内で行政界は、mie_city.shpであると定義しています。このように、config_default.xmlmie.mapを2つのファイルで整合をとらなければなりません。
せっかくですので、mie.mapの定義が正しく記述されて作図できるか試してみましょう。
ディスクトップ上MS4W-Shellを起動して、cmdで以下mie.mapがある場所にcdします。

shp2img -m mie.map -o test.jpg

と入力後実行すると、ms4w¥Apsche¥htdocs¥pmapper42_mie¥config¥default内にtest.jpgで三重県の画像が作成されます。
こんな、
三重県
感じです。
エラーがでたり、何もない画像だとmap fileの記述に誤りがあることになります。

reference map作成

pmapper42_mieを表示した際に、画面右下の概観図を作成します。
mie.mapをそのまま使っても良いのですが、行政界だけで作成します。
mie.mapのLAYERの”行政界”以外を STATUS OFFにして、保存します。

shp2img -m mie.map -o reference.png

でreference.pngを作成して、ms4w¥Apsche¥htdocs¥pmapper42_mie¥images¥内に上書きコピーします。

php.iniの修正

最後に、php.iniの修正をして日本語が表示できるようにします。
ms4w¥Apsche¥cgi-bin¥php.iniを修正します。
修正箇所は、

mbstring.language = Japanese; デフォルト言語を日本語に設定
mbstring.internal_encoding = UTF-8 ; 内部エンコーディングを UTF-8 に設定
mbstring.encoding_translation = On
mbstring.http_input = auto ; HTTP 入力を auto に設定
mbstring.http_output = UTF-8 ; HTTP出力エンコーディングを
mbstring.detect_order = auto ; デフォルトの順番を auto に設定
mbstring.substitute_character = none ; 文字を出力しない

修正後は、Apacheを再起動をしておきます。

pmapper42_mieの表示

後はWEB ブラウザーで、http://127.0.0.1/pmapper42_mie/ を入力すれば、
blog.godo-tys.jp_wp-content_gallery_mapserver_pmap42-mie_0.jpg
のように表示されます。

Pluginを追加していないので、はじめに表示したものと若干違いますね。Pluginについては次回に説明します。
表示されない場合は、文字コードを再度確認してください。

また、操作していると検索画面が文字化けしていますが、これも修正する必要がありますね。
順番にVersion upしていきます。

それでは、今日はここまで。

Social Widgets powered by AB-WebLog.com.