p.mapper-4.2 [Chaper 1]
前回のms4wでp.mapper-4.2.0のデモが動いたので、今回は、手持ちのshapeファイルを表示してみたいと思います。
最終的には

な感じで日本語環境にしていきます。
また、p.mapperのマニュアルは必ず目を通して、不明点があればマニュアルを読みましょう。 何となくわかる英語ですので。。。
準備
まずは、簡単にすませるために、ms4w¥apps¥pmapper¥pmapper-4.2.0を丸ごとms4w¥Apsche¥htdocs¥にコピーして、pmapper42_mieとfolderの名前を変更しておきます。
pmapper42_mie内のconfigフォルダーをconfig_originalとして万一のためにコピーしておきます。
データをこちらからダウンロードして、解凍します。 解凍後mie_dataフォルダーをpmapper42_mieにコピーしておきます。
configファイルの編集
pmapper42_mie¥config¥config_default.xmlを編集します。
今回は、単純にshapeファイルを表示させるのではなく、日本語表示も合わせてやってみたいと思います。
config_default.xmlは、tagを記述して、設定をしていくことが基本となります。
一つ一つのtagの説明については、p.mapperのマニュアルを見てください。
修正点は、mie_city.shpとmie_railroad.shpとmie_river.shpをcategoryごとに表示することにします。
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.xmlとmie.mapを見比べてください。
LAYERのNAMEがそれぞれの<group>tagと一致しています。
また、LAYER内で行政界は、mie_city.shpであると定義しています。このように、config_default.xmlとmie.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/ を入力すれば、

のように表示されます。
Pluginを追加していないので、はじめに表示したものと若干違いますね。Pluginについては次回に説明します。
表示されない場合は、文字コードを再度確認してください。
また、操作していると検索画面が文字化けしていますが、これも修正する必要がありますね。
順番にVersion upしていきます。
それでは、今日はここまで。


最近のコメント