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
---------------------------

Responder a