Seja mais rápido produzindo seus mapas usando ArcGIS e Python (Ferramenta Buffer)

Confira nosso curso online de QGIS

Aprenda como utilizar programação em Python para realizar diversos buffers automaticamente, criando diferentes faixas de proteção ao longo de um rio.

Dentro do ArcGIS, alguns procedimentos são bastante repetitivos e a sua realização pode consumir muito tempo.

Executar buffers em pontos, linhas ou polígonos com diferentes distâncias é uma dessas atividades.

Já havíamos falado sobre as áreas de proteção permanente em outra ocasião, e até mesmo sobre como a programação pode ajudar os engenheiros à melhorar suas atividades profissionais.

Hoje, iremos colocar tais conhecimentos em prática.

Vamos utilizar um script escrito em Python para gerar três buffers de tamanhos diferentes. Estes buffers serão realizados no entorno do rio Morozini, localizado no município de Treviso (SC).

O que é Python?

Python é considerada uma das linguagens de programação mais fáceis de serem aprendidas, sendo, inclusive, utilizadas em disciplinas introdutórias de programação nos cursos de engenharia.

origem do nome python
Segundo Guido von Rossum (criador do Python), a origem do nome vem do grupo de comédia Monty Python.

A sintaxe dela é voltada para a leitura, ou seja, a  forma como você escreve o código é realizada de forma que você possa lê-la facilmente (comparando com outras linguagens de programação).

Além disso, o fato de existir pacotes externos cria inúmeras possibilidades, pois outros programadores ou engenheiros podem criar suas ferramentas e compartilhá-las com outros profissionais.

Um busca rápida na internet irá te apresentar diversos cursos gratuitos. Alguns deles são: eXcript.com, pycursos.com e Code Academy.

Python no ArcGIS (ArcPy)

ArcPy é um pacote do Python utilizado para realizar análises espaciais, conversão de dados, gerenciamento de dados e automação de tarefas. No nosso caso, iremos utilizar o ultimo para criar um script (roteiro) para gerar diferentes buffers no entorno de um rio.

O shapefile que utilizaremos nesta postagem pode ser baixado clicando aqui. O arquivo completo (hidrografia de Santa Catarina) pode ser encontrado no SIG-SC.

Agora, mãos a obra.

Procedimento Normal (Sem Python)

Com o seu ArcGIS aberto, insira o shapefile do rio Morosini, lembrando que o sistema de coordenadas dele esta em Sirgas 2000.

A ferramenta Buffer no ArcGIS encontra-se no ArcToolbox, no seguinte caminho: Analysis Tools > Proximity > Buffer. Ao abrir essa ferramenta, você terá que fornecer:

  • Qual é o shape que você deseja criar um buffer;
  • Onde você irá salvar o novo shape;
  • Qual é a distância do buffer a ser gerado;
  • Se o buffer deve ser gerado somente em um lado da linha;
  • Se as pontas dele devem ser redondas ou quadradas;
  • Se, em caso de sobreposição, os buffers devem se unir;

Algumas dessas informações são obrigatórias, outras são opcionais.

Preenchendo tais campos com o nosso shape do rio Morosini, vamos criar um buffer de 30 metros. Acompanhe na imagem abaixo.

Caixa de Ferramenta Buffer do ArcGIS
Caixa de Ferramenta Buffer do ArcGIS

Note que inserimos nosso shapefile como dado de entrada (1), em seguida, indicamos ao ArcGIS onde salvar o shape do buffer (2); e colocamos como 30 metros a distância do buffer (3).

Podemos associar o tamanho do buffer com uma coluna da tabela de atributos, basta marcar Field no item Distance [Value or Field] e escolher a coluna.

Após definir o tamanho do buffer, selecionamos um buffer completo (4); com as pontas arredondadas (5); e sem união no caso de sobreposição (6). Observe que não haverá sobreposição pois nossa linha (rio Morosini) é uma linha simples (linha única).

O resultado é este apresentado abaixo. Caso queira saber como inserir a imagem que utilizamos, leia nossa postagem “Como usar Servidores WMS nos seus mapas?“.

Rio Morosini com buffer de 30 metros
Rio Morosini com buffer de 50 metros

Este foi um buffer de 30 metros, mas se quiséssemos criar outros buffers para o mesmo rio, só que desta vez de 50 e 100 metros?

Sem usar Python, você terá que repetir o procedimento que acabamos de realizar mais duas vezes.

Procedimento Rápido (Usando Python)

O Python no ArcGIS pode ser acessado clicando-se em Geoprocessing e em seguida em Python. Confira na imagem abaixo.

Como acessar o terminal Python dentro do ArcGIS.
Como acessar o terminal Python dentro do ArcGIS.

Porém, trabalhar diretamente no terminal não é uma boa ideia quando temos que digitar scripts de maior tamanho. Por isso, siga nosso tutorial digitando os comandos no bloco de notas. Se preferir, você pode baixar uma IDE e trabalhar nela.

IDEs (Integrated Development Environment) são softwares que programadores utilizam para facilitar suas vidas. Confira o texto do Paulo Vasconcellos sobre “Quais são as melhores IDE para Python?” veja qual é a melhor para você.

O ArcGIS instala por padrão uma IDE de Python no sistema, mas ela não fornece muitas ferramentas, sendo mais fácil, neste momento, usar o bloco de notas.

Vamos iniciar nosso código importando os pacotes necessários para rodar as ferramentas do ArcGIS, e em seguida definir as nossas variáveis, tais como caminhos e distâncias dos buffers.


import arcpy

# Definindo nossas variáveis:

localTrabalho = "C:\\Users\\ferna\\Desktop\\criciuma\\"
hidrografia = "C:\\Users\\ferna\\Desktop\\criciuma\\rio_morosini.shp"
buffDists = [30, 50, 100]

Todo pacote a ser importado no Python deve ser carregado usando o comando import, e qualquer item seguido de # será tratado como comentário (ou seja, não será lido como comando executável).

Criamos três variáveis, a primeira (localTrabalho) indica o local onde iremos salvar nossos arquivos; a segunda (hidrografia) mostra o caminho para o shape contendo o nosso rio e por fim, temos a terceira variável (buffDists) a qual é uma lista contendo as distâncias dos nossos buffers.

Note que nas primeiras variáveis, no caminho dos arquivos, utilizamos duas barras invertidas, isso acontece pois a barra invertida \ é um carácter especial utilizado para criar, por exemplo, quebras de linhas em textos (\n).

Por isso, precisamos colocar duas barras invertidas para informar ao Python que as barras devem ser tratadas como barras.

Agora, iremos criar uma rotina (loop) para executar a caixa de ferramentas Buffer com as distâncias que definimos.


for buff in buffDists:
  print "Buffer de " + str(buff) + "m em andamento..."
  arcpy.Buffer_analysis(hidrografia, localTrabalho + "Buffer" + str(buff), buff )
  print "Buffer de" + str(buff) + "m concluído."

Neste código, os valores de buffDists serão inseridos na variável buff ao longo da rotina.

Na primeira e terceira linha da rotina, por meio da função print, o Python irá retornar na linha de comando uma frase indicando qual buffer esta sendo realizado no momento, ou qual deles foi concluído.

Não se esqueça do recuo, indentações, quandro criar a rotina for. Ele serve para marcar onde começa e termina o loop.

Na segunda linha, utilizando o pacote arcpy e a ferramenta Buffer_analysis, indicamos qual deve ser o shape para gerarmos os buffers (hidrografia); em seguida, inserimos onde vamos salvar nossos arquivos (localTrabalho + “Buffer” + str(buff)) e por fim, indicamos quais são as distâncias a serem consideradas.

Note que concatenamos (unimos, somamos) alguns textos na segunda linha. No Python (e outras linguagens de programação, isso é possível), podemos realizar esse procedimento para salvar os arquivos gerados com diferentes nomes, atribuindo ainda uma variável que irá diferenciar cada um deles. Neste procedimento, utilizamos a função str() para converter os valores numéricos em textos (strings).

Agora que você terminou de digitar todo o texto no bloco de notas, copie e cole ele na janela de Python do ArcGIS.

Após executar o script, o resultado será semelhante a este.
Após executar o script, o resultado será semelhante a este.

No final, você terá três shapefiles com diferentes faixas de distância do rio, possibilitando criar mapas de uso do solo para diferentes faixas. Além disso, você pode criar vários buffers com apenas um comando (basta substituir os valores no código).

Qualquer dúvida ou dificuldade, não deixe de publicá-la nos comentários que estaremos respondendo.


E caso você queira fazer um curso de Geoprocessamento nas férias, estarei ministrando um curso de férias em Janeiro (2017) com a Sinergia Assessoria Empresarial, clique aqui veja mais detalhes sobre o curso presencial de ArcGIS em Turvo (SC).

Curso de Geoprocessamento com ArcGIS.
Curso de Geoprocessamento com ArcGIS.


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.

2 thoughts on “Seja mais rápido produzindo seus mapas usando ArcGIS e Python (Ferramenta Buffer)”

  1. Boa noite, parabéns pela postagem.
    Eu estou com uma dúvida sobre como aplicar essa metodologia para “normalizar” ou reescalonar (entre 0 a 1) valores de distância a hidrografia de diversas bacias. Como estou trabalhando em uma área muito grande, cerca de 20.000 sub bacias, n sei como automatizar esse processo de reescalonamento.

    Obrigada

    1. Boa noite Maria,

      Uma forma de ‘normalizar’ seus dados é dividi-los pela maior distância, dessa forma, as bacias menores receberão um valor proporcional ao tamanho máximo (menor que 1) e a maior bacia terá um valor igual à 1. No seu caso, o buffDist (lista com as distâncias de buffer) irá conter esses valores proporcionais, sendo que provavelmente você terá que criar um loop para avaliar todas as bacias/distâncias e acrescentar na lista.

Deixe um comentário

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