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;
}