Como selecionar e exportar Polígonos Sobrepostos no ArcGIS e QGIS (com e sem Python)?

Confira nosso curso online de QGIS

Precisa selecionar e extrair um conjunto de polígonos que estão sobrepostos pela sua área de estudo? Confira nosso tutorial e veja como realizar esse procedimento utilizando tanto o QGIS quanto o ArcGIS.

Quando temos nossa área de estudo, muitas vezes realizamos procedimentos de recorte para que todos elementos fiquem dentro desse limite.

Entretanto, em alguns momentos, é interessante que esse recorte não seja realizado exatamente nos limites da área de estudo. Queremos manter a forma do polígono ou linha que cruza nossa área de estudo.

Como podemos realizar essa cruzamento entre polígonos ou linhas com a nossa área de estudo?

Neste tutorial, iremos utilizar os shapefiles dos títulos minerários do estado de Santa Catarina (disponível no site da Agência Nacional de Mineração) e o shapefile das rodovias federais (disponível no site do Departamento Nacional de Infraestrutura e Transporte) para realizar esse procedimento.

Ambos podem ser baixados nos links abaixo:

  • Títulos Minerais: Para baixar, vá no mapa no fim da página e selecione Santa Catarina, em seguida, clique em SHP;
  • Rodovias Estaduais: Procure pelo shapefile do mapa rodiviário.

As rodovias federais podem ser baixadas no site do DNIT.

E vamos verificar quais títulos e rodovias cruzam a nossa área de estudo fictícia: Uma área circular com ponto central nas coordenadas SIRGAS UTM  700.731 / 7.058.005 e raio de 500 metros.

Leia também: Como gerar buffers no ArcGIS.

Lembre-se que para gerar buffers no QGIS, vá em Vetor (Vector) > Ferramentas de Geoprocessamento (Geoprocessing Tools) > Buffer.

Extraindo Shapefiles Sobrepostos no QGIS

Após baixar os shapefiles e criar a área de estudo fictícia no QGIS 3.2, iremos utilizar a ferramenta Seleção por Localização (Select by Location), a qual esta disponível em Vetor (Vector) > Ferramentas de Pesquisa (Research Tools).

Ao clicar nela, a janela abaixo será aberta.

Janela da Ferramenta Select by Location e Área de Estudo ao Lado.
Janela da Ferramenta Select by Location e Área de Estudo ao Lado.

Note que a nossa área de estudo (preenchida em vermelho) cruza com vários polígonos dos títulos minerários (linhas em preto) e com essa ferramenta, iremos separar esses polígonos (sem cortá-los, deixando-os inteiros).

Na ferramenta Select by Location, o primeiro item a ser inserido é o shapefile contendo os polígonos a serem selecionados (neste caso, os títulos minerários), em seguida, selecionamos qual tipo de operação (interseção) e baseada em quem essa operação irá ocorrer (área de estudo).

O ultimo item indica que o resultado deverá ser uma nova seleção. Veja que o resultado, apresentado abaixo, são todos os polígonos que “tocam” nossa área de estudo.

Polígonos selecionados encontram-se em amarelo.
Polígonos selecionados encontram-se em amarelo.

Cabe lembrar que o processo não termina aqui. Agora precisamos salvar o resultado como shapefile, pois o que temos é apenas uma seleção.

Para salvar a seleção, clique sobre o shapefile com os itens selecionados (i.e. títulos minerários), vá em exportar (export), e clique em salvar feição como (save feature as).

Na nova janela, preencha os dados relacionados à localização do arquivo final, sistema de coordenadas e não se esqueça de marcar o item Salvar Apenas as Feições Selecionadas (Save only selected features), conforme figura abaixo.

Exportando polígonos selecionados como shapefile no QGIS.
Exportando polígonos selecionados como shapefile no QGIS.

Pronto! Você agora tem um novo shapefile com todos os títulos minerários “completos” que cruzam com a nossa área de estudo.

Extraindo Shapefiles Sobrepostos no ArcGIS

Após baixar e abrir os arquivos dos títulos minerários e da área de estudo, no ArcToolbox, vá em Data Management Tools > Layers and Table Views e dê dois cliques em Select Layer by Location.

Na janela que abrir, no campo “Input Feature Layer”, selecione o item que terá os polígonos extraídos (neste caso, os títulos minerários), em “Relationship (optional)”, você escolherá qual o processo a ser adotado (aqui, usaremos a interseção), “Selecting Features (optional)” será nossa área de estudo e por fim, em “Selection type (optional)” indica qual é o tipo de seleção que irá ocorrer (manteremos como nova seleção – New_Selection).

Ferramenta para Selecionar Feições pela localização no ArcGIS.
Ferramenta para Selecionar Feições pela localização no ArcGIS (e polígonos utilizados).

O resultado desta operação será a seleção dos títulos minerários que cruzam com a nossa área de estudo. A figura abaixo mostra os polígonos selecionados.

Polígonos que tocam nossa área de estudo foram selecionados (em azul claro).
Polígonos que tocam nossa área de estudo foram selecionados (em azul claro).

Lembre-se que isto é apenas uma seleção. Precisamos agora exportar o resultado para termos um shapefile novo.

Para realizar esse processo, clique sobre o shapefile com os polígonos selecionados (i.e. Títulos Minerários) e vá em Data > Export Data. Na nova janela, você manterá o primeiro item (“Export:”) como “Selected features” e irá definir o local onde o novo shapefile será salvo.

O menu “Export:” define quem irá ser salvo, neste caso, ao marcar “Selected Features”, iremos exportar somente os arquivos selecionados.

