dez
12
2010

NOTAM – Notice to AirMen – AISWEB

Opa pessoal a pedido do nosso amigo Fonseca da GOLv, estou postando aqui o script de captura do NOTAM pela aisweb.

Usa-se CURL.

exemplo

Abraços.

<?php

function aisWeb($icao){
  if(strlen($icao)==0 || strlen($icao)!=4){
    return 'Código ICAO incorreto';
    exit;
  }

 $icao = strtoupper($icao);

function get_web_page( $url,$curl_data )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,         // return web page
        CURLOPT_HEADER         => false,        // don't return headers
        CURLOPT_FOLLOWLOCATION => true,         // follow redirects
        CURLOPT_ENCODING       => "",           // handle all encodings
        CURLOPT_USERAGENT      => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040608",
        CURLOPT_FILETIME       => false,
        CURLOPT_FRESH_CONNECT  => true,
        CURLOPT_AUTOREFERER    => true,         // set referer on redirect
        CURLOPT_NOSIGNAL       => false,
        CURLOPT_CONNECTTIMEOUT => 300,          // timeout on connect
        CURLOPT_TIMEOUT        => 300,          // timeout on response
        CURLOPT_MAXREDIRS      => 10,           // stop after 10 redirects
        CURLOPT_POST           => 1,            // i am sending post data
        CURLOPT_POSTFIELDS     => $curl_data,    // this are my post vars
        CURLOPT_SSL_VERIFYHOST => 0,            // don't verify ssl
        CURLOPT_SSL_VERIFYPEER => false,        //
        CURLOPT_VERBOSE        => 1                //
    );

    $ch      = curl_init($url);
    curl_setopt_array($ch,$options);
    $content = curl_exec($ch);
    $err     = curl_errno($ch);
    $errmsg  = curl_error($ch) ;
    $header  = curl_getinfo($ch);
    $codehttp = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;

   if($codehttp==200){
        return $header['content'];
     }else{
        return $header['content'] = 'Erro interno:'.$codehttp;
     }
}

$curl_data = array(
                    'radioFilter' =>'I',
                    'filtro0' => $icao,
                    'filtro1' => '',
                    'filtro2' => '',
                    'filtro3' => '',
                    'filtro4' => '',
                    'filtro5' => '',
                    'filtro6' => '',
                    'filtro7' => '',
                    'filtro8' => '',
                    'filtro9' => '',
                    'lingua'  => 'N'
                    );
$url = "http://www.aisweb.aer.mil.br/aisweb/PesquisaBoletimLocalidade.do";
$response = get_web_page($url,$curl_data);

//$tratado = preg_replace("/<a href=\"..\/(.*)\" target=\"_blank\">/", "<a href=\"http://www.aisweb.aer.mil.br/\${1}\" target=\"_blank\">", $response);
$tratado = trim($response);
$tratado = preg_replace("/<img border=\"0\" src=\"imagens\/(.*)\">/", "<img src=\"http://www.aisweb.aer.mil.br/aisweb/imagens/\${1}\" border=\"0\">", $tratado);
$primeiraPos = strrpos($tratado, 'Boletim');
$ultimaPos = strrpos($tratado ,'<!--');
$ultimoPos2 = strrpos($tratado, '>');
$tratado = substr($tratado,$primeiraPos);
$tratado = str_replace(array("\n", "\t", "</td>", "</tr>", "</tbody>", "</table>","<hr size=\"1\">","<!--Fim Conteudo main-->"),'',$tratado);

$tratado = str_replace("<p align=\"center\">---| FIM DA LISTAGEM |---</p>",'<p align=\"center\">---| icarosouza.net |---</p>',$tratado);
$tratado = str_replace('<div align="right">','<div>',$tratado);
$tratado = str_replace("<img src=\"imagens/Sup.gif\">","<img src=\"http://www.aisweb.aer.mil.br/aisweb/imagens/Sup.gif\">",$tratado);
$tratado = str_replace("<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"0\">","<table class=\"texto\" align=\"center\"><tbody> <tr> <td>\n<table class=\"texto\" align=\"center\">\n\t\t\t\t\t\t\t<tbody>", $tratado);
$tratado = str_replace("<td class=\"titulo_campo\" align=\"center\" bgcolor=\"#E5E5E5\">","<td class=\"fundo4\" align=\"center\" nowrap=\"nowrap\">", $tratado);
//$tratado = str_replace("<td class=\"texto_campo\" align=\"center\">","<td class=\"fundo4\" align=\"center\" nowrap=\"nowrap\">", $tratado);
//$tratado = str_replace("<td class=\"texto_campo\">", "<td class=\"fundo1\" align=\"left\">", $tratado);
$tratado = preg_replace('|\s{2,}|', ' ', $tratado);

$GLOBALS['classTd']=0;
function call_back($matches){

    if($GLOBALS['classTd']==0){
       $GLOBALS['fundoTd']='fundo1';
       $GLOBALS['classTd']=1;
    }else{
       $GLOBALS['fundoTd']='fundo2';
       $GLOBALS['classTd']=0;
    }
       return '<td class="'.$GLOBALS['fundoTd'].'" align="center">';

}

