File "view_map.php"
Full path: /www/ansys/qgis/012_kawasaki/map/view_map.php
File size: 12.07 KiB (12362 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
// 自動でクラスを参照する
// 関数名 : __autoload()
// 備考 : 参照先は./class/XXX.phpとする
// 更新 : 2012/10/19 KMK-Teraoka
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
function __autoload($className)
{
$fPath = "./class/" . str_replace("_", "/", $className) . ".php";
require_once $fPath;
}
//===============================================
// DEBUG_MODE
// 備考 :
// 更新 : 2012/10/19 KMK-Teraoka
//===============================================
define("DEBUG_MODE", "0");
cDebug::setMode(DEBUG_MODE);
if (DEBUG_MODE == 1)
{
cStopwatch::start();
}
//===============================================
// CommonUtilities
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
//===============================================
$SCRIPT_TITLE = "運行管理システム 東京国際空港C誘導路中央部他地盤改良工事";
$PENTA_OCEAN = "五洋建設株式会社";
$TAIL_PENTA_OCEAN = "penta-ocean";
$HOST = "l92.168.100.153";
$DB = "ansys";
$USER = "postgres";
$PASS = "am#71ZJ*";
$LOG_FILE = "./log/view_position.log";
$CONST_ID = 10;
$APPLICATION_ID = 17;
$MAP_NAME = "./map/map.png";
//===============================================
// HTML-HEAD-
// 備考 :
// 更新 : 2012/10/18 KMK-Teraoka
//===============================================
/*
print "<html>";
print "<head>";
//print "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">";
print "<meta http-equiv=\"Refresh\" content=\"6000\">";
print "<title>". $SCRIPT_TITLE. "</title>";
print "<style type=\"text/css\">";
print "html {font-size: 80%; font-family:\"MS ゴシック\"; overflow-y:scroll;}";
print "table {font-size: 100%; font-family:\"MS ゴシック\"; text-align:center;}";
print "input {font-size: 100%; font-family:\"MS ゴシック\";}";
print "select {font-size: 100%; font-family:\"MS ゴシック\";}";
print "pre {font-size: 100%; font-family:\"MS ゴシック\";}";
print "</style>";
print "<SCRIPT LANGUAGE='JavaScript'>";
print "function RefreshImg(filen)";
print "{";
print "uniq = new Date();";
print "uniq = \"?\"+uniq.getTime();";
print "newImage = document.imgToLoad.src;";
print "index = newImage.indexOf(\"?\", 0);";
print " if (index > 0)";
print " {";
print " newImage = newImage.substr(0, index);";
print " }";
print " document.imgToLoad.src = filen+uniq;";
print "}";
print "</SCRIPT>";
print "</head>";
*/
//===============================================
// HTML-BODY部開始-
// 備考 :
// 更新 : 2012/10/18 KMK-Teraoka
//===============================================
//print "<body>";
//for(;;)
//{
try
{
$mLog = new cLog($LOG_FILE);
// ===============================================
// 画像情報の取得
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
// ===============================================
$imgSize = getimagesize($MAP_NAME);
//$imgFileName = "./tmp/". $CONST_ID. "_". $APPLICATION_ID. "_". md5(uniqid(rand(), true)) .image_type_to_extension($imgSize[2]);
$imgFileName = "view_map.php";
//■回転角度
// $angle = pi() * (30.9847222) / 180.0;
// $angle = deg2rad(30.9847222); //
// $angle2 =deg2rad(-30.9847222); //座標⇒ピクセル変換後、回転角度
$angle = deg2rad(120.986288); //
$angle2 =deg2rad(-120.986288); //座標⇒ピクセル変換後、回転角度
// $angle = deg2rad(-140.5785699); //
// $angle2 =deg2rad(-140.5785699); //座標⇒ピクセル変換後、回転角度
// ===============================================
// 基準点情報
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
// ===============================================
// $ltLon = 1776.520; //経度(左上)
// $ltLat = 2223.108; //緯度(左上)
// $rbLon = 5822.263; //経度(右下)
// $rbLat = 3694.629; //緯度(右下)
$ltLon = 139.7462631; //経度(左上)
$ltLat = 35.49991583; //緯度(左上)
// $ltLon = 139.7465813; //経度(左上)
// $ltLat = 35.50006901; //緯度(左上)
$rbLon = 139.7473761; //経度(右下)
$rbLat = 35.49927999; //緯度(右下)
//2014-0403 変更 菊地
// $ltX = 358; // 左上X座標
// $ltY = 495; // 左上Y座標
// $rbX = 1469; // 右下X座標
// $rbY = 91; // 右下Y座標
// $ltX = 595; // 左上X座標
// $ltY = 282; // 左上Y座標
// $rbX = 1185; // 右下X座標
// $rbY = 763; // 右下Y座標
//※元のピクセル座標を**度回転後のピクセル座標を計算
//Yの座標は、計算時は左下が0,0となるため、逆にする処理をしている($imgSize[1] - ***)
$ltX = (1187 * cos($angle)) - (($imgSize[1]-282) * sin($angle));
$ltY = (($imgSize[1]-282) * cos($angle)) + (1187 * sin($angle));
$rbX = (47 * cos($angle)) - (($imgSize[1]-790) * sin($angle));
$rbY = (($imgSize[1]-790) * cos($angle)) + (47 * sin($angle));
$diffX = $rbX - $ltX; // X座標ピクセルの差を求める
$diffY = $rbY - $ltY; // Y座標ピクセルの差を求める
$spX = number_format(($rbLon - $ltLon) / $diffX, 10); // X座標の倍率を求める
$spY = number_format(($ltLat - $rbLat) / $diffY, 10); // Y座標の倍率を求める
// ===============================================
// GD処理準備
// 備考 :
// 更新 : 2010/09/08 KMK T.Teraoka
// ===============================================
$src = ImageCreateFromPNG($MAP_NAME); //パレットへ貼り付ける画像指定(地図画像)
$img = imagecreatetruecolor($imgSize[0],$imgSize[1]); //パレットの作成
imagecopy($img, $src, 0, 0, 0, 0, $imgSize[0], $imgSize[1]); //画像をパレットへ貼り付け
$font1 = "/www/fonts/VL-Gothic-Regular.ttf";
// 使用色の準備
$Black = imagecolorallocate($img, 0,0,0);
$White = imagecolorallocate($img, 255, 255, 255);
$Red = imagecolorallocate($img, 255, 0, 0);
$Green = imagecolorallocate($img, 0, 128, 0);
$Blue = imagecolorallocate($img, 0, 0, 255);
// 更新時間をマップに表示する
$up_check = date("H:i:s" ,time());
imagefilledpolygon($img, array(10, 10, 10, 20, 55, 20, 55, 10), 4, $White);
ImageTTFText ($img, 15, 0, 10, 20, $Black, $font1, $up_check);
// ImageTTFText ($img, 30, 0, 10, 100, $Black, $font1, $up_check);
//================================================
// データベース接続
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
//================================================
$conn = pg_connect("
host = ". $HOST. "
dbname = ". $DB. "
user = ". $USER. "
password= ". $PASS. "
");
if (!$conn)
{
throw new Exception("データベースへの接続に失敗しました");
}
//■エリアの座標表示
$Area[0][lon] = "139.7472222";
$Area[0][lat] = "35.49920";
$Area[1][lon] = "139.7474233";
$Area[1][lat] = "35.49930";
$Area[2][lon] = "139.7471235";
$Area[2][lat] = "35.49971";
$Area[3][lon] = "139.7470796";
$Area[3][lat] = "35.49972";
$Area[4][lon] = "139.7467325";
$Area[4][lat] = "35.50020";
$Area[5][lon] = "139.7461872";
$Area[5][lat] = "35.49993";
$Area[6][lon] = "139.7465767";
$Area[6][lat] = "35.49940";
$Area[7][lon] = "139.7468908";
$Area[7][lat] = "35.49956";
$Area[8][lon] = "139.7469534";
$Area[8][lat] = "35.49957";
//$Area[9][lon] = "139.7465813";
//$Area[9][lat] = "35.50006901";
//$Area[10][lon] = "139.7467135";
//$Area[10][lat] = "35.50013408";
//$Area[11][lon] = "139.7468647";
//$Area[11][lat] = "35.49992863";
//$Area[12][lon] = "139.7468911";
//$Area[12][lat] = "35.49989272";
//$Area[13][lon] = "139.7470423";
//$Area[13][lat] = "35.49968728";
//$Area[14][lon] = "139.7470862";
//$Area[14][lat] = "35.49967389";
$AreaCt = count($Area);
for($j = 0;$j < $AreaCt;$j++)
{
$AreaX_c = ($Area[$j]["lon"] - $ltLon) / $spX + $ltX;
$AreaY_c = ($ltLat - $Area[$j]["lat"]) / $spY + $ltY;
$AreaX = ($AreaX_c * cos($angle2)) - ($AreaY_c * sin($angle2));
$AreaY = 1024 - (($AreaY_c * cos($angle2)) + ($AreaX_c * sin($angle2)));
// 現在位置の描画
$ellipSize = 12;
$col = imagecolorallocate($img, 255, 0, 0);
Imagefilledellipse($img, $AreaX, $AreaY, $ellipSize, $ellipSize, $col);
}
// ===============================================
// 位置を取得する
// 備考 :
// 更新 : 2012/11/29 KMK T.Teraoka
// ===============================================
$selTerm = "SELECT * FROM qgis.ts_terminal";
$selTerm .= " WHERE const_id='". $CONST_ID. "'";
$selTerm .= " AND app_id='". $APPLICATION_ID. "'";
$selTerm .= " ORDER BY terminal_name";
$selTerm .= ";";
$mLog->writeLog($selTerm. "\n");
if (!($resTerm = pg_query($conn, $selTerm)))
{
throw new Exception("データ取得に失敗<br />". $resTerm. "<br />". pg_last_error(). "<br />");
}
$row = pg_num_rows($resTerm);
for($iCount = 0; $iCount < $row; $iCount++)
{
$rowTerm = pg_fetch_array($resTerm, $iCount, PGSQL_ASSOC);
if (0 != strcmp($rowTerm["lat"], "") && 0 != strcmp($rowTerm["lon"], ""))
{
// ■
// 座標変換
///////////////////////////////////////////////////////////////////////////////
/*
//テスト用
switch($iCount)
{
case 0:
$rowTerm["lat"] = "35.49925324";
$rowTerm["lon"] = "139.7470509";
break;
case 1:
$rowTerm["lat"] = "35.49893921";
$rowTerm["lon"] = "139.7472434";
break;
case 2:
$rowTerm["lat"] = "35.49885198";
$rowTerm["lon"] = "139.7473076";
break;
case 3:
$rowTerm["lat"] = "35.49888787";
$rowTerm["lon"] = "139.7473239";
break;
case 4:
$rowTerm["lat"] = "35.49915672";
$rowTerm["lon"] = "139.7478703";
break;
case 5:
$rowTerm["lat"] = "35.49870221";
$rowTerm["lon"] = "139.7467617";
break;
case 6:
$rowTerm["lat"] = "35.49926484";
$rowTerm["lon"] = "139.7477908";
break;
default:
continue;
}
*/
///////////////////////////////////////////////////////////////////////////////
$posX_c = ($rowTerm["lon"] - $ltLon) / $spX + $ltX;
$posY_c = ($ltLat - $rowTerm["lat"]) / $spY + $ltY;
$posX = ($posX_c * cos($angle2)) - ($posY_c * sin($angle2));
$posY = 1024 - (($posY_c * cos($angle2)) + ($posX_c * sin($angle2)));
//デバッグ用
//ImageTTFText ($img, 15, 0, 20, 100, $Black, $font1, $row);
//ImageTTFText ($img, 15, 0, 20, 50, $Black, $font1,"ltLon==" .$ltLon ."_ltLon==" .$ltLat ."_spx==" .$spX ."_spy==" .$spY ."_ltx==" .$ltX ."_ltY==" .$ltY);
//ImageTTFText ($img, 15, 0, 20, 100, $Black, $font1, $posX ."," .$posY);
//ImageTTFText ($img, 15, 0, 20, 120, $Black, $font1, $posXaa ."," .$posYaa);
//ImageTTFText ($img, 15, 0, 20, 150, $Black, $font1,"pos2==" .$posX2 ."," .$posY2);
//ImageTTFText ($img, 15, 0, 20, 170, $Black, $font1,"pos2==" .$posX2aa ."," .$posY2aa);
// 現在位置の描画
$ellipSize = 15;
$col = imagecolorallocate($img, 0, 100, 255);
Imagefilledellipse($img, $posX, $posY, $ellipSize, $ellipSize, $col);
// 端末番号表示の吹き出し
imagefilledrectangle($img, $posX + 5, $posY - 23, $posX + 100, $posY - 7, imagecolorallocate($img, 255, 255, 255));
imagerectangle($img, $posX + 5, $posY - 23, $posX + 90, $posY - 7, imagecolorallocate($img, 0, 0, 0));
ImageTTFText ($img, 12, 0, $posX + 8, $posY - 9, $Black, $font1, $rowTerm["terminal_name"]);
//imagettftext($img, 8, 0, $posX + 8, $posY - 11, imagecolorallocate($img, 0, 0, 0), $font1, mb_convert_encoding($rowTerm["terminal_name"], "SJIS", "UTF8"));
}
}
// ===============================================
// 描画した画像を保存 & パレットを削除
// 備考 :
// 更新 : 2010/09/08 KMK T.Teraoka
// ===============================================
header('Content-Type: image/png');
// imagepng($img, $imgFileName);
imagepng($img);
imagedestroy($img);
imagedestroy($src);
}
catch(Exception $exc)
{
$mLog->writeLog($exc->getMessage(). "\n");
}
//===============================================
// Postgresql終了処理
// 備考 :
// 更新 : 2012/10/19 KMK-Teraoka
//===============================================
pg_close($conn);
//===============================================
// HTML終了処理
// 備考 :
// 更新 : 2012/10/18 KMK-Teraoka
//===============================================
//print "</body>";
//print "</html>";
?>