Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function rio_maior_comprimento($arrayTrechos)
- {
- if (count($arrayTrechos) > 1)
- {
- $arrayGID = array();
- $i2_ant;
- for ($i = 0; $i < count($arrayTrechos); $i++)
- {
- for ($i2 = 0; $i2 < count($arrayTrechos); $i2++)
- {
- if ($i != $i2)
- {
- if (($arrayTrechos[$i]['X_pnt_inicial'] == $arrayTrechos[$i2]['X_pnt_final']) && ($arrayTrechos[$i]['Y_pnt_inicial'] == $arrayTrechos[$i2]['Y_pnt_final']))
- {
- if (empty($i2_ant))
- {
- if ($i < $i2)
- {
- array_push($arrayGID, $i);
- array_push($arrayGID, $i2);
- $i2_ant = $i2;
- }
- } else
- {
- if (( $i < $i2 ) && ( $i == $i2_ant ))
- {
- array_push($arrayGID, $i);
- array_push($arrayGID, $i2);
- $i2_ant = $i2;
- }
- }
- }
- }
- }
- }
- # retira valores duplicados
- $arrayGID = array_unique($arrayGID);
- # ordena
- sort($arrayGID);
- #print_r( $arrayGID );
- $arrayGIDsMaisCompTotal = array(gids => array(), comprimentoTotal => 0);
- foreach ($arrayGID as $valor)
- {
- array_push($arrayGIDsMaisCompTotal[gids], $arrayTrechos[$valor][gid]);
- $arrayGIDsMaisCompTotal[comprimentoTotal] = $arrayGIDsMaisCompTotal[comprimentoTotal] + $arrayTrechos[$valor][comprimento];
- }
- return $arrayGIDsMaisCompTotal;
- } else
- {
- #Arrays devem ser declarados antes de retornar
- $arrayGIDsMaisCompTotal = array(gids => array($arrayTrechos[0][gid]), comprimentoTotal => $arrayTrechos[0][comprimento]);
- return $arrayGIDsMaisCompTotal;
- }
- }
- # Exemplo ADAPTADO do Array de Objetos do e-mail
- # Ex Apenas um trecho
- $arrayTrechos = array(0 => array(gid => 178, comprimento => 4304.33549546129, X_pnt_inicial => 259885, Y_pnt_inicial => 9193105, X_pnt_final => 261675, Y_pnt_final => 9196115));
- # Exemplo ADAPTADO do Array de Objetos do e-mail
- # Ex Varios trechos
- $arrayTrechos_2 = array(
- 0 => array('gid' => 178, 'comprimento' => 4304.33549546129, 'X_pnt_inicial' => 259885, 'Y_pnt_inicial' => 9193105, 'X_pnt_final' => 261675, 'Y_pnt_final' => 9196115),
- 1 => array('gid' => 124, 'comprimento' => 1006.24891681028, 'X_pnt_inicial' => 261675, 'Y_pnt_inicial' => 9196115, 'X_pnt_final' => 262400, 'Y_pnt_final' => 9196695),
- 2 => array('gid' => 243, 'comprimento' => 7470.68109219034, 'X_pnt_inicial' => 262855, 'Y_pnt_inicial' => 9190095, 'X_pnt_final' => 261675, 'Y_pnt_final' => 9196115),
- 3 => array('gid' => 244, 'comprimento' => 1926.81240867132, 'X_pnt_inicial' => 262855, 'Y_pnt_inicial' => 9190095, 'X_pnt_final' => 264465, 'Y_pnt_final' => 9190755),
- 4 => array('gid' => 254, 'comprimento' => 1828.52813742386, 'X_pnt_inicial' => 264215, 'Y_pnt_inicial' => 9189275, 'X_pnt_final' => 262855, 'Y_pnt_final' => 9190095));
- # Imprime o resultado usando a funcao
- print('<br/>--------Um Trecho----------<br/>');
- print_r(rio_maior_comprimento($arrayTrechos)); # Array ( [gids] => Array ( [0] => 178 ) [comprimentoTotal] => 4304.3354954613 )
- print('<br/><br/>--------Varios Trechos----------<br/>');
- print_r(rio_maior_comprimento($arrayTrechos_2)); # Array ( [gids] => Array ( [0] => 124 [1] => 243 [2] => 254 ) [comprimentoTotal] => 10305.458146424 )
- # A funcao retorna um array em que:
- # > O primeiro indice eh um Array contendo os GIDs das linhas(trechos) que formam o maior rio;
- # > O segundo indice eh o Comprimento Total formado pela soma dos trechos.
- # Usando o ex do e-mail o resultado serah:
- # Array ( [gids] => Array ( [0] => 124 [1] => 243 [2] => 254 ) [comprimentoTotal] => 10305.458146424 )
- # > GIDs = 124, 243 e 254
- # > Comprimento Total = 10305.458146424
- # Dessa forma pode-se usar os GIDs para fazer uma consulta, "pintando" os trechos na tela. Ao mesmo tempo tem-se o comprimento total, resultado da soma dos trechos.
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement