Interseção entre polígonos

748 views
Skip to first unread message

Renata Bortolini

unread,
Aug 31, 2017, 8:33:34 AM8/31/17
to qgisbrasil
Bom dia!

Estou tendo uma dificuldade no QGIS que é a seguinte: Quero determinar a interseção de determinadas áreas (irei chamar de polígono 1) delimitadas por raios com uma camada de polígonos (polígono 2). No entanto, algumas áreas do polígono 1 se sobrepõem. Assim, quando eu faço a interseção entre o polígono 1 e o polígono 2, as áreas do polígono 1 que estão inseridas em mais de uma circunferência do polígono 1 só é contabilizada uma vez, em alguma das circunferências do polígono 1. No entanto eu gostaria de obter o resultado individualmente por circunferência. Alguém saberia me dizer alguma forma de resolver este problema?

Agradeço desde já a colaboração!

Jorge Santos

unread,
Aug 31, 2017, 9:40:46 AM8/31/17
to qgisb...@googlegroups.com
Melhor seria enviar umas figuras do que você tem e do que você pretende fazer. faça um print da tela e faça uns rabiscos no Editor de Photos Online: https://pixlr.com/editor/

Em seguida, envie os rabiscos para nós.

Jorge Santos
Analista de Geoprocessamento
----------------------------------------------
Skype: jorgepsantos2002
Twitter: http://twitter.com/jpsantos2002

--
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.
Para postar nesse grupo, envie um e-mail para qgisb...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/qgisbrasil.
Para mais opções, acesse https://groups.google.com/d/optout.

Kyle Felipe

unread,
Aug 31, 2017, 9:47:42 AM8/31/17
to qgisbrasil
Eu estava automatizando algo ontem, para uns colegas aqui no trabalho, bem parecido com isso que vc postou, utilizei SQL gerando uma camada virtual no qgis... acabei de fazer um video aqui para mandar no grupo de qgis que participo, vou postar o link aqui assim que colocar no dropbox

Kyle Felipe

unread,
Aug 31, 2017, 9:49:39 AM8/31/17
to qgisbrasil
Esse aqui é o link do vídeo, daqui uns 5 minutos já deve estar pronto para assistir


Em quinta-feira, 31 de agosto de 2017 09:33:34 UTC-3, Renata Bortolini escreveu:

Kyle Felipe

unread,
Aug 31, 2017, 10:22:19 AM8/31/17
to qgisbrasil
Esse vídeo vai estar liberado no youtube em +- meia hora...
segue o link.

Rodrigo Mota

unread,
Aug 31, 2017, 3:57:21 PM8/31/17
to qgisbrasil
Kyle, poderia dar mais detalhes sobre como você fez? Eu não estou achando a função para fazer essas alterações de Intersecção. No meu caso não precisa nem ser automatizado.

GeraldoSouza

unread,
Sep 1, 2017, 10:39:09 AM9/1/17
to qgisbrasil
Bom dia !

  Fiz um vídeo baseado na contribuição de Narcélio de Sá.

Vai o link https://drive.google.com/open?id=0BwYdZCeY9vN4Wk82SFVsUjc2WHM

E o script no vídeo está em 1:58.
OK.


Em quinta-feira, 31 de agosto de 2017 09:33:34 UTC-3, Renata Bortolini escreveu:

Kyle Felipe

unread,
Sep 1, 2017, 12:09:41 PM9/1/17
to qgisbrasil
Eu fui em Base de dados > Db Manager > Db Manager.
Na tela que abriu, no painel no lado esquerdo, fui em Camada virtual > Qgis Layers e cliquei em uma camada la dentro.
Na parte de cima, o segundo botão vai abrir uma nova aba para inserir o SQL, basta inserir ele e modificar conforme a sua necessidade, e pressionar F5, se não retornar nenhum erro, em baixo da janela tem uma opção "Carregar nova camada"
Clicando nela vai aparecer as opções de carregamento, vc pode dar um nome para a camada a ser gerada, e clicar em "Carregar Agora".
Para salvar as informações, basta clicar na camada gerada e ir em SALVAR COMO, configurar o arquivo de saída e o arquivo estará pronto para ser usado em qqr outro projeto.

o SQL é o seguinte:

select 
a."campo_camada1" as "nome_do_campo_na_nova-Camada", --Aqui vamos pegar um campo alvo da [camada_1] a ser inserido na camada final e dar a ele um novo nome nessa camada
b.nome as municipio,--Aqui vamos pegar um campo alvo da [camada_2] a ser inserido na camada final e dar a ele um novo nome nessa camada
st_intersection(b.geometry,a.geometry) as geom, --Vetor da intercessao entre as camadas
(st_area(st_intersection(b.geometry,a.geometry))/10000) as area, -- area em hec da intercessao
((st_area(st_intersection(b.geometry,a.geometry))*100)/ st_area(b.geometry)) as porcent -- % da area relativa ao municipio


from [camada_1] as a -- Aqui apelidamos a [camada_1] de a para ficar mais facil trabalhar o codigo

left join  [camada_2] as b --Aqui apelidamos a [camada_2] de b para ficar mais facil trabalhar o codigo
on st_intersects(a.geometry,b.geometry)


CONSELHO:

Não use letras maiúsculas no nomes das camadas e dos campos, e não utilize caracteres especiais também, isso pode atrapalhar o procedimento.
caractere especial que não tem problema de ser utilizado é o _.
Vc pode apenas renomear a camada na visualização do qgis caso haja caracteres especiais ou letras maiúsculas.
Caso o nome do campo fuja das regras a cima, basta usar o campo refator para mudar o nome do campo, gerando um aquivo novo.
Use sempre arquivos no mesmo SRC, caso não esteja clique com o botão direito sobre a camada > Salvar como e configure para que arquivo de saida gerada esteja no mesmo SRC do outro arquivo.

LEMBRETE:

Substitua [camada_1] e [camada_2] pelo nome da camada que vc quer usar,
Sim, deve-se retirar os colchetes para não dar erro.
Em  a."campo_camada1" e b."campo_camada2" substitua os termos "campo_camada1" e "campo_camada2" pelos campos das camadas que vc quer que apareçam na camada resultante.
Sim, deve-se retirar as aspas duplas para não dar erro.

Be happy!
Thumbs up!
#ThinkFree!

Kyle Felipe

unread,
Sep 1, 2017, 12:13:54 PM9/1/17
to qgisbrasil
Outra coisa que esqueci.
Verifique a geometria dos dados, com o validador de geometrias, elas devem estar sem erro para pode funcionar perfeitamente. isso vale não só para o SQL, vale para todos os comandos.

Rodrigo Mota

unread,
Sep 1, 2017, 12:24:21 PM9/1/17
to qgisbrasil
Muito obrigado, Kyle!!

No seu caso você já tinha um DB postgis ou spatialite configurado previamente? Pois quando eu abro o DB Manager no QGIS não me aparece a opção "Camada virtual > Qgis Layers".

Kyle Felipe

unread,
Sep 1, 2017, 1:13:31 PM9/1/17
to qgisbrasil
nada.. eu só tinha as camadas em shp mesmo no projeto, 

Qual a versão do seu qgis?
A minha é 2.18.12

Kyle Felipe

unread,
Sep 1, 2017, 1:14:15 PM9/1/17
to qgisbrasil
Manda um print da sua tela...

Rodrigo Mota

unread,
Sep 1, 2017, 1:32:10 PM9/1/17
to qgisbrasil

Kyle Felipe

unread,
Sep 1, 2017, 3:12:29 PM9/1/17
to qgisbrasil
Cara, a versão do seu qgis está muuito antiga, 
Já estamos na versão 2.18....

Rodrigo Mota

unread,
Sep 1, 2017, 3:56:39 PM9/1/17
to qgisbrasil
Orgão público, hehe. Atualizei o QGIS e agora consegui executar o SQL. Muito obrigado novamente!

Kyle Felipe

unread,
Sep 1, 2017, 4:20:11 PM9/1/17
to qgisbrasil
kkk... "Semos" 2 tbm trabalho aqui..
Reply all
Reply to author
Forward
0 new messages