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

Download   Open   Back

<?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>";

?>

PHP File Manager