File "data_output_20230719.php"

Full path: /www/ais_management/dl/data_output_20230719.php
File size: 5.72 KiB (5861 bytes)
MIME-type: text/x-php
Charset: utf-8

Download   Open   Back

<?php
//print $data_get ."<BR>";
//print_r($data_split);
//モデルのダウンロード先
$model_dl_path = "/www/ais_management/dl/";

//処理実行フラグのパス
$flag_file_path = "/www/ais_management/setting/ais_start_flag.txt";

//処理間隔の設定パス
$interval_path = "/www/ais_management/setting/ais_interval.txt";

//モデルの幅・長さの設定パス
$model_setting_path = "/www/ais_management/setting/model_setting.txt";
$setting_data = file_get_contents($model_setting_path);
$data_split = explode("\n",$setting_data);
$set_ct = count($data_split);
for($d = 0;$d < $set_ct;$d++)
{
	$model_set_data[$d] = explode(",",$data_split[$d]);
}


//施工場所
$position = explode(",",file_get_contents("/www/ais_management/setting/position.txt"));

//AIS船舶の取得範囲
$search_range = file_get_contents("/www/ais_management/setting/search_range.txt") * 1000;

//施工場所の座標から取得範囲の座標を設定
//緯度(1m辺りの座標)
$lat_m = 0.000008983148616;

//経度(1m辺りの座標 緯度は34度の場合)
$lon_m = 0.000010835618106;

$area_st['lat'] = $position[0] - $lat_m * $search_range;
$area_st['lon'] = $position[1] - $lon_m * $search_range;

$area_end['lat'] = $position[0] + $lat_m * $search_range;
$area_end['lon'] = $position[1] + $lon_m * $search_range;

//エリア出力(テスト用)
$area_output = $position[0] ."," .$position[1] ."\n" .$area_st['lat'] ."," .$area_st['lon'] ."\n" .$area_end['lat'] ."," .$area_end['lon'];
file_put_contents("/www/ais_management/setting/area.txt",$area_output);


//平面直角座標系の系番号
$epsg = file_get_contents("/www/ais_management/setting/epsg.txt");

//船舶用に設定したZ座標
$ship_z = file_get_contents("/www/ais_management/setting/ship_z.txt");

//aisデータ取得先
$ais_url = "http://www3.ptgw3.net/144_koube/term_out/ais_out_kikuchi.php";

//CSV出力先
//ディレクトリ
$dir = "/www/ais_management/ais/";

for(;;)
{
	$flag = file_get_contents($flag_file_path);
	$interval = file_get_contents($interval_path);
	if($flag)
	{
		//print "start" ."\n";
		$data_get  = "";
		$data_split = array();
		$now_time = date("Y-m-d H:i",time());
		$now_time2 = date("Y-m-d H:i:s",time());
		$ais_get_path = $ais_url ."?date=" .$now_time;
		$data_get  = file_get_contents($ais_get_path);
		file_put_contents("/www/ais_management/get_log.csv" ,"[" .$now_time2 ."] " .$data_get ."\n" ,FILE_APPEND | LOCK_EX);
		$data_split = explode('__',$data_get);
		$data_ct = count($data_split);
		
		
		$test_output_file = "gpsdata_" .date("Ymd" ,time()) .".csv";
		$ii = 1;
		for($i = 0;$i < $data_ct;$i++)
		{
			$output_dir = "";
			$output_data = "";
			$data = array();
			$data = explode('#',$data_split[$i]);
			
			//テスト出力
			if($data[8] && $data[9]) file_put_contents("/www/ais_management/" .$test_output_file , $data[9] ."," .$data[8] ."\n" , LOCK_EX);
			
			//対象のエリアのAISかチェック
			if(($area_st['lat'] <= $data[9]) && ($data[9] < $area_end['lat']) && ($area_st['lon'] <= $data[8]) && ($data[8] < $area_end['lon']))
			{
				if($data[0] != 0)
				{
					$output_dir = $dir .$data[0];
					$datetime = date("Y/m/d H:i" ,strtotime($data[15]));
					
					//緯度経度⇒平面直角座標へ変換
					$pg_exe = "/usr/local/bin/python315 /www/ais_management/gps_conv.py " .$epsg ." " .$data[9] ." " .$data[8];
					$output = "";
					$cmd = exec($pg_exe,$output);
					
					//方位角度+45度
					$data[5] = $data[5] + 45;
					
			 		$output_data = $datetime ."," .$output[0] ."," .$output[1] ."," .$ship_z ."," .$data[5] .",0,0";
					if(!file_exists($output_dir))
					{
						mkdir($output_dir, 0777);
						chmod($output_dir, 0777);
					}
					file_put_contents($output_dir ."/gpsdata.csv", $output_data , LOCK_EX);
				}
				
				switch($data[11])
				{
					case 30:
						$model_name = "model1.fbx";
						break;
						
					case 31:
					case 32:
						$model_name = "model2.fbx";
						break;
						
					case 33:
						$model_name = "model3.fbx";
						break;
						
					case 60 <= $data[11] && $data[11] <= 69:
						$model_name = "model5.fbx";
						break;
						
					case 70 <= $data[11] && $data[11] <= 79:
						$model_name = "model6.fbx";
						break;
						
					case 80 <= $data[11] && $data[11] <= 89:
						$model_name = "model7.fbx";
						break;
						
					default:
						$model_name = "model4.fbx";
						break;
				}

				if(!file_exists($output_dir ."/" .$model_name))
				{
					foreach ( glob($output_dir ."/*.fbx") as $file )
					{
						if(strcmp($file ,$output_dir ."/" .$model_name))
						{
							unlink($file);
						}
					}
					$flg = copy("/www/ais_management/model/" .$model_name , $output_dir ."/" .$model_name);
//					$flg2 = copy("/www/ais_management/model/" .$model_name , $model_dl_path .$data[0] ."_model" .$ii .".fbx");
//					$ii = $ii + 1;
				}
			}
		}
	}
	else
	{
		break;
	}
	
	//モデルダウンロード用のファイルを準備
	//ダウンロードフォルダ内初期化
	$del_file = $model_dl_path ."model_data/*";
	foreach (glob($del_file) as $val)
	{
		unlink($val);
	}

	$del_cmd = "rm -f /www/ais_management/dl/model_data.zip";
	$del_exec = exec($del_cmd);

	$filelist = glob($dir . '*');
	$data_ = array();
	$dt_ct = 0;
	$model_no = 1;
	foreach ($filelist as $file)
	{
		$data_split = explode('/',$file);
		$data_[$dt_ct][0] = array_pop($data_split);

		$filelist2 = glob($file .'/*.fbx');
		foreach ($filelist2 as $file2)
		{
			if (is_file($file2))
			{
				$flg2 = copy($file2 , $model_dl_path ."/model_data/" .$data_[$dt_ct][0] ."_model" .$model_no .".fbx");
				$model_no = $model_no + 1;
			}
		}
		$dt_ct = $dt_ct +1;
	}

	//ダウンロード用ZIPファイル作成
	$zip_create = 'cd /www/ais_management/dl/model_data ; zip -r /www/ais_management/dl/model_data.zip .';
	exec($zip_create);

	sleep($interval);
}
?>

PHP File Manager