Comprimento de linha dentro de polígonos

52 views
Skip to first unread message

Caio Paiva

unread,
Jan 20, 2020, 10:26:22 AM1/20/20
to qgisbrasil
Olá. 
Estou procurando soluções para calcular o comprimento de linhas dentro de diferentes polígonos.
No caso, tenho uma camada de trechos de rua que interseptam vários setores censitários. Quero saber qual o comprimento do trecho em cada setor. 
Segue exemplo em anexo: 
Nele, um trecho de rua (amarelo) intersepta três setores (contorno preto). Como calcular o comprimento em cada setor?
Obrigado! 
exemplo.jpg

Kyle Felipe

unread,
Jan 20, 2020, 11:06:42 AM1/20/20
to qgisbrasil
Usando a calculadora de campo:

length( --calula e extensão das linhas
aggregate
(    layer:='vias', --camada que contém as linhas substitua pela sua camada
            aggregate
:='collect', --forma de agregar que retorna uma coleção de geometrias
            expression
:=$geometry, --atua na geometria da camada de linha
            filter
:=intersects($geometry, geometry(@parent)) --recorta a geometria das linhas com a geometria do poligono (parent).
))

Caio Couto

unread,
Jan 20, 2020, 1:03:25 PM1/20/20
to qgisb...@googlegroups.com
Kyle, nesse caso o 'collect' soma os tamanhos? Pq usar esse e nao o 'sum' ou ou 'concatenate' ?
valeuu

--
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/748e43c7-bb3b-459a-825f-cbfc280bbe89%40googlegroups.com.


--
Caio Costa Couto
Urbanista - Universidade do Estado da Bahia
Consultor UNESCO - Projeto 914BRZ4021

Kyle Felipe

unread,
Jan 20, 2020, 2:11:10 PM1/20/20
to qgisbrasil
Desculpa, eu errei a expressão, segue a correta...

length( --calula e extensão das linhas
aggregate
(    layer:='vias', --camada que contém as linhas substitua pela sua camada
            aggregate
:='collect', --forma de agregar que retorna uma coleçã
o de geometrias
            expression
:=intersection($geometry, geometry(@parent)), --vai retornar a geometria de linhas que está dentro do poligono
            filter
:=intersects($geometry, geometry(@parent)) --recorta a geometria das linhas com a geometria do poligono (parent).
))

P) nesse caso o 'collect' soma os tamanhos?
R) Não, quem soma é o length() no inicio da expressão, calcula o tamanho da geometria gerada no parâmetro expression
O collect ele gera uma coleção de geometrias, e nesse caso ele retorna uma multilinha, para o length() pode fazer o calculo.

P) Pq usar esse e nao o 'sum' ou ou 'concatenate' ?
O parâmetro concatenate trabalha apenas com strings (textos) e fazer a união dos valores com um concatenador ( o padrão é a vírgula)
Para utilizar o sum teríamos que fazer uma expressão maior e ficaria mais dificil de entender, tem de mexer no parametro expression para retornar o tamanho da linha dentro do poligono

dá uma olhada no "help" da expressão aggregate()


Em segunda-feira, 20 de janeiro de 2020 15:03:25 UTC-3, Caio Couto escreveu:
Kyle, nesse caso o 'collect' soma os tamanhos? Pq usar esse e nao o 'sum' ou ou 'concatenate' ?
valeuu

Em seg., 20 de jan. de 2020 às 13:06, Kyle Felipe <kylef...@gmail.com> escreveu:
Usando a calculadora de campo:

length( --calula e extensão das linhas
aggregate
(    layer:='vias', --camada que contém as linhas substitua pela sua camada
            aggregate
:='collect', --forma de agregar que retorna uma coleção de geometrias
            expression
:=$geometry, --atua na geometria da camada de linha
            filter
:=intersects($geometry, geometry(@parent)) --recorta a geometria das linhas com a geometria do poligono (parent).
))


Em segunda-feira, 20 de janeiro de 2020 12:26:22 UTC-3, Caio Paiva escreveu:
Olá. 
Estou procurando soluções para calcular o comprimento de linhas dentro de diferentes polígonos.
No caso, tenho uma camada de trechos de rua que interseptam vários setores censitários. Quero saber qual o comprimento do trecho em cada setor. 
Segue exemplo em anexo: 
Nele, um trecho de rua (amarelo) intersepta três setores (contorno preto). Como calcular o comprimento em cada setor?
Obrigado! 

--
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+unsubscribe@googlegroups.com.

Amanda Antunes

unread,
Jan 20, 2020, 11:06:06 PM1/20/20
to qgisbrasil
Estou com o mesmo problema, mas consigo fazer a soma no PostGIS. Como eu poderia apenas recortar a geometria de linhas dentro de cada polígono?
Usei o comando abaixo, coforme você colocou Kyle, mas sem sussesso.

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

Kyle Felipe Vieira Roberto

unread,
Jan 20, 2020, 11:43:50 PM1/20/20
to qgisb...@googlegroups.com
Essa exclusão não funciona no postgis, só funciona dentro do qgis.
Vc pode fazer um sql para conseguir isso, que vai ser mais rápido.

--
Comunidade QGIS Brasil: http://qgisbrasil.org/
---
Você recebeu essa mensagem porque está inscrito em um tema no grupo "qgisbrasil" dos Grupos do Google.
Para cancelar inscrição nesse tema, acesse https://groups.google.com/d/topic/qgisbrasil/RT6BVYBEgyg/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus temas, envie um e-mail para qgisbrasil+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/qgisbrasil/219ef871-66b4-4cdb-a278-d1036657c9d1%40googlegroups.com.

Kyle Felipe Vieira Roberto

unread,
Jan 20, 2020, 11:44:46 PM1/20/20
to qgisb...@googlegroups.com
Outra coisa, tem de usar a expressão completa no qgis

Em ter, 21 de jan de 2020 01:06, Amanda Antunes <amanda.a...@gmail.com> escreveu:
--
Reply all
Reply to author
Forward
0 new messages