File "data_output.php"
Full path: /www/ais_management/safie/data_output.php
File size: 6.03 KiB (6179 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
//print $data_get ."<BR>";
//print_r($data_split);
//CSV出力先
//AISデータ出力先
$ais_data_path = "/www/ais_management/ais/";
//AISデータログ出力先
$ais_log_path = "/www/ais_management/ais_log/";
//モデルのダウンロード先
$model_dl_path = "/www/ais_management/dl/";
//処理実行フラグのパス
$flag_file_path = "/www/ais_management/setting/ais_start_flag.txt";
//処理間隔の設定パス
$interval_file_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";
for(;;)
{
$flag = file_get_contents($flag_file_path);
$interval = file_get_contents($interval_file_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 = $ais_data_path .$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);
file_put_contents($ais_log_path .$data[0] ."_gpsdata.csv", $output_data ."\n" ,FILE_APPEND | LOCK_EX);
}
$model_name = "";
switch($data[11])
{
case 0:
$model_name = "model4.fbx";
break;
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($ais_data_path . '*');
$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);
}
?>