$tratado = preg_replace_callback("/<td class=\"(.*)\" align=\"center\">/","call_back",$tratado);
$tratado = preg_replace_callback("/<td class=\"texto_campo\">/","call_back",$tratado);

$tratado = str_replace("</table>", "</tbody></table>", $tratado);
$buscar = array('</body>','</html>');
$tratado = str_replace($buscar, '', $tratado);
return $tratado;
}
$aisWeb = aisWeb($_GET['icao']);
?>
<link rel="stylesheet" href="http://www.voevesper.com.br/css/estilos.css" type="text/css" media="screen" />
<table class="texto2" align="center" width="98%">
<tr>
<td>
<p><?php echo $aisWeb; ?>
</td>
</tr>
</table>
0
dez
11
2010

Listar pilotos em voo com dados da IVAO

Opa pessoal depois de um bom tempo sem postar, trago aqui um post onde ele resgata os dados dos servidores da IVAO e os trata exibindo somente o necessário.

No exemplo só escolhi trazer “callsign origem>destino”, tendo outras muitas variáveis para exibir.
nesse link você encontra os nomes das variaveis http://network.ivao.aero/clients_section.

Esse script ele baixa um arquivo compactado contendo os dados dos servidores, por isso é necessário de leitura & escrita(777) no arquivo whazzup.txt, se o mesmo não existir crie e dê permissão.
Exemplo

Na função associado ela somente exibe os VID que estão no array, portanto está comentada pra exibir todos os pilotos de uma companhia.

Abraços.

<?php

// nome das variaveis http://network.ivao.aero/clients_section
// para server linux crie o arquivo whazzup.txt no mesmo diretorio e dê permissão 777.

function associado($vid){
    $vids = array('300284', '205427', '268298', '312088');
    if(in_array($vid,$vids)){
        return true;
       }
 }

$server1 = 'http://de3.www.ivao.aero/whazzup.txt.gz';
$server2 = 'http://am1.www.ivao.aero/whazzup.txt.gz';
if(!$zd = gzopen($server1, "r")){
$zd = gzopen($server2, "r");
}
$contents = gzread($zd,99999999);
gzclose($zd);
$p = fopen("whazzup.txt","w");
fwrite($p, $contents);
fclose($p);
$lines = file('whazzup.txt', FILE_SKIP_EMPTY_LINES);

function arr_search ( $array, $expression ) {
    $result = array();
    $expression = preg_replace ( "/([^\s]+?)(=|<|>|!)/", "\$a['$1']$2", $expression );
    foreach ( $array as $a )
    if (ereg($expression,$a) )
     $result[] = $a;
    return $result;
}

$a = array('callsign','vid','realname','clienttype','frequency','latitude','longitude',
'altitude','groundspeed','planned_aircraft','planned_tascruise','planned_depairport'
,'planned_altitude','planned_destairport','server','protrevision','rating','transponder'
,'facilitytype','visualrange','planned_revision','planned_flighttype','planned_deptime'
,'planned_actdeptime','planned_hrsenroute','planned_minenroute','planned_hrsfuel'
,'planned_minfuel','planned_altairport','planned_remarks','planned_route','planned_depairport_lat'
,'planned_depairport_lon','planned_destairport_lat','planned_destairport_lon','atis_message'
,'time_last_atis_received','time_connected','client_software_name','client_software_version'
,'adminrating','atc_or_pilotrating','planned_altairport2','planned_typeofflight','planned_pob'
,'true_heading','onground','');
$pilotos =arr_search ( $lines, "SB" );

foreach($pilotos as $dados){
    $dados=explode(':', $dados);
    $array[]=array_combine($a, $dados);
}

?>
<div id="aeronaves">
  <table style="font-size: x-small" border="0" cellspacing="0" cellpadding="0">
  <tbody>
  <?php
  foreach($array as $dados){
       if($dados['clienttype']=='PILOT'){
         $dados['airline'] = substr($dados['callsign'],0,3);
        if($dados['airline']=='GLO' && associado($dados['vid'])){
          $dados['realname'] = ucwords(strtolower($dados['realname']));
          $dados['realname'] = substr($dados['realname'],0,-5);
          $aeronave=explode('/',$dados['planned_aircraft']);
          echo'<tr><td>';
          echo utf8_encode($dados['callsign']).' '.$dados['planned_depairport'].'>'.$dados['planned_depairport'];
          echo'</td></tr>';

    }
  }
 }
?>
</tbody>
</table>
</div>
0
dez
11
2010

DataBase AIRAC 1210 MySQL

Opa pessoal segue db do AIRAC 1210, contendo waypoints,airports,airways,NAVids.

É só deixar a imaginação rolar e criar coisas bem legais.

Bom proveito, abraços.

airportlookup
airports
airwaylegs
airways
config
ilses
navaidlookup
navaids
navaidtypes
runways
surfacetypes
terminallegs
terminallegsex
terminals
trmlegtypes
waypointlookup
waypoints

http://icarosouza.net/examples/airac1210.rar

2