英語は血と汗を投入して読みました。一緒にいかがでしょうか。
1.参考情報
▼参考書
Tyler Mitcbell, Web Mapping Illustrated, O'REILLY 2008→基本は、参考書であるWeb Mapping IllustratedのChapter 11を写経します。
▼Web(OSX 10.8でApacheを動かす方法)
Install and configure Apache, MySQL, PHP and phpMyAdmin on OSX 10.8 Mountain Lion2.練習用シェープファイルのダウンロード
まず練習のための地図データ(シェープ形式)をダウンロードします。もちろん参考書に掲載されているworlddataです。
▼ダウンロード元
freegis_worlddata-0.1_simple.tar.gzを落として解凍しましょう。
このファイルの中に、coutries_simpleと名前のついた.shp、.dbf、shxの3種類が格納されています。シェープファイルはこの3種類で1セットを構成します。shpファイルに図形の座標、dbfファイルに属性情報(建物名とか)、shxファイルには図形の座標と属性情報の対応関係がそれぞれ保存されています。
3.mapfileの作成
▼mapfileの内容(global.map)
MAP
SIZE 600 300
EXTENT -180 -90 180 90
IMAGECOLOR 180 180 250
UNITS DD
SCALEBAR
STATUS EMBED
UNITS KILOMETERS
INTERVALS 3
TRANSPARENT TRUE
OUTLINECOLOR 0 0 0
END
LEGEND
STATUS EMBED
POSITION LR
TRANSPARENT TRUE
END
WEB
TEMPLATE global.html
IMAGEPATH "/Library/WebServer/Documents/tmp/"
IMAGEURL "/tmp/"
END
LAYER
NAME countries
TYPE POLYGON
STATUS DEFAULT
DATA countries_simpl
LABELITEM 'NAME'
LABELMAXSCALE 50000000
CLASSITEM 'NAME'
CLASS
NAME 'Bulgaria'
EXPRESSION 'Bulgaria'
OUTLINECOLOR 100 100 100
COLOR 255 255 150
LABEL
SIZE LARGE
OUTLINECOLOR 255 255 255
MINFEATURESIZE 40
END
END
CLASS
NAME 'All Countries'
EXPRESSION ('[NAME]' ne 'Bulgaria')
OUTLINECOLOR 100 100 100
COLOR 200 200 200
END
END
END
4.index.htmlの作成
▼index.htmlの内容
<HTML>
<HEAD><TITLE>MapServer Test</TITLE></HEAD>
<BODY>
<CENTER><H2>MapServer Test</H2>
<FORM method=GET action="/cgi-bin/mapserv">
<INPUT type="hidden" name="map" value="/Library/WebServer/Documents/global.map">
<INPUT type="hidden" name="layer" value="countries">
<INPUT type="hidden" name="zoomdir" value=1>
<INPUT type="hidden" name="zoomsize" value=2>
<INPUT type="hidden" name="program" value="/cgi-bin/mapserv">
<INPUT type="submit" value="Start MapServer">
</FORM></CENTER>
</BODY>
</HTML>
▼(参考)MapServerの引数メモ
上記index.htmlで「Start MapServer」ボタンを押すと、URLには下記の引数が入力されます。引数は他にもありますので、ドキュメントで確認を。http://localhost/cgi-bin/mapserv?map=%2FLibrary%2FWebServer%2FDocuments%2Ftoshima.map&layer=countries&zoomdir=1&zoomsize=2&program=%2Fcgi-bin%2Fmapserv
・mapfileの指定
map=%2FLibrary%2FWebServer%2FDocuments%2Fglobal.map
・取得するレイヤー
layer=countries
・クリック時のズームイン・アウトの指定(アウトの場合は-1です)
zoomdir=1
・ズーム時の倍率
zoomsize=2
・MapServerの位置
program=%2Fcgi-bin%2Fmapserv
5.global.htmlの作成
index.htmlでボタンを押すと、引数がMapServerに引き渡され、global.mapを読み込みます。このglobal.mapから呼び出される地図表示用のページがglobal.htmlです。
▼global.htmlの内容
冒頭の「<!-- MapServer Template -->」は参考書には載っていませんが、MapServerの最新バージョンでは必要な記述なので、必ず入れます。<!-- MapServer Template -->
<HTML>
<HEAD><TITLE>MapServer Test</TITLE></HEAD>
<BODY>
<CENTER><H2>MapServer Test</H2>
<HR>
<FORM method=GET action="/cgi-bin/mapserv">
<INPUT NAME="img" TYPE="image" SRC="[img]" width=600 height=300 border=0 ALT="Map Image">
<INPUT type="hidden" name="zoomdir" value=1 [zoomdir_1_check] >
<INPUT type="hidden" name="zoomsize" size=4 value=[zoomsize]>
<INPUT type="hidden" name="imgxy" value="[center_x][center_y]">
<INPUT type="hidden" name="imgext" value="[mapext]">
<INPUT type="hidden" name="map" value="[map]">
<INPUT type="hidden" name="savequery" value="true">
<INPUT type="hidden" name="mapext" value="shapes">
</FORM></CENTER></BODY></HTML>
6.apacheの起動
▼apacheをターミナルから起動
username$ sudo apachectl start
localhost以下のルートディレクトリは標準では/Library/WebServer/Documentsになります。変更したければ、/private/etc/apache2/httpd.confでどうぞ。
7.地図画像の一時保管ディレクトリを作る
▼フォルダを作る
コマンドラインからでも、ファインダーからでも良いのですが、ルートディレクトリの下に、tmpディレクトリ(/Library/WebServer/Documents/tmp)を作ります。▼パーミションの設定
これだけだとApacheからアクセスできないのでchomdなどで権限変更します。あくまで実験用です。username$ sudo chmod 777 /Library/WebServer/Documents/tmp
8.各ファイルをルートフォルダに格納
9.表示のテスト
ブラウザを開き、ローカルホストのURL(http://localhost)にアクセス。"Start MapServer"ボタンを押して地図が表示されれば成功です。
また、地図をクリックすると、その部分が拡大されます。今回、ズームアウトの設定はなく、ただ拡大するだけですが・・・。
10.そのほか
mapfileの構成が分かると、様々な表示のさせ方が実験できると思います。ぜひ実験してみてください。
No comments:
Post a Comment