MapScriptをためした
mapfileはこんなかんじ
MAP NAME MAPTEST EXTENT 122 22 149 46 UNITS DD FONTSET ./fonts.txt WEB IMAGEPATH "tmp/" IMAGEURL "tmp/" END PROJECTION "init=epsg:4612" # JGD2000 END #-------- レイヤー -------- #---- 背景=海=DEF IMAGECOLOR 221 238 255 # ---- kibanservのwms画像を取得 LAYER NAME "kiban 25000" TYPE RASTER STATUS DEFAULT CONNECTION "http://www.finds.jp/ws/kiban25000wms.cgi?" CONNECTIONTYPE WMS METADATA "wms_srs" "EPSG:4612" "wms_name" "AdmArea,PrefSmpl,JpSmpl,BldA,Cntr10,Cntr100,WL,RdEdg,RailCL" "wms_server_version" "1.1.1" "wms_format" "image/gif" END END END
スクリプトがこんなかんじ。
#!/usr/bin/perl use mapscript; use CGI; $width = 200; $height = 200; $lat = 35.65; $lon = 139.74; $scale = 25000; my $query = CGI->new; # マップファイルを読む $mapObj = new mapscript::mapObj("./maptest.map"); if( !$mapObj ) { print_msError(); exit; } # サイズをセット $mapObj->setSize($width,$height); # 画像タイプをセット $mapObj->selectOutputFormat('gif'); # $lat,$lonが中心となるようにextentを設定 $extent = new mapscript::rectObj( $lon-1, $lat-1, $lon+1, $lat+1 ); # ズームする($maxextentはセットしなくて良い=undefを設定する) $mapObj->zoomScale($scale,new mapscript::pointObj($width*0.5,$height*0.5),$width,$height,$extent,undef); # 描画 $img = $mapObj->draw(); if( !$img ) { print_msError(); exit; } # 保存 $img->save("./tmp/1.png"); # 出力 print $query->header(-charset =>'UTF-8'); print $query->start_html(-charset=>'UTF-8',-encoding=>'UTF-8',-lang=>'ja',-title=>"TEST"); print "<img src=\"./tmp/1.png\" />\n"; print $query->end_html; # エラー出力 sub print_msError { print_debug("error:\n".mapscript::msGetErrorString("\n")); } # デバッグ用 sub print_debug { local ($mess) = @_; print $query->header(-charset =>'UTF-8'); print $query->start_html(-charset=>'UTF-8',-encoding=>'UTF-8',-lang=>'ja',-title=>"TEST"); print "<pre>$mess</pre>\n"; print $query->end_html; }