http://d.hatena.ne.jp/end0tknr/20110321/1300728621
先日のエントリに続いて(割と時間が経過していますが)、国土交通省提供の行政区域データをmapservで表示してみます。
※gisデータのインポートは、例えば、次のurlをご覧下さい
http://d.hatena.ne.jp/end0tknr/20080830/1220079398
※mapserver-5.6.6 を使用しました
http://mapserver.org/cgi/index.html
設定内容
httpd.confの抜粋
: ServerRoot "/home/endo/local/apache22" : Listen 8081 : ScriptAlias /smap/cgi /home/endo/dev/mapserver/cgi-bin alias /smap /home/endo/dev/mapserver
/home/endo/dev/mapserver 以下の構成
cgi-bin/ mapserv makeしたmapserverのcgi test.map test.html template tmp/ mapserverが表示画像を書き込みます
mapファイル (test.map)
MAP SIZE 500 500 #画像size EXTENT 135 36 142 40 #出力範囲の座標 STATUS ON #地図を表示するか UNITS DD #地図の単位(DD は緯度経度) IMAGECOLOR 255 255 255 #背景色R G B IMAGETYPE PNG #地図画像を保存する形式 LAYER NAME "gyosei" CONNECTIONTYPE POSTGIS CONNECTION "user=postgres password='' dbname=smap host=localhost" DATA "the_geom FROM gyosei" #select文 TYPE LINE STATUS ON CLASS COLOR 0 0 0 END END WEB TEMPLATE test.html IMAGEPATH "/home/endo/dev/mapserver/tmp/" IMAGEURL "/smap/tmp/" END END
template ( test.html )
<!-- MapServer Template --> <!-- ←このおまじないは必須 --> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <title></title> </head> <body> <form name="mapserv" method="GET" action="/smap/cgi/mapserv"> <!-- HIDDEN MAPSERVER CGI VARIABLES --> <input type="hidden" name="map" value="[map]"> <input type="hidden" name="layer" value="[layer]"> <input type="hidden" name="imgext" value="[mapext]"> <input type="hidden" name="imgxy" value="[center_x] [center_y]"> <input type="hidden" name="zoomdir" value="0"> <input type="image" name="img" src="[img]" style="border: 1px solid #000"> </form> </body> </html>
表示例
以上の設定を行うと、次のように表示され、画像をクリックすることで、地図をスクロールできます。
templateには「 MapServer Template 」が必須
先程のtemplate ( test.html )のヘッダ部に「MapServer Template」と記載していますが、これがない場合、次のようなエラーになります。
Content-type: text/html isValidTemplate(): Web application error. Missing magic string, test.html doesn't look like a MapServer template.
tmp以下に表示する画像が大量に作成されます。
tmp以下には、mapservが、MS13021637233275.pngといった表示画像を大量に作成しますが、しょうがないのかな?