Não entendi bem a situação mas... vou responder como entendi.
Se os gid sempre forem sempre esses mesmo vc pode fazer o seguinte:
$comp_rio = 0;
$gids = array(124,243, 244);
foreach($array_de_objetos as $key => $obj){
if( array_key_exists($obj->gid, $gids)){
$comp_rio = $obj->comprimento + $comp_rio;
}
}
onde $comp_rio está o tal dos elementos somados.
:)
Se funcionar vou querer a cerveja :)
Em 9 de maio de 2011 19:18, Marcello Benigno
<[email protected]>escreveu:
> Olá pessoal, essa é meio off topic, mas exige o tratamento de um array e eu
> realmente não estou conseguindo fazer, vejam só... Tenho o array de objetos
> abaixo:
>
> Array
> (
> [0] => stdClass Object
> (
> [gid] => 178
> [comprimento] => 4304.33549546129
> [pnt_inicial] => POINT(259885 9193105)
> [pnt_final] => POINT(261675 9196115)
> )
>
> [1] => stdClass Object
> (
> [gid] => 124
> [comprimento] => 1006.24891681028
> [pnt_inicial] => POINT(261675 9196115)
> [pnt_final] => POINT(262400 9196695)
> )
>
> [2] => stdClass Object
> (
> [gid] => 243
> [comprimento] => 7470.68109219034
> [pnt_inicial] => POINT(262855 9190095)
> [pnt_final] => POINT(261675 9196115)
> )
>
> [3] => stdClass Object
> (
> [gid] => 244
> [comprimento] => 1926.81240867132
> [pnt_inicial] => POINT(262855 9190095)
> [pnt_final] => POINT(264465 9190755)
> )
>
> [4] => stdClass Object
> (
> [gid] => 254
> [comprimento] => 1828.52813742386
> [pnt_inicial] => POINT(264215 9189275)
> [pnt_final] => POINT(262855 9190095)
> )
>
> )
>
> Resultado da seguinte consulta:
>
> SELECT gid, ST_Length(rio_geom) AS comprimento,
> ST_AsText(ST_StartPoint(rio_geom)) AS pnt_inicial,
> ST_AsText(ST_EndPoint(rio_geom)) AS pnt_final
> FROM
> (SELECT r.gid, ST_Intersection(r.the_geom, b.the_geom) AS rio_geom
> FROM rio r, bacia b
> WHERE ST_Intersects(r.the_geom,b.the_geom)
> AND b.gid = 280) AS tabela_intersecao
> ORDER BY pnt_inicial;
>
> Agora eu quero encontrar o comprimento do rio de maior bacia, que nesse
> caso
> seria a soma do comprimentos dos trechos com gid igual a: 124, 243 e 244
> (ver figura em anexo). fica fácil verificar isso, pois os pontos iniciais e
> finais desses trechos possuem as mesmas coordenadas.
>
> Imaginei o seguinte... fazendo um loop e armazenando em uma variável do
> tipo
> array os comprimentos, onde se algum trecho tiver ponto inicial igual a um
> ponto final de outro trecho (ou vice-versa), os comprimentos devem ser
> acumulados, depois é só extrair do array o seu maior valor. Alguém poderia
> me ajudar na resolução desse problema? pago uma ceverja, rs.
>
> Um abraço,
> --
> *Marcello Benigno B. de Barros Filho*
> Prof. do Curso Superior de Tecnologia em Geoprocessamento - IFPB
> Mestre em Ciências Geodésicas e Tecnologias da Geoinformação - UFPE
> http://profmarcello.blogspot.com
> http://about.me/marcello.benigno
>
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>
>
--
----
Cristiano Santos de Oliveira
Desenvolvedor de Software
Cel. (71) 91794664
MSN: [email protected]
Gmail: [email protected]
Skype: cristiano.oliveir
Linux user # 495181
Lattes:
Lattes<http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4413558T4>
----------------------------------------------------------
"... não vemos o mundo com nossos olhos, mas com os conceitos que habitam
nossa mente..."
Osame Kinouchi.
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------