File "view_map_bk.php"
Full path: /www/ansys/rctm/002_hitachinaka_2/map/view_map_bk.php
File size: 14.43 KiB (14779 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
function retShipSimbol($point_, $direction_, $mapDegree_)
{
$ret = -1;
if ($direction_ == -1)
return -1;
$ret = array();
$ret[0]["x"] = $point_["x"];
$ret[0]["y"] = $point_["y"];
$ret[1]["x"] = floor($point_["x"] + (25 * cos(deg2rad($direction_ - 90 - $mapDegree_))));
$ret[1]["y"] = floor($point_["y"] + (25 * sin(deg2rad($direction_ - 90 - $mapDegree_))));
$ret[2]["x"] = floor($point_["x"] + (12 * cos(deg2rad($direction_ - 90 - $mapDegree_))));
$ret[2]["y"] = floor($point_["y"] + (12 * sin(deg2rad($direction_ - 90 - $mapDegree_))));
$ret[3]["x"] = floor($point_["x"] + (8 * cos(deg2rad($direction_ - 90 + 120 - $mapDegree_))));
$ret[3]["y"] = floor($point_["y"] + (8 * sin(deg2rad($direction_ - 90 + 120 - $mapDegree_))));
$ret[4]["x"] = floor($point_["x"] + (8 * cos(deg2rad($direction_ - 90 - 120 - $mapDegree_))));
$ret[4]["y"] = floor($point_["y"] + (8 * sin(deg2rad($direction_ - 90 - 120 - $mapDegree_))));
return $ret;
}
function deleteFile($dir)
{
if (!$handle=opendir($dir))
return;
while($filename=readdir($handle))
{
if(!preg_match("/^\./", $filename))
{
if (!unlink("$dir/$filename"));
return;
}
}
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
// 自動でクラスを参照する
// 関数名 : __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");
Debug::setMode(DEBUG_MODE);
if (DEBUG_MODE == 1)
{
Stopwatch::start();
}
//===============================================
// CommonUtilities
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
//===============================================
$SCRIPT_TITLE = "工事車両運行管理システム -位置確認-";
$PENTA_OCEAN = "五洋・菅原特定建設工事共同企業体";
$TAIL_PENTA_OCEAN = "penta-ocean";
$HOST = "192.168.100.153";
$DB = "ansys";
$USER = "postgres";
$PASS = "am#71ZJ*";
$LOG_FILE = "./log/view.log";
$CONST_ID = 12;
$APPLICATION_ID = 23;
$MAP_NAME = "./scmap/orig.png";
$R_VAL = array(255, 204, 204, 204, 204, 153, 153, 100, 102, 102, 255, 153);
$G_VAL = array(102, 255, 102, 153, 255, 0, 51, 0, 204, 51, 0, 153);
$B_VAL = array( 0, 0, 102, 255, 255, 51, 255, 0, 153, 255, 153, 0);
$ENABLE_SEC = 600;
$ENABLE_DATETIME = date("Y-m-d H:i:s", time() - $ENABLE_SEC);
try
{
// tmpディレクトリ内のファイルを削除
deleteFile("./tmp");
// $_log = new Log($LOG_FILE);
// ===============================================
// 画像情報の取得
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
// ===============================================
$imgSize = getimagesize($MAP_NAME);
// $zoomImgSize = getimagesize($MAP_NAME_ZOOM);
$imgFileName = "./tmp/". $CONST_ID. "_". $APPLICATION_ID. "_". md5(uniqid(rand(), true)) .image_type_to_extension($imgSize[2]);
// ===============================================
// 基準点情報
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
// ===============================================
// $ltLon = 140.61044; //経度(左上)
// $ltLat = 36.41828; //緯度(左上)
// $rbLon = 140.61207; //経度(右下)
// $rbLat = 36.42019; //緯度(右下)
//1,3,36.42529,140.62654
//1277,1021,36.41734,140.61868
$ltLon = 140.62654; //経度(左上)
$ltLat = 36.42529; //緯度(左上)
$rbLon = 140.61868; //経度(右下)
$rbLat = 36.41734; //緯度(右下)
$ltX = 1; // 左上X座標
$ltY = 3; // 左上Y座標
$rbX = 1277; // 右下X座標
$rbY = 1021; // 右下Y座標
$diffX = $rbX - $ltX; // X座標ピクセルの差を求める
$diffY = $rbY - $ltY; // Y座標ピクセルの差を求める
// $spX = number_format(($rbLon - $ltLon) / $diffX, 10); // X座標の倍率を求める
// $spY = number_format(($rbLat - $ltLat) / $diffY, 10); // Y座標の倍率を求める
$spX = number_format(($rbLat - $ltLat) / $diffX, 10); // X座標の倍率を求める
$spY = number_format(($rbLon - $ltLon) / $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 = "/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf";
//imagesetthickness($img, $THIC);
//imagesetthickness($img, $THIC);
// 使用色の準備
$Black = imagecolorallocate($img, 0,0,0);
$White = imagecolorallocate($img, 255, 255, 255);
// 更新時間をマップに表示する
//$update = date("H:i:s" ,time());
//imagefilledpolygon($img, array(10, 10, 10, 20, 55, 20, 55, 10), 4, $White);
//ImageTTFText ($img, 8, 0, 10, 20, $Black, $font1, $update);
//================================================
// データベース接続
// 備考 :
// 更新 : 2012/11/29 KMK-Teraoka
//================================================
$conn = pg_connect("
host = ". $HOST. "
dbname = ". $DB. "
user = ". $USER. "
password= ". $PASS. "
");
if (!$conn)
{
throw new Exception("データベースへの接続に失敗しました");
}
// ===============================================
// 位置を取得する
// 備考 :
// 更新 : 2012/11/29 KMK T.Teraoka
// ===============================================
$RTime = date("Y-m-d H:i:s" ,time() - 600);
$selTerm = "SELECT * FROM qgis.ts_terminal";
$selTerm .= " WHERE const_id='". $CONST_ID. "'";
$selTerm .= " AND app_id='". $APPLICATION_ID. "'";
// $selTerm .= " AND android_id='a5e4f91fce680532'";
//$selTerm .= " AND mesdatetime >= '". $ENABLE_DATETIME. "'";
$selTerm .= " AND mesdatetime > '". $RTime. "'";
$selTerm .= " ORDER BY android_id";
$selTerm .= ";";
//$_log->write($selTerm. "\n");
// ImageTTFText($img, 12, 0, 500, 400, $Black, $font1, $Area[1] ."__" .$Area[0]);
// ImageTTFText($img, 12, 0, 500, 420, $Black, $font1, $Area[3] ."__" .$Area[2]);
// ImageTTFText($img, 12, 0, 500, 440, $Black, $font1, $Area[5] ."__" .$Area[4]);
// ImageTTFText($img, 12, 0, 500, 460, $Black, $font1, $Area[7] ."__" .$Area[6]);
if (!($resTerm = pg_query($conn, $selTerm)))
{
throw new Exception("データ取得に失敗<br />". $resTerm. "<br />". pg_last_error(). "<br />");
}
$shipCol = imagecolorallocate($img, 255, 165, 0);
$zmShipCol = imagecolorallocate($img, 255, 165, 0);
$zmSyunCol = imagecolorallocate($img, 0, 102, 253);
//20151027 追加
ImageTTFText($img, 12, 0, 10, 20, $Black, $font1, date("Y-m-d H:i:s",time()));
$row = pg_num_rows($resTerm);
//ImageTTFText($img, 12, 0, 500, 400, $Black, $font1, $row);
for($iCount = 0; $iCount < $row; $iCount++)
{
$rowTerm = pg_fetch_array($resTerm, $iCount, PGSQL_ASSOC);
//var_dump($rowTerm);
if (0 != strcmp($rowTerm["lat"], "") && 0 != strcmp($rowTerm["lon"], "") && strcmp($rowTerm["android_id"], "8041c3ba7d4843c1") != 0)
{
// 基準点1
//
if (strcmp($rowTerm["android_id"], "a237b48012d8873e") != 0 && strcmp($rowTerm["android_id"], "26f784b2293665d0") != 0 && strcmp($rowTerm["android_id"], "db9739dd1cfbc823") != 0)
{
$point = array();
$point["x"] = ($rowTerm["lat"] - $ltLat) / $spX + $ltX;
$point["y"] = ($rowTerm["lon"] - $ltLon) / $spY + $ltY;
imagefilledellipse($img, $point["x"], $point["y"], 15, 15, $shipCol);
//ImageTTFText($img, 12, 0, 500, 400 + 30*$iCount, $Black, $font1, $point["x"] ."__" .$point["y"]);
//ImageTTFText($img, 12, 0, 500, 400, $Black, $font1,$rowTerm["terminal_name"]);
/*
$shipSimbol = retShipSimbol($point, $rowTerm["direction"], 0);
if ($shipSimbol == -1)
{
$ellipSize = 8;
imagefilledellipse($img, $point["x"], $point["y"], $ellipSize, $ellipSize, $shipCol);
}
else
{
imagefilledellipse($img, $point["x"], $point["y"], 15, 15, $shipCol);
//imageline($img, $shipSimbol[0]["x"], $shipSimbol[0]["y"], $shipSimbol[1]["x"], $shipSimbol[1]["y"], $shipCol);
//imageline($img, $shipSimbol[2]["x"], $shipSimbol[2]["y"], $shipSimbol[3]["x"], $shipSimbol[3]["y"], $shipCol);
//imageline($img, $shipSimbol[3]["x"], $shipSimbol[3]["y"], $shipSimbol[4]["x"], $shipSimbol[4]["y"], $shipCol);
//imageline($img, $shipSimbol[4]["x"], $shipSimbol[4]["y"], $shipSimbol[2]["x"], $shipSimbol[2]["y"], $shipCol);
}
*/
$length = strlen($rowTerm["terminal_name"]);
imagefilledrectangle($img, $point["x"] + 5, $point["y"] - 45, $point["x"] + 5 + ($length * 9), $point["y"] - 22, $White);
imagerectangle($img, $point["x"] + 5, $point["y"] - 45, $point["x"] + 5 + ($length * 9), $point["y"] - 22, $shipCol);
ImageTTFText($img, 12, 0, $point["x"] + 10, $point["y"] - 27, $Black, $font1, $rowTerm["terminal_name"]);
}
}
}
/*
//-----------------------------------------------------------------------------------
// Debug
$FUNABASHI_ROUTE_LAT = 35.59561081;
$FUNABASHI_ROUTE_LON = 139.9843314;
$COUNT_AREA = array(
array("lat" => 35.62678039, "lon" => 140.0013295),
array("lat" => 35.63562604, "lon" => 140.0137459),
array("lat" => 35.62880063, "lon" => 140.0254795),
array("lat" => 35.62017771, "lon" => 140.0109185)
);
// $COUNT_AREA = array(
// array("lat" => 35.585232, "lon" => 139.804459),
// array("lat" => 35.581812, "lon" => 139.800081),
// array("lat" => 35.579438, "lon" => 139.804716),
// array("lat" => 35.582580, "lon" => 139.808836)
// );
$xa = ($FUNABASHI_ROUTE_LON - $ltLon) / $spX + $ltX;
$ya = ($ltLat - $FUNABASHI_ROUTE_LAT) / $spY + $ltY;
imagefilledellipse($img, $xa, $ya, 8, 8, $Black);
$pointa = array();
for($iCount = 0; $iCount < 4; $iCount++)
{
$pointa[$iCount]["x"] = ($COUNT_AREA[$iCount]["lon"] - $ltLon) / $spX + $ltX;
$pointa[$iCount]["y"] = ($ltLat - $COUNT_AREA[$iCount]["lat"]) / $spY + $ltY;
if ($iCount > 0)
{
imageline($img, $pointa[$iCount]["x"], $pointa[$iCount]["y"], $pointa[$iCount - 1]["x"], $pointa[$iCount - 1]["y"], $Black);
}
if ($iCount == 3)
{
imageline($img, $pointa[$iCount]["x"], $pointa[$iCount]["y"], $pointa[0]["x"], $pointa[0]["y"], $Black);
}
}
*/
//-----------------------------------------------------------------------------------
//20160126
$HtSelect = "SELECT * FROM qgis.hitachinaka_point order by id;";
//$_log->write($selTerm. "\n");
if (!($resHt = pg_query($conn, $HtSelect)))
{
// print pg_last_error() ."<BR>";
// throw new Exception("データ取得に失敗<br />". $DelArea. "<br />". pg_last_error(). "<br />");
}
// $ba = 0.6;
$Csize =14;
$row = pg_num_rows($resHt);
for($iCount = 0; $iCount < $row; $iCount++)
{
$rowHt = pg_fetch_array($resHt, $iCount, PGSQL_ASSOC);
if($rowHt['area_id'])
{
$selArea = "SELECT * FROM qgis.area_status_fill WHERE list_id=" .$rowHt['area_id'] .";";
if (!($resArea = pg_query($conn, $selArea)))
{
// print pg_last_error() ."<BR>";
// throw new Exception("データ取得に失敗<br />". $DelArea. "<br />". pg_last_error(). "<br />");
}
$rowArea = pg_fetch_array($resArea, 0, PGSQL_ASSOC);
$ColR = "0x" .substr($rowArea['legend_color'],0,2);
$ColG = "0x" .substr($rowArea['legend_color'],2,2);
$ColB = "0x" .substr($rowArea['legend_color'],4,2);
//ImageTTFText($img, 12, 0, 500, 400, $Black, $font1, $ColR .$ColR .$ColB);
$PointCol = imagecolorallocate($img, $ColR,$ColG,$ColB);
//$PointCol = imagecolorallocatealpha($img, $ColR,$ColG,$ColB,75);
//20160127
//ImageTTFText($img, 12, 0, 500, 300, $Black, $font1, "____________" .$iCount);
if($iCount < 77)
{
$PointCol = imagecolorallocatealpha($img, $ColR,$ColG,$ColB,75);
imagefilledellipse($img, $rowHt['x'], $rowHt['y'], 27, 27, $PointCol);
}
else if($iCount < 109)
{
imagesetthickness($img, 6);
if(($iCount%2) == 1)
{
imagearc($img, $rowHt['x'], $rowHt['y'], 28, 20, 150, 215, $PointCol);
}
else
{
imagearc($img, $rowHt['x'], $rowHt['y'], 30, 24, 325, 25, $PointCol);
}
}
else if($iCount < 111)
{
imagesetthickness($img, 6);
if(($iCount%2) == 1)
{
imagearc($img, $rowHt['x'], $rowHt['y'], 28, 20, 170, 230, $PointCol);
}
else
{
imagearc($img, $rowHt['x'], $rowHt['y'], 28, 24, 355, 45, $PointCol);
}
}
else if($iCount < 177)
{
imagesetthickness($img, 6);
if(($iCount%2) == 1)
{
imagearc($img, $rowHt['x'], $rowHt['y'], 32, 28, 245, 295, $PointCol);
}
else
{
imagearc($img, $rowHt['x'], $rowHt['y'], 32, 28, 65, 115, $PointCol);
}
}
else if($iCount < 179)
{
imagesetthickness($img, 6);
if(($iCount%2) == 1)
{
imagearc($img, $rowHt['x'], $rowHt['y'], 28, 24, 130, 180, $PointCol);
}
else
{
imagearc($img, $rowHt['x'], $rowHt['y'], 28, 24, 305, 15, $PointCol);
}
}
else
{
imagesetthickness($img, 6);
if(($iCount%2) == 1)
{
imagearc($img, $rowHt['x'], $rowHt['y'], 28, 20, 140, 215, $PointCol);
}
else
{
imagearc($img, $rowHt['x'], $rowHt['y'], 30, 24, 325, 25, $PointCol);
}
}
}
// print "<area shape=\"circle\" coords=\"" . * $ba ."," . * $ba ."," .$Csize * $ba ."\" href=\"#\" alt=\"円形\" onclick='Fill(\"" .$rowHt['pno'] ."\");'>";
}
// imagerectangle($zoomImg, 0, 0, $zoomImgSize[0] - 1, $zoomImgSize[1] - 1, $BlackZm);
// imagecopy($img, $zoomImg, 0, 0, 0, 0, $zoomImgSize[0], $zoomImgSize[1]);
// ===============================================
// 描画した画像を保存 & パレットを削除
// 備考 :
// 更新 : 2010/09/08 KMK T.Teraoka
// ===============================================
header('Content-Type: image/png');
// imagepng($img, $imgFileName);
imagepng($img);
imagedestroy($img);
imagedestroy($src);
}
catch(Exception $exc)
{
// $_log->write($exc->getMessage(). "\n");
}
//===============================================
// Postgresql終了処理
// 備考 :
// 更新 : 2012/10/19 KMK-Teraoka
//===============================================
pg_close($conn);
?>