Como montar lista de trechos a montante de um nó utilizado função Aggregate?

94 views
Skip to first unread message

Leonardo Porto Nazareth

unread,
Apr 6, 2020, 4:08:26 PM4/6/20
to qgisb...@googlegroups.com
Boa tarde,

Estou trabalhando com um projeto onde possuo duas camadas vetoriais, uma camada de trechos de redes de esgoto (camada vetorial de linhas) e uma camada de poços de visita da rede (camada vetorial de nós). A camada de nós sempre coincide com os pontos inicial e final dos trechos, porém existem alguns nós que "recebem" mais de um trecho, como na figura abaixo:

Imagem exemplo.png






















Na tabela de atributos da camada dos nós eu preciso criar uma lista com a identificação ( atributo - ID_TRM_(N) da camada dos trechos) de todos os trechos que veem antes de cada um dos nós (trechos a montante), a principio podem ser todos eles na mesma coluna da tabela de atributos da camada dos nós, mas depois eu preciso separar para que cada trecho esteja em uma coluna separada.

Utilizando as formular de Aggregate eu consegui até agora listar o nome de todos os trechos que intersectam um nó, o problema é que nisso é incluído o trecho que vem depois do nó (jusante). Para isso utilizei a seguinte expressão na calculadora de campos:

 aggregate( layer:='Trechos_PJ_Basico',
 aggregate:='concatenate',
 expression:="ID_TRM_(N)",
 concatenator:=',' ,
 filter:=intersects($geometry, geometry(@parent)))

O resultado está na coluna Tre_Mont_T da imagem abaixo:

.

Imagem exemplo2.png



Além disso tentei utilizar a seguinte expressão, pensando em selecionar apenas as linhas cujo vértice final (end_point) intersectam os nós, porém o resultado foi o mesmo que o obtido com a expressão anterior:


 aggregate( layer:='Trechos_PJ_Basico',

 aggregate:='concatenate',

 expression:="ID_TRM_(N)",

 concatenator:=',' ,

 filter:=intersects(end_point( geometry(@parent)),$geometry))


Alguém tem alguma ideia de como eu poderia chegar ao resultado esperado, e posteriormente separar os trechos a montante separados nas colunas Tre_M_1, Tre_M_2 e Tre_M_3


Estou anexando o projeto com as camadas em questão, para quem quiser provar.


Desde já agradeço,


Leonardo Nazareth.

Teste Trechos a Montante.rar

Hebert Azevedo Consultor Geo

unread,
Apr 6, 2020, 10:01:35 PM4/6/20
to qgisb...@googlegroups.com
Leonardo,

há um pequeno detalhe gerando o erro: As geometrias estão trocadas. Use a expressão abaixo, em um pequeno teste deu certo.

aggregate( layer:='linha',
 aggregate:='concatenate',
 expression:="id_lin",
 concatenator:=',' ,
filter:=intersects(end_point($geometry),geometry(@parent)))

Att

Hebert Guilherme de Azevedo - Consultor em Geotecnologias

Adquira nosso curso sobre customização de formulários no QGIS pelo link https://www.udemy.com/course/customizacao-de-formulario-qgis/?referralCode=C4191B7F6339523504BC
Veja nossos cursos na plataforma Udemy: https://www.udemy.com/user/hebert-azevedo-2/
Inscreva-se e acompanhe nosso blog: http://bit.ly/2CL63UZ
Inscreva-se e acompanhe nosso canal Youtube: http://bit.ly/2J0H2Wa
Curta e acompanhe nossa página no Facebook: http://bit.ly/2yGErMp
Acompanhe nosso twitter: https://twitter.com/consultorgeo


--
Comunidade QGIS Brasil: http://qgisbrasil.org/
---
Você recebeu essa mensagem porque está inscrito no grupo "qgisbrasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para qgisbrasil+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/qgisbrasil/3473c734-c287-4b7c-80b7-6a08b311eb11%40googlegroups.com.


--

Leonardo Porto Nazareth

unread,
Apr 7, 2020, 7:36:13 AM4/7/20
to qgisbrasil
Hebert,

Agora eu entendi o problema: quanto utilizamos a função aggregate, por mais que estejamos utilizando a calculadora de campos na camada dos nós, devemos nos referir à camada na qual estamos capturando as informações (nesse caso a camada das linhas), sendo assim a camada de nós vira a camada "parent".

Muito obrigado pela ajuda, funcionou aqui. 

Alguém tem alguma ideia de como separar os trechos a montante que estão unidos com vírgula em colunas distintas ? Tentei algumas coisas utilizando strpos() mas o problema é que temos mais de uma vírgula em alguns casos.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para qgisb...@googlegroups.com.


--

Narcélio de Sá Pereira Filho

unread,
Apr 7, 2020, 9:11:29 AM4/7/20
to Grupo qGIS Brasil
 Leonardo tu pode transformar a lista trechos a montante que estão unidos com vírgula em um Array.
E selecionar elementos específicos dele me cada uma das colunas colunas Tre_M_1, Tre_M_2 e Tre_M_3.
Ex:   
array_get( string_to_array(   "Tre_Mont_T" ,','),0) --para retornar o primeiro trecho e alimentar a coluna Tre_M_1
array_get( string_to_array(   "Tre_Mont_T" ,','),1) --para retornar o segundo trecho e alimentar a coluna Tre_M_2
array_get( string_to_array(   "Tre_Mont_T" ,','),2) --para retornar o terceiro trecho e alimentar a coluna Tre_M_3

Fiz um teste aqui e o resultado foi esse:
Screenshot from 2020-04-07 10-10-04.png

Atenciosamente, 

Logo
Narcélio de Sá
Mestre em Geografia - UFC
Coordenador da comunidade QGISBR
narcelio...@gmail.com - www.narceliodesa.com
www.about.me/narceliodesa
Facebook icon  LinkedIn icon  Twitter icon  Youtbue icon  Instagram icon
 


Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para qgisbrasil+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/qgisbrasil/8c06e37e-be07-4066-afc8-0b417a6b775c%40googlegroups.com.

Leonardo Porto Nazareth

unread,
Apr 8, 2020, 11:29:15 AM4/8/20
to qgisb...@googlegroups.com
Narcélio,

Não sabia que era possível trabalhar com arrays na calculadora de campos do QGIS, é uma função nova ? Abre muitas possibilidades isso...

Tem algum vídeo no seu canal falando um pouco mais sobre isso ?

Enfim, deu certo aqui.

Muito obrigado pela ajuda de todos.
Reply all
Reply to author
Forward
0 new messages