ご使用方法 (PHP)
6月22日横浜で開催されるGeoアクティビティフェスタに参ります。
実行例
PHP サンプルのページを開いてください。
緯度・経度・スケール(縮尺の逆数)を指定すると、それにあわせてimg要素のsrc属性を設定します。
PHP スクリプト
ご注意: このスクリプトではパラメータチェック等は全く行われていません。
<html>
<head>
<title>WMS for Keitai</title>
</head>
<body>
<?php
# 定数
# 長軸半径
$major = 6378137;
# 扁平率
$flat = 1/298.257222101;
# 定数扱い
$width = 256;
$height= 256;
$dpi_x = 96.0;
$dpi_y = 96.0;
# 初期設定
$wh_p = $width / 2;
$hh_p = $height / 2;
# $mpi -> 定数 1in=0.0254m -> $mpi = 0.0254;
# 離心率**2
$e2 = 2*$flat-$flat*$flat;
print_src($_GET['lon'] / 180 * M_PI,$_GET['lat'] / 180 * M_PI,$_GET['scale'], $_GET['thick']);
function get_deltas($lam,$phi,$scale) {
global $major, $flat, $e2, $dpi_x,$dpi_y, $wh_p,$hh_p, $width,$height;
$cos_p = cos($phi);
$sin_p = sin($phi);
# 子午線, 卯酉線 求めるのに必要
$W2 = 1-$e2*$sin_p*$sin_p;
$W = sqrt($W2);
# 子午線
$merid = $major*(1-$e2)/($W2*$W);
# 卯酉線
$prime = $major/$W;
# dx/dλ
$dxdl = $prime*$cos_p;
# dy/dφ
$dydp = $merid;
return array($dxdl,$dydp);
}
function print_src($lam,$phi,$scale,$thick) {
global $dpi_x,$dpi_y, $wh_p,$hh_p, $width,$height;
# 画面サイズのメートル換算
$wh_m = $wh_p/$dpi_x*0.0254*$scale;
$hh_m = $hh_p/$dpi_y*0.0254*$scale;
# メートルと緯度経度の関係
$deltas = get_deltas($lam,$phi,$scale);
$dxdl = $deltas[0];
$dydp = $deltas[1];
# dλ
$dlam = $wh_m/ $dxdl;
$lam_min = $lam - $dlam;
$lam_max = $lam + $dlam;
# dφ
$dphi = $hh_m / $dydp;
$phi_min = $phi - $dphi;
$phi_max = $phi + $dphi;
# d(lat),d(lon)
$lat_min = $phi_min / M_PI * 180;
$lat_max = $phi_max / M_PI * 180;
$lon_min = $lam_min / M_PI * 180;
$lon_max = $lam_max / M_PI * 180;
# STYLESパラメータの値を用意
# コンマ区切りでスタイル名を指定します.
# スタイル名はLAYERSで指定されたレイヤ名に対応しています.
# $thick=='T'ならmedium(Cntr100のみthick)を使用
# そうでないならthin(Cntr100のみmedium)を使用
if( $thick == 'T' ) {
$styles = "medium,medium,medium,medium,thick,medium,medium,medium,medium,";
}
else {
$styles = "thin,thin,thin,thin,medium,thin,thin,thin,thin,";
}
# 1.3.0 の URL 作成
$url = "http://www.finds.jp/ws/kiban25000wms.cgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&" .
"CRS=EPSG:4326&BBOX=$lat_min,$lon_min,$lat_max,$lon_max&" .
"WIDTH=$width&HEIGHT=$height&FORMAT=image/png&" .
"LAYERS=AdmArea,PrefSmpl,JpSmpl,Cntr10,Cntr100,BldA,WL,RdEdg,RailCL,MAPNAME&" .
"STYLES=$styles";
# 画像取り込み
echo "<div><img src=\"$url\" width=\"$width\" height=\"$height\" /></div>";
}
?>
<form>
<p>緯度 <input type="text" size="8" value="<?php echo $_GET['lat']; ?>" name="lat"></p>
<p>経度 <input type="text" size="8" value="<?php echo $_GET['lon']; ?>" name="lon"></p>
<p>スケール <input type="text" size="6" value="<?php echo $_GET['scale']; ?>" name="scale"></p>
<p>太線 <input type="checkbox" "<?php echo $thick == 'T' ? "checked=\"checked\"" : ""; ?>" value="T" name="thick" /></p>
<p><input type="submit"></p>
</form>
<p>このアプリケーションは
承認番号 平20業使、第449号「基盤地図情報25000 WMS配信サービス」にアクセスします
(<a href="http://www.finds.jp/wsdocs/kibanwms/index.html">配信元</a>)</p>
</body>
</html>