Janela onde marcamos quais itens exportar e onde o shapefile será salvo.
Janela onde marcamos quais itens exportar e onde o shapefile será salvo.

E dessa forma, você terá os títulos minerários que cruzam a sua área de estudo.

Usando PyQGIS para Selecionar e Exportar Shapefiles

Antes de começar a escrever, abra o console Python no QGIS 3.x clicando em Plugins > Python Console. Após abrir o console, clique em “Show Editor” para abrir o editor.

Neste exemplo, vamos  utilizar um shapefile diferente, utilizaremos as rodovias estaduais ao invés dos títulos minerários.

O código abaixo representa todo o procedimento que fizemos antes manualmente e após o código, explicamos os comandos utilizados.


# -*- coding: utf-8 -*-

# Carregando pacotes no Python
import processing
import sys
import osgeo.ogr as ogr
import osgeo.osr as osr

# Carregando nossos arquivos shapefile e criando saída
rod_est = "C:/Users/ferna/Desktop/B2E/Rodovias_SC.shp"
area_estudo = "C:/Users/ferna/Desktop/B2E/area_estudo.shp"
saida = "C:/Users/ferna/Desktop/B2E/rod_areaEst.shp"

# Abringo arquivos no QGIS
iface.addVectorLayer(rod_est, "Rodovia Estadual", "ogr")
iface.addVectorLayer(area_estudo, "Area de Estudo", "ogr")

# Selecionando rodovias que cruzam a área de estudo
# Documentação: processing.algorithmHelp('qgis:selectbylocation')
param_Sel = {'INPUT': rod_est, 'PREDICATE': 0,'INTERSECT': area_estudo, 'METHOD': 0}
processing.run('qgis:selectbylocation', param_Sel)
param_Save = {'INPUT': rod_est, 'OUTPUT': saida}
processing.run('qgis:saveselectedfeatures', param_Save)

# Carregando resultado no QGIS
iface.addVectorLayer(saida, "Rodovia", "ogr")

Na lista abaixo, explicamos as principais funções que utilizamos, de modo que você possa aplicar o código aos seus arquivos.

  • iface.addVectorLayer( [Local do Shapefile] , [Nome] , “ogr”): Adiciona e abre o shapefile ao QGIS;
  • processing.run( [Algoritmo para ser Rodado] , [Dicionário com os Parâmetros]).

Cabe lembrar que o comando processing.run() é diferente no QGIS 2.18, sendo definido como processing.runalg() e recebe argumentos diferentes.

Após rodar o nosso código, você obterá quais rodovias estaduais cruzam a nossa área de estudo.

Usando ArcPy para Selecionar e Exportar Shapefiles

No ArcGIS 10.x, clique em “Geoprocessing” > “Python”, isso irá abrir o terminal Python do ArcGIS.

O ArcGIS tem pequeno editor de python integrado ao software, nossa sugestão é que você trabalhe inicialmente em um editor de texto externo (e.g. NotePad++) e depois cole o código no terminal.

Nesta parte, iremos utilizar as rodovias estaduais que mostramos lá no começo, ao invés dos títulos minerários.

O código para executar a extração das rodovias que cruzam nossa área de estudo é apresentado abaixo.


# -*- coding: utf-8 -*-

# Carregando pacotes no Python
import arcpy

# Nossas variáveis
rod_est = "C:\\Users\\ferna\\Desktop\\B2E\\Rodovias_SC.shp"
area_estudo = "C:\\Users\\ferna\\Desktop\\B2E\\area_estudo.shp"
saida = "C:\\Users\\ferna\\Desktop\\B2E\\rod_areaEstArc.shp"

# Abringo arquivos no QGIS
mxd = arcpy.mapping.MapDocument("CURRENT") # Define qual projeto estamos trabalhando
dataFrame = mxd.activeDataFrame # Define o dataframe que estamos trabalhando
camada_ae = arcpy.mapping.Layer(area_estudo)

arcpy.mapping.AddLayer(dataFrame, camada_ae, "AUTO_ARRANGE") # Adiciona Camada

# Selecionando rodovias que cruzam a área de estudo
arcpy.MakeFeatureLayer_management(rod_est, "Rodovias1")
arcpy.SelectLayerByLocation_management("Rodovias1", "intersect", area_estudo)
arcpy.CopyFeatures_management("Rodovias1", saida)

As funções que utilizamos são explicados na lista abaixo:

  • arcpy.mapping.MapDocument(“CURRENT”): Define como projeto padrão o projeto aberto;
  • mxd.activeDataFrame: Define como data frame a ser utilizado o data frame aberto;
  • arcpy.mapping.Layer(): Transforma o caminho com o shapefile em uma camada;
  • arcpy.mapping.AddLayer( [Data Frame] , [Camada] , “AUTO_ARRANGE”): Adiciona camada à tabela de conteúdo (abre o arquivo);
  • arcpy.MakeFeatureLayer_management( [Shapefile], [Arquivo Temporário]): Torna a camada selecionada como principal;
  • arcpy.SelectLayerByLocation_management( [Arquivo Temporário], [Método], [Shapefile para Cruzamento]): Realiza procedimento para selecionar arquivos que se cruzam;
  • arcpy.CopyFeatures_management([Arquivo Temporário], [Saída]): Salva os itens selecionados no caminho especificado.

E com isso, você terá as rodovias que cruzam nossa área de estudo.

Ficou com alguma dúvida? Utilize a seção de comentários e caso esse tutorial tenha te ajudado, compartilhe ele na sua rede social.



Clique na figura abaixo e assine nossa lista de emails para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".

Apostila Mapa de Localização Banner

Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de geoprocessamento, mineração e hidrologia. Busca soluções utilizando softwares como QGIS, R e Python.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *