Cálculo de área entre curvas de nível – voltando ao assunto

Buenas, pessoal!

A algum tempo atrás publicamos um tutorial sobre Cálculo de área entre curvas de nível, onde procuramos resolver uma dúvida que surgiu na lista de usuários do gvSIG através da aplicação de vários geoprocessos, e onde pudemos aprender várias técnicas do gvSIG. No entanto, no referido artigo trabalhamos com uma simplificação dos dados, e quando fomos trabalhar com dados “reais”, num segundo momento, percebemos que estavam ocorrendo alguns problemas com o procedimento, e não estava sendo gerado o resultado esperado.

Uma das vantagens de trabalhar em comunidade é que o conhecimento é compartilhado, bem como as tentativas de resolver os problemas que aparecem. E foi com a ajuda do Gustavo Agüero Córdoba, que mantém o excelente blog GvSig Consultores AA, que conseguimos não apenas resolver o problema que apareceu, mas também ampliar os conhecimentos não só sobre o gvSIG, mas também sobre os geoprocessos, o Sextante e outras ferramentas que estão disponíveis para a nossa utilização. O objetivo desse artigo é compartilhar esse conhecimento que foi gerado. Vamos aos fatos:

Revisando a questão geradora apresentada, nosso objetivo será calcular a área existente entre uma série de curvas de nível, que foram digitalizadas na forma de um arquivo shape de linhas. Para isso, teremos que transformar essas linhas em polígonos, para que seja possível medir a área.

Para trabalharmos com dados reais, estarei utilizando os arquivos shapes das curvas de nível do estado do Rio Grande do Sul, obtidos do DVD Base Vetorial Contínua do Rio Grande do Sul – Escala 1:50.000, material editado pelo Laboratório de Geoprocessamento do Centro de Ecologia da URGS. Por razões de direitos autorais, e também de tamanho do arquivo, não estarei disponibilizando o arquivo total, e sim apenas um arquivo com os shapes da área de interesse e as respectivas curvas de nível que estão contidas na área de interesse que iremos trabalhar.

Nessa primeira parte do tutorial iremos trabalhar no gvSIG passo-a-passo, executando cada um dos algoritmos necessários para alcançar o nosso objetivo. Em um próximo tutorial mostraremos como automatizar o processo através da execução de um modelo do sextante, que iremos  criar.

Buenas… chega de conversa e vamos botar a mão na massa! Em primeiro lugar, vamos criar um projeto, e nele inserir uma nova vista, com projeção WGS84/UTM zone 22S (EPSG 32722), que é o sistema de referência utilizado pelo shape que iremos trabalhar. Nesta vista, inseri o shape das curvas de nivel do RS, e também o shape da área de interesse que queremos trabalhar, conforme pode ser visualizado abaixo:

curvas01

Neste tutorial iremos utilizar apenas os geoprocessos disponibilizados pelo Sextante, muito embora alguns dos algoritmos também estejam disponíveis nas ferramentas de geoprocessamento do gvSIG.

O primeiro processo que iremos aplicar é o Cortar (ou Clip), para podermos selecionar apenas as curvas de nível que estão dentro da nossa área de interesse.

curvas02

 Para tanto, abrimos o Sextante e procuramos pelo geoprocesso Cortar (Clip). Na janela que abre, selecionamos a camada das curvas de nível como Camada a recortar, e a camada da área de interesse como Camada de recorte. Em seguida, selecionamos o local e o nome do arquivo que iremos gerar, no campo Camada recortada [vetorial], e clicamos em OK. O geoprocesso Cortar será aplicado, e teremos uma nova camada no nosso TOC, com o resultado: uma camada shape (vetorial) de linhas que representam as curvas de nível existentes na nossa área de interesse. A partir de agora podemos descartar a camada de curvas de nível total, e aproveitar para renomear a camada de resultado para algo mais significativo, de forma a não nos perdermos no processo. Lembramos que o arquivo que está disponibilizado para download contém exatamente esses dois shapes, portanto, você poderá executar o processo com esse material.

curvas03

 Muito bem. Teoricamente poderíamos aplicar o geoprocesso Poligonar linhas (Polygonize) diretamente sobre essa nova camada gerada, que teríamos o resultado que buscamos. Vejamos o que acontece. Primeiramente, os dados de entrada:

curvas04

E o resultado obtido:

curvas05

Como podemos ver, não obtivemos o que esperávamos! Mas, por quê? A resposta é simples, e está contida na descrição da rotina que utilizamos: “Este algoritmo converte  linhas em polígonos, considerando apenas as bordas (limites ou fronteiras), as quais descrevem áreas fechadas, e sem retornar polígonos sobrepostos”. Ou seja: o algoritmo aplicado fez apenas o que ele foi programado para fazer… converteu apenas as linhas cujas áreas estavam fechadas. As demais não puderam ser transformadas em polígonos por não estarem fechadas.

Para contornarmos esse problema precisamos forçar o fechamento dessas curvas. Como fazer isso? Utilizando o polígono definido pela área de interesse, que contorna a nossa área, e unindo ele com as curvas de nível. Esse processo deve ser feito em dois passos, pois a área de interesse é um polígono, e precisaremos antes transformá-la em uma polilinha, para depois podermos finalmente uni-la com as curvas de nível. Para converter um polígono em polilinhas utilizaremos o geoprocesso… Converter polígono em polilinha (Polygons to polylines):

curvas06

 Na seção Entradas, Camada vetorial, definimos como camada de Polígono a ser convertida a camada que contém a área de interesse, e definimos em Resultados, Linhas [vetorial], o caminho e o nome para o arquivo shape que será gerado pelo algoritmo. Ao clicarmos em OK o geoprocesso será aplicado e obteremos como resultado uma nova camada, que contém a nossa área de interesse, agora como uma flamante polilinha:

curvas07

Agora podemos passar para o próximo passo: juntar as duas camadas de polilinhas, de modo a forçar o fechamento das curvas de nível, utilizando o geoprocesso Juntar (Merge):

curvas08

 Na janela do algoritmo Juntar (Merge), na seção Entrada, Camada vetorial, definimos como Camada principal a camada que contém as curvas de nível, e como Camadas adicionais selecionamos a camada que geramos no passo anterior, contendo a nossa área de interesse transformada em polilinha. Ao clicarmos em OK o geoprocesso será aplicado e obteremos como resultado uma nova camada contendo a junção das duas camadas que especificamos:

curvas09

Mais uma vez, teoricamente, agora já poderíamos aplicar o geoprocesso Poligonar linhas (Polygonize) e teríamos o nosso resultado esperado. Se os dados com os quais estivermos trabalhando estiverem corrigidos topologicamente, poderíamos estar acabando o nosso trabalho. No entanto, não é esse o caso, como pode ser visto na figura abaixo, que mostra o resultado da aplicação do algoritmo Poligonar linhas (Polygonize) na camada que obtemos no passo anterior:

curvas09a

Isso acontece porque os nossos dados não foram tratados topologicamente, conforme pode ser conferido na próxima figura, onde demos um zoom na área de curvas de nível e selecionamos algumas delas:

curvas10

Como podemos observar, algumas linhas estão “rompidas”. São linhas que, embora pertençam a mesma curva de nível, estão separadas, mas não conseguíamos visualizar isso pela simples observação. Possivelmente esse erro foi gerado no processo de digitalização das curvas de nível. Para alcançarmos o nosso objetivo precisamos aplicar um algoritmo que consiga unir estas linhas, deixando assim o nosso arquivo topologicamente correto.

O algoritmo a ser usado neste caso será o Juntar linhas adjacentes (Join adjacent lines):

curvas11

 Na seção Entrada, Camada vetorial, definimos como Camada de entrada a camada que obtivemos no último passo realizado, isto é, a camada de polilinhas resultante da junção das curvas de nível com a área de interesse. Em Opções, definimos o valor de 1.0 para Tolerância. Por último, definimos em Resultados, Resultados[vetorial], o caminho e o nome que será usado para o shape resultante do processo. Clicamos em OK, e teremos o geoprocesso aplicado e obteremos no TOC uma nova camada, agora com as polilinhas das curvas de nível devidamente corrigidas.

curvas12

Finalmente poderemos aplicar o geoprocesso Poligonar linhas (Polygonize) sobre a camada resultante:

curvas13

E obteremos a nossa camada de polígonos, contendo a área entre as curvas de nível:

curvas14

Se selecionarmos alguns dos polígonos poderemos comprovar que agora obtemos os mesmos corretamente:

curvas15

No entanto, não obstantemente… ainda teremos um passo a realizar antes de calcularmos a área entre cada curva de nível:

Como havíamos comentado anteriormente, algumas curvas de nível tinham erros de restituição, o que gerava problemas de topologia. Ao corrigirmos esses erros com a junção de linhas próximas, conseguimos solucionar os problemas de topologia, mas algumas vezes a aplicação desse processo pode gerar alguns polígonos extras que, mesmo pequenos, alteram a área resultante. Como esse arquivo em que estamos trabalhando parece ter sido afetado por todas as instâncias possíveis da Lei de Murphy, também tivemos presente este problema, como podemos observar neste zoom da aplicação da área de interesse sobre a nossa camada de polígonos final (área em amarelo):

curvas16

Para corrigir este problema basta aplicar novamente o geoprocesso Cortar (Clip), agora usando como Camada a recortar a camada de polígonos que acabamos de gerar, e como Camada de recorte, a camada que contém o polígono da área de interesse. Com isso, conseguimos delimitar os polígonos apenas dentro da área de interesse, conforme podemos visualizar abaixo:

curvas16a

Agora poderemos, finalmente, obter o dado que buscávamos no início do nosso tutorial: calcular qual a área dos intervalos entre as curvas. Para tanto, basta acessarmos o menu Camada > Adicionar informação geométrica e, na janela que se abre, selecionar em Camada a camada relativa aos polígonos das curvas de nível corrigidas e, em seguida, selecionar Área na coluna da esquerda e clicar na seta para a direita, de forma a passá-la para a coluna da direita.

curvas17a

Clicando em Aceitar, a informação referente a área de cada um dos polígonos será acrescentada na tabela de atributos do shape:

curvas17b

Sempre é interessante, em qualquer trabalho que façamos, comprovar a confiança dos resultados obtidos. Neste caso, essa comprovação está diretamente relacionada com a área total da nossa área de interesse. Sendo assim, é importante verificarmos se a soma das áreas das curvas de nível individuais é igual a área da nossa área de interesse (podem ocorrer pequenas variações para mais ou para menos, em virtude das abstrações que foram aplicadas, mas essas diferenças não podem ser significativas).

Para obtermos essa comprovação devemos utilizar uma das ferramentas que nos possibilitam obter a soma de um campo de uma tabela, como por exemplo, as estatísticas de tabela. Conforme podemos visualizar abaixo, no nosso caso está tudo “nos conformes” (a diferença está na :

curvas18

Antes de encerrarmos essa parte do tutorial, cabe uma pequena mas importante observação: muito embora todos esses procedimentos tenham sido executado no gvSIG 1.12, eles podem ser completamente reproduzidos utilizando o gvSIG 2.0, pois todos os recursos aqui utilizados estão disponíveis e funcionais na nova versão do gvSIG.

E por hoje é só, pessoal! No próximo artigo veremos como utilizar o modelador do sextante para fazermos o mesmo processo de forma automatizada. Voltamos em breve!

Acrescentando novas rampas de cores ao gvSIG

Buenas, pessoal! Procurando manter ao menos uma postagem semanal sobre o gvSIG 😉

Uma das grandes reclamações dos usuários do gvSIG é quanto as rampas de cores (ou gradientes de cores, como soa melhor em português): embora funcionais, os gradientes disponibilizados por padrão no gvSIG não são um primor de beleza. Mesmo com o lançamento do gvSIG 2.0 essa situação não mudou.

A um tempo atrás o usuário Kevin Weels havia liberado um novo arquivo na lista de usuários do gvSIG, com novas rampas de cores, que complementavam as nativas do gvSIG, e o nosso amigo Jorge Santos, do blog Processamento Digital criou um tutorial ensinando a instalar essas novas rampas de cor. Infelizmente o arquivo anexo a lista não está mais disponível, e ficamos novamente “a ver navios”…

Depois de algum trabalho de garimpagem, o Jorge conseguiu localizar um backup do referido artigo, e me repassou. Aproveitando a boa vontade do nosso amigo, estudei um pouco o formato utilizado para criar os gradientes, e acrescentei aos esquemas por ele disponibilizados todos os gradientes de cores que estão no site Colorbrewer: Color  Advice for Maps, que é uma das principais referências quanto a esquemas de cores para mapas.

Pois bem. Chega de conversa e vamos aos fatos: para testar os novos gradientes, primeiramente baixe o arquivo palettes.zip e extraia o arquivo “palettes.xml” que está no mesmo. Em seguida, com o gvSIG fechado, acesse a pasta de configuração do gvSIG, cuja localização varia conforme o sistema operacional que você usa:

Windows XPC:\Documents and Settings\”username”\gvSIG
Windows SevenC:\Users\”username”\gvSIG
Linux:   /home/”username”/gvSIG

Substitua o arquivo “palettes.xml” existente nesta pasta pelo arquivo novo que foi baixado no passo anterior.

Por último, delete as pastas “colortable” e “ColorSchemes” que estão na mesma pasta (em algumas instalações a pasta “ColorSchemes” não está presente).

palettes01

Feito isso, já podemos abrir o gvSIG e desfrutar os novos gradientes de cores que estão disponíveis a partir de agora.

palettes02

É interessante ressaltar algumas observações que o Kevin fez, e que continuam pertinentes:

As rampas de cores são projetadas para trabalhar com dados raster e vetores, embora algumas sejam melhores para dados raster e algumas são melhores para dados vetoriais. O número de classes em cada rampa está entre parênteses como parte do nome da rampa.
No Windows, as rampas de cores são ordenadas alfabeticamente e sua visualização é agradável, durante a escolha de uma rampa. No Linux é diferente, pois não consigo ordenar as rampas de cores no Linux. Elas parecem aleatórias e sua visualização não é tão agradável quando as rampas são ordenadas como um grupo.
No entanto, eles estão completamente funcionais no Linux.
Para restaurar a cor padrão das rampas de cores, apague o arquivo “palettes.xml” e as pastas “ColorSchemes” e “Colortable”. Em seguida, reinicie gvSIG. O arquivo original “palettes.xml”e as pastas serão recriadas.

Espero que vocês gostem.

Calculando a área entre curvas de nível

Buenas, pessoal!

O artigo de hoje foi inspirado em uma dúvida que surgiu na Lista de Usuários do gvSIG: como calcular a área entre curvas de nível. Explicando de forma simples, temos um shape com diversas curvas de nível (que são concêntricas, obviamente), e queremos calcular a área da superfície existente entre duas cotas das curvas de nível.

area_curvas_nivel_01

Para resolver essa questão, vamos lançar mão da ferramenta Sextante. No gvSIG 1.12 (e nas versões anteriores) o procedimento é o seguinte: Com o shape das curvas de nível selecionado no TOC, acesse o Sextante (Menu SEXTANTE > Caixa de Ferramentas). Navegue na árvore de processos até encontrar a ferramenta Polygonize (SEXTANTE > Tools for line layers > Polygonize)

area_curvas_nivel_02

Com dois cliques sobre o nome do processo abrirá uma nova janela, onde poderemos preencher os parâmetros para a aplicação do mesmo. Em princípio, podemos aceitar as opções que vem preenchidas por padrão: Na aba “Parameters”, seção “Inputs”, selecionamos a nossa camada de curvas de nível como geradora das Polylines; na seção “Outputs”, estamos solicitando que o arquivo resultante seja gerado em um arquivo temporário (ou poderíamos selecionar o caminho e o nome do arquivo a ser gerado, se quisermos salvar o mesmo); Na aba “Output Region” podemos deixar na opção padrão, “Fit to input layers”.

area_curvas_nivel_03

Ao clicarmos em “OK”, o processo é aplicado e obtemos uma nova camada, com os polígonos referentes a superfície entre as curvas de nível.

area_curvas_nivel_04

Para calcularmos a área, com a nova camada selecionada no TOC, clicamos em Menu > Camadas > Adicionar informação geométrica.

area_curvas_nivel_05

Abrirá uma nova janela, onde poderemos selecionar a informação geométrica que queremos adicionar à tabela de atributos do shape, neste caso, apenas a Área:

area_curvas_nivel_06

Clicando em “Aceitar“, o processo será aplicado, aparecendo então uma janela comunicando este fato.

area_curvas_nivel_07

Clicando novamente em “Aceitar” voltamos a nossa Vista. Podemos então conferir na tabela de atributos do shape que a informação da área foi adicionada na tabela (Menu Camada > Ver tabela de atributos).

area_curvas_nivel_08

Observe que o valor da Área estará na unidade de área selecionada nas preferências da Vista. Então, devemos ter selecionado esta unidade no formato desejado, antes de executarmos esse processo.

Para os que já estão utilizando o gvSIG 2.0 o procedimento será um pouco diferente, devido ao diferente agrupamento de ferramentas adotado. Vejamos como proceder:

Em primeiro lugar, a ferramenta Sextante mudou de endereço: encontraremos ela agora no menu Tools > Geoprocessing > Toolbox (utilizarei a tradução em inglês, já que a tradução para o pt-br ainda não está completa):

area_curvas_nivel_09

Aberta a Caixa de ferramentas de geoprocessamento, observe que todos os geoprocessos foram agrupados nesta janela. Esta é uma das novidades do gvSIG 2.0. Devemos navegar novamente na árvore de geoprocessos, até encontrar a ferramenta desejada (ou utilizar a ferramenta de busca, na parte de baixo da janela). O detalhe é que se tentarmos utilizar o processo Polygonize ocorre um erro, conforme pode ser visto abaixo:

area_curvas_nivel_10

Felizmente temos outro processo que faz o mesmo trabalho: “Polylines to polygons“. Navegue na árvore de processos até encontrar o mesmo (Sextante > Tools for line layers > Polylines to polygons):

area_curvas_nivel_11

Selecionado o processo, os passos são os mesmos anteriormente seguidos: preencher os parâmetros

area_curvas_nivel_12

e clicar em “OK” para aplicar o processo. Obteremos o mesmo resultado:

area_curvas_nivel_13

Agora, mais uma mudança: para calcularmos a área, devemos selecionar a nova camada criada e clicar no menu Table > Add measure > Area:

area_curvas_nivel_14

Abrirá uma janela de alerta, avisando que será criado um novo campo na tabela e solicitando a nossa anuência. Basta clicar em “Yes“.

area_curvas_nivel_15

Aplicado o processo, podemos conferir o resultado na tabela de atributos do shape:

area_curvas_nivel_16

É isso aí, pessoal! Por hoje é só… 😉

 

Errata no Exemplo Prático do Uso da Calculadora de Campos no gvSIG

Buenas, pessoal! Retornamos mais cedo do que eu pensava, para corrigir um pequeno erro no artigo do Exemplo Prático do Uso da Calculadora de Campos no gvSIG. Afinal, parafraseando um versículo da Bíblia:

Errais por não ler o manual, e por não saber tudo o que o gvSIG pode fazer…

Muito embora o manual do usuário do gvSIG não seja exatamente claro quanto ao que vamos tratar, é sempre bom dar uma consultada na seção que fala sobre as Tabelas, pois sempre podemos aprender muita coisa consultando o manual!  😉

Na verdade não chega a ser um erro, mas sim a correção sobre o fato de termos que usar uma “gambiarra” (o famoso “jeitinho brasileiro”) para editarmos uma tabela não vinculada a um shape no gvSIG. Se vocês lembrarem, para fazer isso no artigo citado, eu lancei mão do truque de inserir a tabela na Vista através da rotina de “Adicionar camada de eventos“.

Pois bem, nada disso é necessário… Na verdade, o procedimento correto para editarmos uma tabela não vinculada a um shape seria:

  • Abrir o Gestor de Projetos.
  • Na seção “Tabela”, inserir a nova tabela.
  • Ao inserirmos a nova tabela, automaticamente o gvSIG abrirá a mesma, para visualizarmos os seus atributos.
  • Neste momento, basta clicar no menu “Tabela > Iniciar edição”, para termos acesso, a partir daí, a todas as ferramentas de edição de tabelas que utilizamos no artigo anterior, inclusive a Calculadora de Campos.

errata_01

Isso significa que podemos aplicar todos aqueles procedimentos de manipulação e transformação dos dados da tabela diretamente na sessão “Tabela” do Gestor de Projetos, não sendo necessário criar uma Vista só para fazer esse trabalho.

Inclusive, para converter uma tabela no formato “CSV” para o formato “DBF”, basta abrirmos a tabela em “CSV” e, com a janela de atributos da tabela aberta, clicarmos no menu “Tabela > Exportar para > DBF”.

Obs.: Uma dica sobre tabelas no formato CSV que recebi do Prof. Marco Aurélio Painelli Marsitch, do Centro Universitário Fundação Santo André: 

Infelizmente o gvSIG não importa campos numéricos via CSV: ele só reconhece as variáveis numéricas quando são advindas do formato DBF.

O CSV nos impede de fazermos mapas temáticos, calcularmos novos campos e montarmos expressões nas janelas de filtros.

Portanto, antes de trabalhar com dados numéricos em tabelas no formato CSV, precisamos necessariamente convertê-los para DBF, através do menu “Tabela > Exportar para > DBF“.

Por hoje é isso, pessoal! Espero que me desculpem por ter induzido vocês a usarem o “jeitinho brasileiro”, mas, afinal, “é errando que se aprende”… E, para quem ficou curioso para saber qual o versículo da Bíblia que eu parafraseei, aí vai:

Jesus, porém, respondendo, disse-lhes: Errais, não conhecendo as Escrituras, nem o poder de Deus. Mateus 22:29

Exemplo prático do uso da Calculadora de Campos no gvSIG

Buenas, pessoal!

A dica de hoje nasceu de uma necessidade específica: estava a procura da relação do valor do Módulo Fiscal por município do RS, e o local onde eu encontrei essa relação foi em um site (Módulos Fiscais no RS), mas a mesma estava no formato texto, e não em uma tabela, como eu precisaria.

Em um primeiro momento pensei em utilizar a excelente dica do @geojcarlos, do blog Carta Geográfica[DICAS EXCEL] Como separar números e textos em duas colunas. No entanto, esta dica só funciona se o campo a ser separados estiver no início da string e se o mesmo tiver um comprimento fixo (o mesmo para todas as linhas da tabela). Não era o meu caso, pois na minha relação o campo que eu queria separar (o valor do módulo fiscal) estava no final da string e não tinha tamanho fixo (variava entre 1 a 3 caracteres), e ainda havia o agravante de que a primeira parte da string (o nome do município) também variava muito, podendo ser composto de um a quatro ou mais nomes, todos separados por espaços, o que complicava também o uso do espaço como separador de campos.

Buenas, foi aí que veio a ideia de utilizar a Calculadora de Campos como ferramenta para fazer o trabalho, pois, como explicamos no último artigo da série “Calculadora de Campos no gvSIG – Operações com Textos”, ela nos permite a execução de scripts em Python/Jython. Pois bem, mesmo não sendo um programador Python, procurei a ajuda dos “universitários” (neste caso, quem me ajudou foi o @Vegetando, amigo de outras paradas). Com um pouco de lógica e pesquisa nas funções de manipulação de strings do Python, chegamos ao seguinte script:

# Esta rotina serve para separar de uma string tudo que está antes do carctere separador '?'; neste caso, o nome do Município
def extrair_nome(campo):
	return campo[0:campo.rfind('?')]
# Esta rotina serve para remover a última parte de uma string, que está depois do caractere separador '?'; neste caso, o valor do Módulo Fiscal
def extrair_numero(campo):
	return campo[campo.rfind('?')+1:len(campo)]

Copie o texto do script e cole no processador de textos de sua preferência, salvando posteriormente como “modulofiscal.py”. Irei comentando o funcionamento do script conforme for explicando o procedimento que adotei.

Atenção: por algum motivo o WordPress “engole” a formatação do texto, e o Python é muito chato quanto a indentação das linhas. Na segunda linha de cada função (a que começa com “return”, você deverá dar um <TAB> no início da linha, ou o Python não irá interpretar corretamente o script e acusará erro. Desculpem pelo inconveniente, e obrigado ao Alejandro por ter me alertado do erro.

Obs.: espero ter corrigido o problema com a instalação de um plugin para usar a sintaxe de códigos de programas no WordPress (o WP-Syntax). Mesmo assim, tomem cuidado com a formatação!

Em primeiro lugar, para transformar a listagem em formato texto para uma tabela no formato do tipo .dbf, que é o formato que o gvSIG trabalha, precisaremos lançar mão do OpenOffice Calc ou do seu equivalente, o LibreOffice Calc. Como tenho o último instalado nos meus micros com Ubuntu Linux, foi o que eu utilizei, mas é indiferente.

Para seguir o passo a passo, acesse primeiramente a página Módulos Fiscais no RS, selecione toda a relação de municípios e copie a mesma. Com o LibreOffice Calc aberto, clique na segunda linha da planilha e use o comando para colar. A listagem será colada na planilha, cada município ocupando uma linha da planilha, que é o que precisamos. Usaremos a primeira linha para escreveremos o nome da coluna (usei “MUNMOD”), que será usada no nosso arquivo .dbf.

modulo_fiscal_01

Neste momento, se você está usando Windows, basta apenas “Salvar como…”, selecionar “dbf” como tipo de arquivo, e tomar o cuidado de selecionar a opção “Western Europe (Windows-1252/WinLatin1)” na janela de definição da codificação de caracteres, para que não haja problemas de exibição de caracteres estranhos depois, quando abrirmos a tabela no gvSIG.

modulo_fiscal_02

Se você conseguiu salvar o arquivo como .dbf, não precisará fazer o próximo passo, podendo pular para o seguinte.

O problema que eu encontrei, usando o LibreOffice no Ubuntu Linux, foi que eu não consegui salvar como .dbf, pois ocorria um erro geral, sem muitas especificações:

modulo_fiscal_03

Como não tive tempo de procurar a correção do erro, parti para encontrar outro caminho para fazer o que eu queria: salvei o arquivo no formato .csv, que também é importado como tabela no gvSIG. O procedimento é semelhante: de posse da planilha, vá em “Salvar como…” e escolha o formato .csv. A única diferença aqui é que, no momento da seleção da codificação do arquivo, haverá mais algumas opções, relativas ao caractere separador entre os campos. Podemos deixar as opções como vem por padrão no LibreOffice, somente tomando o cuidado de selecionar “Western Europe (Windows-1252/WinLatin1)” como padrão de codificação para o arquivo. Salvo o arquivo, seja como .dbf ou .csv, podemos fechar o LibreOffice e abrir o gvSIG.

Aberto o gvSIG, no Gestor de Projetos, vamos selecionar os documentos do tipo “Tabela“:

modulo_fiscal_05

 

Ao clicarmos no botão “Novo“, abrirá uma janela onde poderemos clicar no botão “Adicionar” para selecionar o arquivo .csv que acabamos de salvar. Selecionado o arquivo, ele aparecerá no campo de texto “Tabelas“, e podemos clicar em “Aceitar” para que a tabela seja importada no gvSIG. Se tudo deu certo, o nome do arquivo que acabamos de importar (Mun_Mod_RS.csv, no meu caso) aparecerá no Gestor de Projetos. Clicando no menu “Camada > Ver tabela de atributos” ou no ícone correspondente na barra de ferramentas, poderemos conferir que a tabela foi importada, e que nossos dados estão lá:

modulo_fiscal_06

Observe que, mesmo tendo escolhido a codificação “Cp1252“, aparece um caractere estranho no meio da string. Não consegui determinar o porque de ter ocorrido esse problema com o caractere separador, mas creio que é algum problema de codificação na página da internet onde baixamos os dados (possivelmente foi usado um “Tab“). De qualquer forma, essa será uma informação importante, como veremos mais adiante.

Importada a tabela, precisaremos transformá-la em um arquivo shape, para podermos lidar com a mesma no gvSIG. Normalmente o gvSIG não permite esse tipo de transformação, mas vamos usar um pequeno truque para enganá-lo. Volte ao Gestor de Projetos, e crie um novo documento do tipo “Vista“. Abra a Vista que acabamos de criar e, acesse o menu “Vista > Adicionar camada de eventos” ou clique no ícone correspondente na barra de ferramentas:

modulo_fiscal_07

Abrirá o diálogo de “Adicionar camada de eventos“, bastando clicarmos em “Aceitar“, sem alterarmos nenhuma das opções:

modulo_fiscal_08

Será criada uma nova camada de eventos, contendo apenas um ponto, onde estarão vinculados todos os campos da nossa tabela. Essa informação não teria muito valor, exceto pelo fato de que agora poderemos trabalhar com a tabela na vista do gvSIG.

Mas, antes, precisamos transformar o arquivo .csv em um arquivo .dbf. Para tanto, com a janela de atributos da tabela aberta, acesse o menu “Tabela > Exportar > DBF“:

modulo_fiscal_10

 

E já temos nossa tabela no formato .dbf. Para quem conseguiu exportar no LibreOffice/OpenOffice, pode retomar o tutorial a partir daqui. Para não criar alguma confusão, remova a vista que havíamos criado, bem como a tabela .csv que havíamos importado anteriormente. Assim, teremos a mesma área de trabalho para ambos os casos.

No Gestor de Projetos, em “Tabelas“, crie uma nova tabela, e adicione a tabela “mun_mod_rs.dbf” que acabamos de criar. Note que agora, na tabela aberta, o caractere separador passou a ser “?“. Pode acontecer de aparecer outro caractere, mas o importante é identificar qual caractere é o separador, pois é o que será usado pela rotina para fazer a separação dos campos. Posicione o cursor dentro de uma das linhas da tabela, copie e cole em um editor de textos, selecione o caractere separador (o que está entre o nome do município e o número) e cole no script “modulofiscal.py“, em todos os lugares onde aparecer a sequencia ‘?’, e depois salve novamente o script.

modulo_fiscal_11

De volta ao Gestor de Projetos, crie uma nova Vista e insira nela a tabela .dbf que criamos através do menu “Vista > Adicionar camada de eventos“, conforme já explicado anteriormente. Feito isso, crie a camada shape, através do menu “Camada > Exportar para… > SHP“.

modulo_fiscal_12

Depois de exportar, insira a camada exportada na Vista, e delete a camada .dbf que tínhamos no ToC.

Selecione a camada criada e clique com o botão secundário do mouse em cima da mesma. No menu suspenso que abre, selecione a opção “Iniciar edição“, para entrar no modo de edição. Visualize os atributos da tabela (“Camada > Ver tabela de atributos“, ou o ícone correspondente na barra de ferramentas). Selecione a única coluna que temos na tabela, e clique em “Tabela > Modificar a estrutura da tabela“:

modulo_fiscal_13

 Vamos criar dois novos campos na tabela: MUN, do tipo string, de tamanho 80, e MOD_FISC, também string, e tamanho 3.

modulo_fiscal_14

Criados os campos, clique em “Aceitar” para voltar para a janela de atributos da tabela. Selecione a coluna “MUN“, e clique no menu “Campo > Expressão” ou no ícone correspondente, para abrir a Calculadora de Campos. Agora é que a diversão vai começar realmente 😉

Na Calculadora de Campos, clique na aba “Avançada” e, clicando no botão “Explorar“, encontre o arquivo “modulofiscal.py” que salvamos no início deste tutorial. Depois de aberto, deverá aparecer o caminho completo do arquivo no campo de textos. Clique no botão “Avaliar” para que o gvSIG reconheça o script.

modulo_fiscal_15

Feito isso, volte para a aba “Geral” e no campo de expressões digite a seguinte expressão: “extrair_nome([MUNMOD])"

modulo_fiscal_16

Ao clicarmos em “Aceitar” a expressão será aplicada, e o resultado será colocado na coluna “MUN“, conforme solicitamos:

modulo_fiscal_17

Para separar o valor do módulo fiscal, selecione a coluna “MOD_FISC” e repita o processo, aplicando a expressão extrair_numero([MUNMOD]). No final, deveremos ter o seguinte resultado:

modulo_fiscal_18

Como último passo, precisamos converter os valores que estão na coluna “MOD_FISC” de string para número, para que possamos realizar operações com os mesmos. Para fazer isso, crie um novo campo na tabela, nome “MOD_FIS“, tipo Integer, tamanho 3. De volta a janela de atributos da tabela, clique na coluna que acabamos de criar e abra a Calculadora de Campos. Agora não precisaremos usar a aba “Avançada“, pois a função que iremos usar já está disponível na Calculadora de Campos do gvSIG. Dê um duplo clique na função “toNumber” na coluna de Comandos e, colocando o cursor dentro dos parênteses da expressão, dê um duplo clique no Campo “MOD_FISC” (ou digite diretamente a expressão “toNumber([MOD_FISC)]” no campo “Expressão“). Ao clicarmos no botão “Aceitar“, a expressão será aplicada e teremos no campo “MOD_FIS” os valores dos módulos fiscais de cada município, agora transformados em números.

Para terminar o nosso trabalho podemos voltar a editar a estrutura da tabela e deletarmos os campos “MUNMOD” e “MOD_FISC“, que não serão utilizados, e ficaremos com a tabela “mun_mod_rs.dbf” final, totalmente editada através da Calculadora de Campos do gvSIG.

Guarde esta tabela, pois iremos utilizá-la nos próximos artigos, que virão em breve. Por enquanto é isso, pessoal!

P.S.: Fiquei devendo a explicação do script. Não esperem grandes comentários, até porque como programador Python eu sou um ótimo encanador…

A base da rotina é o método  rfind() do Python. Este método retorna a localização da última posição de uma substring dentro de uma string. No nosso caso, queremos localizar a última posição do caractere separador dentro da nossa string.

Vejamos a expressão que separa o nome do município:

def extrair_nome(campo):
	return campo[0:campo.rfind('?')]

Na primeira linha, definimos o nome da função e o parâmetro que devemos passar (uma string de nome “campo”, na nossa rotina). Na segunda linha, estamos solicitando que a rotina nos retorne a substring da string “campo”, que está compreendida entre a primeira posição (0) e a posição anterior a do caractere que determinamos como separador.

Agora a expressão que separa o valor do módulo fiscal por município:

def extrair_numero(campo):
	return campo[campo.rfind('?')+1:len(campo)]

A primeira linha é a mesma explicação da anterior. Já na segunda linha estamos solicitando que a rotina nos retorne a substring da string “campo”, que está compreendida entre a primeira posição após o caractere separador (por isso o +1) até o fim da string.

Em linhas gerais, é isso. Não é uma explicação muito técnica (que me perdoem os programadores de plantão), mas creio que já é possível entender a lógica da ideia…  😉

Calculadora de campos no gvSIG – Operações com textos – parte 3

Buenas, pessoal!

Como prometido nos artigos anteriores desta série, nesta última parte sobre o uso da Calculadora de campos na manipulação de strings no gvSIG, vamos abordar a aba “Avançada”:

calculadora-de-campos_txt_3_00

 Para quem perdeu o restante da série, é bom dar uma revisada antes de prosseguirmos:

Um breve “histórico” sobre o porque deste último artigo na parte de operações com textos no gvSIG: quando comecei a desenvolver esta série de artigos, tomei por base a série homônima que o Jorge Santos, do blog Processamento Digital, criou para o ArcGIS. Tanto que enquadrei o artigo com a hashtag #SLGeoTbFaz. No primeiro artigo da série sobre operações com textos ele abordou o uso do VBScrip para preenchimento de campo com valores baseados em outro campo, e fiquei bastante frustado ao perceber que, em um primeiro momento, eu não via a possibilidade de replicar esta parte do tutorial no gvSIG, pois o mesmo não permite o uso de scripts em VisualBasic.

No segundo artigo, ele fez uso das funções “left” e “right”, que também não estão disponíveis no set de funções para manipulação de strings disponibilizadas na Calculadora de campos do gvSIG. Esta  aparente dificuldade foi contornada com o uso da função “subString”, que permite retornar partes de uma string, mas ficava o desafio de replicar essas funções do ArcGIS que aparentemente não estariam disponíveis no gvSIG.

A solução veio exatamente ao estudar um pouco sobre a aba “Avançada” da Calculadora de campos do gvSIG. Embora pouco documentada, essa é uma característica poderosa que foi disponibilizada, pois nos permite executar scripts em Python ou Jython, o que nos abre um novo (e poderoso) campo de exploração para o uso da Calculadora de campos com o gvSIG.

O próprio Jorge Santos nos dá um exemplo do uso avançado de scripts Jython no gvSIG com o artigo Classificação de campos numéricos com Jython. Mas exploraremos a partir de agora algumas das possibilidades que nos são abertas com esta ferramenta:

Em primeiro lugar, vamos abrir o gvSIG e criar uma nova vista, com a projeção SAD69/UTMzone23S (código EPSG 29183). Nesta nova vista, inserimos o arquivo shape que podemos baixar aqui: ARQUIVO2. (obs.: se você já tiver este shape, proveniente dos outros tutoriais que estivemos trabalhando, basta criar novos campos para acompanhar o trabalho que iremos desenvolver. Como são poucos registros, podemos inclusive apagar os dados dos campos que iremos trabalhar).

Em seguida, selecionamos o shape no ToC do gvSIG, e entramos no modo de edição. Selecione o campo [PREFIXO] e acesse a Calculadora de campos. Deveremos ter uma área de trabalho semelhante a essa:

calculadora-de-campos_txt_3_01

Antes de prosseguirmos, baixe o seguinte script em Python: strings.py, e salve o arquivo em um local onde você possa acessá-lo posteriormente. Você pode até criar uma pasta de scripts dentro da sua pasta de trabalhos do gvSIG, para facilitar o acesso.

Segue abaixo o conteúdo do arquivo “strings.py“. Como você pode conferir, estaremos adicionando 5 novas funções à nossa Calculadora de Campos: right, left, toTitle, toPhrase e toSwapCase. Para os curiosos e fuçadores, deixo abaixo o código python que está neste script:

# Função right: separa n caracteres a partir da direita de uma string
def right(string,number):
return string[-number:]
# Função left: separa n caracteres a partir da esquerda de uma string
def left(string,number):
return string[:number]
# Função toTitle: transforma uma string em título (primeira letra de cada palavra em maiúscula)
def toTitle(string):
return string.title()
# Função toPhrase: transforma qualquer string para uma frase (primeira letra maiúscula e as restantes minúsculas)
def toPhrase(string):
return string.lower().capitalize()
# Função toSwapCase: transforma a string: o que for maiúsculo vira minúsculo e vice-versa
def toSwapCase(string):
return string.swapcase()

Outra dica importante é sempre documentar muito bem o seu código através do uso de comentários (linhas começando com o caractere “#”), explicando o que cada trecho do código faz. No momento da criação do código pode parecer não ter importância, mas quando você (ou outra pessoa) for usar novamente, vai agradecer muito por não ter que ficar “quebrando a cabeça” para entender o que aquela função faz.

Voltando ao gvSIG e ao nosso tutorial, na janela “Calcular Expressão” clique na aba “Avançada” e, em seguida, no botão “Explorar“. Navegue até o local onde você salvou o arquivo “strings.py“, selecione-o e clique em “Abrir“. O caminho para o arquivo deverá aparecer no campo de texto.

 calculadora-de-campos_txt_3_02

Por último, clique no botão “Avaliar“. Se não aparecer nenhuma mensagem de erro, é porque está tudo ok com nossas rotinas em python, e podemos continuar o nosso processo, agora contando com novas funções na nossa Calculadora de Campos. Note que as novas funções não irão aparecer na listagem dos Comandos.

Vamos [finalmente] fazer uso das nossas funções desenvolvidas: na área de textos “Expressão“, digite a seguinte expressão:

left([FONE],4)

e clique em “Aceitar“.

calculadora-de-campos_txt_3_03

No campo “PREFIXO” da nossa tabela, deverão aparecer os prefixos dos telefones que tínhamos cadastrado no campo “FONE”. Isso porque, através da expressão acima, estamos solicitando para a Calculadora de Campos do gvSIG que ela separe os 4 primeiros caracteres do campo “FONE”, a contar da esquerda, e coloque eles no campo “PREFIXO”.

calculadora-de-campos_txt_3_04

Agora, vamos usar a função “right” para obter apenas o número do telefone, sem o prefixo. Na tabela, selecione a coluna “TEL” e abra a Calculadora de Campos. Na área de textos “Expressão“, digite a seguinte expressão:

right([FONE],9)

e clique em “Aceitar” para conferir o resultado.

calculadora-de-campos_txt_3_05

Para testarmos as outras funções que estão disponíveis neste pequeno script precisaremos criar um novo campo na nossa tabela (se você não sabe como fazer, consulte os artigos anteriores). Crie o campo “NOME2”, do tipo “String”, com “69” caracteres de comprimento (o mesmo comprimento do campo “NOME” da nossa tabela).

Criado o campo, selecione a nova coluna “NOME2” que apareceu na tabela e abra a Calculadora de Campos.

Primeiramente testaremos a função “toSwapCase“, que faz a seguinte transformação na string: o que for maiúsculo vira minúsculo e vice-versa. Para tanto, digite a expressão:

toSwapCase([NOME])

E confira o resultado:

calculadora-de-campos_txt_3_06

Como todos os caracteres do campo “NOME” estão em maiúsculas, com a aplicação da função eles passam a ser minúsculas.

Ainda com a coluna “NOME2” selecionada, abra novamente a Calculadora de Campos e aplique agora a função “toTitle“, que transforma uma string em título (primeira letra de cada palavra em maiúscula). Para tanto, digite a expressão:

toTitle([NOME])

e veja que agora o campo “NOME2” foi alterado:

calculadora-de-campos_txt_3_07

Finalmente, vamos testar a função “toPhrase“, que transforma qualquer string para uma frase (primeira letra maiúscula e as restantes minúsculas). Mesmo procedimento das anteriores, agora digitando a expressão:

toPhrase([NOME])

E podemos conferir que agora, no campo “NOME2”, os endereços estão apenas com a primeira letra maiúscula e as demais em minúsculo:

calculadora-de-campos_txt_3_08

E chegamos ao fim de mais um tutorial, encerrando assim a análise do uso da Calculadora de Campos do gvSIG na manipulação de campos do tipo “string” (campos de textos). Estes artigos apenas “arranharam” as possibilidades que são abertas com o uso desta ferramenta na manipulação de dados, principalmente se considerarmos os recursos que nos são disponibilizados pelo uso de scripts python/jython, que podem facilitar muito nosso trabalho quando trabalhando com dados em tabelas.

Nos próximos tutoriais devemos começar a trabalhar com o uso da Calculadora de Campos na manipulação de campos numéricos. Nos vemos em breve (espero)!

Instalando o gvSIG 2.0 versões RC (release candidate)

Buenas, pessoal!

O desenvolvimento da versão 2.0 do gvSIG está andando a passos largos. Montei este tutorial com a versão RC3, mas já recebi a notícia de que já está disponível para download a versão RC4. Não haverá maiores problemas pois o procedimento é o mesmo, bastando substituir o nome do arquivo para a última versão disponível.

Há uma grande expectativa da comunidade de usuários gvSIG quanto ao lançamento da versão 2.0, e se você quiser testar a nova versão, poderá seguir os passos que estão demonstrados neste tutorial. Ressaltamos que esta é uma versão beta, destinada a testes, e que não deve ser utilizada como ambiente de trabalho “normal”. Este tutorial está sendo feito considerando a instalação do gvSIG 2.0 RC3 em um PC com Linux Ubuntu 12.04. Para outras versões do Linux e/ou de outros sistemas operacionais o procedimento pode variar um pouco, mas segue a mesma lógica.

A partir da versão 2.0 teremos duas possibilidades de instalação: a tradicional (completa e com todos os pré-requisitos de instalação), que é opção recomendada, e a instalação online, que requer uma conexão com a internet para ser completada (recomendo uma conexão com a internet estável e de boa velocidade, pois o número e tamanho dos arquivos a baixar é considerável). Na medida do possível, procurarei abordar ambos os processos de instalação.

Como o tutorial ficou bem “grandinho”, optei por colocar uma divisão no texto. Na página principal você verá até essa parte, e, clicando no link abaixo, poderá visualizar o tutorial completo.

Continuar lendo

Diagrama de Voronoi no gvSIG + Sextante (#SLGeoTbFaz)

Buenas, pessoal!

Mais um ponto para o software livre: a integração entre os vários projetos, agregando diversas ferramentas e potencializando o resultado final, o que nos permite obter o mesmo resultado utilizando caminhos diversos.

Hoje voltamos ao Diagrama de Voronoi. No artigo anterior vimos como gerá-lo através da extensão de Topologia do gvSIG. Hoje veremos como obter o mesmo resultado no gvSIG através das rotinas disponibilizadas pela extensão Sextante.

Iniciando a partir do resultado que obtivemos no último artigo, vamos abrir a extensão Sextante, clicando em “SEXTANTE > Caixa de ferramentas” ou clicando no ícone correspondente:

voronoi_sextante01Será aberta a janela da ferramenta Sextante:

voronoi_sextante02Para facilitar a localização, vamos utilizar o campo de busca (“Search“), fazendo uma busca pela palavra “voronoi“:

voronoi_sextante03Podemos notar que aparecerão apenas a rotina referente ao Diagrama de Voronoi. Poderíamos achar a mesma ferramenta seguindo o caminho: “Algorithms > SEXTANTE > Tools for point layers > Voronoi tesellation

Basta então clicar sobre o nome da rotina que será aberta a janela correspondente. Na primeira aba precisamos definir dois parâmetros: a camada de pontos, que será o shape “parada_bus.shp”, e também o nome e o caminho do arquivo que será gerado:

voronoi_sextante04Na segunda aba devemos definir o tamanho do arquivo que será gerado. Podemos escolher se o diagrama será gerado em relação à camada de entrada, se será defina pelo usuário, se levará em consideração o tamanho de uma vista, ou será gerada em relação ao tamanho de uma camada. Podemos selecionar a primeira opção, que gerará o Diagrama de Voronoi levando em consideração o tamanho da camada de entrada:

voronoi_sextante05Selecionados os parâmetros que a rotina necessita, podemos clicar no botão “OK”, e o Diagrama de Voronoi será gerado, sendo automaticamente inserido na vista que estamos trabalhando:

voronoi_sextante06Alterando os parâmetros da simbologia, podemos ver o nosso resultado final, agora gerado no gvSIG através da extensão Sextante:

voronoi_sextante07Por hoje é isso pessoal.

Seleção por camada no gvSIG

Buenas, pessoal!

O artigo de hoje é uma dica rápida, mas interessante, em resposta a uma dúvida do nosso amigo Jose Carlos Jr., o @geojcarlos, do blog “Carta Geográfica“: ele precisava selecionar de um conjunto de municípios aqueles que pertencem a uma determinada bacia hidrográfica; ou seja, a partir de uma camada fazer uma seleção em outra camada.

Em um primeiro momento, pensei em usar o geoprocesso “Interseção”, mas não obtive o resultado esperado, pois eram selecionadas apenas as áreas que pertenciam à bacia hidrográfica em questão; municípios que pertenciam a mais de uma bacia hidrográfica eram selecionados apenas parcialmente, o que não resolvia o nosso problema.

Parti então para uma consulta ao “amansa burro”: no caso, o manual do gvSIG. E estava lá a resolução do nosso problema: a seleção por camada.

Baixe os dados que usamos neste tutorial, a partir do site do Instituto de Terras, Cartografia e Geociências do PR: a divisão municipal do PR, e o shape das Bacias Hidrográficas do PR.

Vamos primeiramente abrir o gvSIG e criar um novo Projeto e uma nova Vista, tomando o cuidado de selecionar a projeção geográfica compatível com os nossos dados (EPSG 29182 – SAD69/UTM Zone 22S). Em seguida, vamos abrir a Vista e inserir os dois shapes que queremos trabalhar, deixando o shape das bacias hidrográficas por cima do shape das divisas municipais (retirei o preenchimento do shape das bacias, para facilitar a visualização:

Vamos agora selecionar a bacia hidrográfica da qual queremos saber quais são os municípios que a intersectam. Para isso, com o shape das bacias hidrográficas selecionado no TOC, escolhemos a ferramenta de seleção por ponto e clicamos na bacia hidrográfica de nosso interesse. Selecionei a Bacia Hidrográfica Ivaí:

Vamos agora selecionar no TOC a camada dos limites municipais (isso é importante, pois define a camada da qual queremos selecionar as feições), e vamos acessar o menu Vista > Seleção > Seleção por camada:

Na janela de opções da ferramenta vamos definir alguns parâmetros: em “Selecionar das camadas ativas as feições que…”, vamos selecionar a opção “Intersectam com”; em “Elementos selecionados da camada”, vamos selecionar a camada “BACIAS_HIDROGRÁFICAS_2007.shp”; em seguida, clicamos na opção “Novo Conjunto”. Ou seja: estamos criando um novo conjunto de seleção, na camada dos limites municipais, selecionando aqueles municípios cujos limites intersectam com a bacia hidrográfica selecionada na camada das bacias:

Ao clicarmos em “Novo conjunto”, a operação será aplicada e teremos o nosso resultado:

Todos os municípios que fazem parte da Bacia Hidrográfica Ivaí estão selecionados, e agora podemos exportar este conjunto para um novo shape, através do menu Camada > Exportar para… > SHP.

É isso aí, pessoal! Resolvemos o nosso desafio… 😉

 

 

Delimitação de Microbacias Hidrográficas com o gvSIG – Parte IV

Buenas, pessoal!

Finalmente entramos na reta final deste tutorial sobre a delimitação de Microbacias Hidrográficas (MBH) com o gvSIG. Nesta última parte faremos a delimitação propriamente dita.

Havíamos encerrado o post anterior com as sub-bacias hidrográficas de nossa área de estudo caracterizadas e devidamente vetorizadas:


Vamos prosseguir a partir daqui:

Selecionar as sub-bacias que pertencem à MBH de interesse:

Em primeiro lugar, vamos alterar a ordem das camadas que estão presentes no TOC, de modo que a camada vetorial da rede de drenagem esteja por cima da camada vetorial das sub-bacias hidrográficas. Além disso, é interessante alterar a simbologia da rede de drenagem, mudando a cor e a espessura da linha, de modo em a rede de drenagem possa ser facilmente visualizada por cima da camada das sub-bacias. Esse procedimento irá ajudar bastante na análise visual.

Em seguida, precisamos identificar a região da área de estudo em que está localizada a MBH que queremos delimitar, e dar um zoom na área, de modo a enquadrá-la na área de trabalho, facilitando procedimento de seleção.

Confirmamos que a camada vetorial das sub-bacias está selecinada no TOC, e passamos para a fase da seleção propriamente dita. Neste momento faremos uso das ferramentas de seleção de feições: 

Uma dica é utilizar primeiramente a ferramenta “Seleção por polígono”, procurando fazer o contorno da área de interesse. Quando terminar  a seleção, basta dar um “duplo clique” para fechar o polígono de seleção, e toda a área interna ao polígono desenhado será selecionada. Bastará então utilizar a ferramenta de “Seleção por ponto” para selecionar  as eventuais áreas que ficaram fora da seleção anterior, tomando o cuidado de pressionar simultaneamente a tecla “Ctrl”, para que as feições selecionadas sejam adicionadas à seleção já existente. O mesmo pode ser feito para remover a seleção de alguma sub-bacia que eventualmente não faça parte da MBH em questão: basta clicar sobre ela com a ferramenta de “Seleção por ponto”, sempre com a tecla “Ctrl” pressionada, que será removida a seleção da sub-bacia.

No final do trabalho de seleção deveremos ter uma camada semelhante a da figura a seguir:

Vamos agora exportar essa seleção para uma nova camada: acessamos o menu Camada > Exportar para > SHP, e definimos um nome e o caminho para o arquivo shape que será gerado. Ao clicarmos em “Aceitar” aparecerá uma mensagem informando o número de feições que serão exportadas, e perguntando se desejamos continuar:

Após clicarmos em “Sim”, a seleção será exportada para um novo shape, e seremos questionados se queremos inserir a nova camada na Vista, ao que devemos responder novamente “Sim”. E seremos apresentados ao shape das sub-bacias que compõe a nossa MBH:

Precisamos agora gerar um shape que contenha todas as sub-bacias, delimitando assim a área da MBH. Para isso, vamos…

Aplicar o geoprocesso “dissolver”:

Clicamos com o botão direito sobre camada da MBH que acabamos de criar e, no menu contextual que é aberto, clicamos na opção “Iniciar edição”. Em seguida, clicaremos no ícone “Mostrar atributos”, para que possamos ter acesso à tabela de atributos do shape da MBH. Acessamos então o menu Tabela > Modificar estrutura da tabela, pois precisaremos acrescentar um campo à estrutura da tabela que contenha um mesmo valor em todos os elementos da tabela para podermos aplicar o geoprocesso dissolver.

Na janela do “Editor de campos” que se abre vamos selecionar a opção “Novo campo”. Podemos alterar o “Nome do campo” (utilizei o nome “dissolver”); em “Tipo” vamos deixar selecionada a opção “string”; em “Tamanho” alteramos para o valor “1”; e, finalmente, em “Valor padrão” escolhemos um valor que aparecerá automaticamente preenchido em todos os elementos da tabela no novo campo que estamos inserindo.

Ao clicarmos em “Aceitar” o campo será inserido, e poderemos conferir este fato na listagem dos campos da tabela de atributos do shape que nos é apresentada:

Podemos então clicar em “Aceitar”, fechamos a Tabela de atributos e, no TOC, clicamos com o botão direito na camada que estávamos editando, e selecionamos a opção “Termina a edição”.

Em seguida, vamos acessar o menu Vista > Gestor de geoprocessos. Na janela de Geoprocessos que se abre, selecionaremos: Geoprocessos > Análises > Agregação > Dissolver

Ao selecionarmos a opção “Abrir Geoprocesso”, abrirá a janela de configuração da ferramenta, onde selecionaremos as seguintes opções: em “Camada de entrada” selecionamos o shape da MBH; podemos conferir se o número de elementos selecionados está correto; em “Campo para dissolver” selcionaremos o campo que acabamos de criar (“dissolver”, no meu caso); finalmente, em “Camada de saída”, vamos nomear arquivo e definir o caminho onde o mesmo será salvo.

Ao clicarmos em “Aceitar” o geoprocesso dissolver será aplicado, e teremos o resultado desta operação:

Podemos perceber que todas as feições foram dissolvidas e temos agora um shape que contém apenas uma feição, correspondente a área total da nossa MBH. Podemos agora agregar algumas informações a este shape, como por exemplo:

Calcular a área e o perímetro da MBH:

Para agregar essas informações ao shape que acabamos de criar vamos acessar o menu Camada > Adicionar informação geométrica.

Na janela “Adicionar informações geométrica” que se abre vamos selecionar o shape que acabamos de criar no passo anterior em “Camada”; selecionamos as informaçôes geometricas “área” e “perímetro”, clicando em seguida no ícone “Adiciona os ítens selecionados”:

Após clicarmos em “Aceitar” serão calculados a área e o perímetro da nossa MBH, com as unidades de medida definidos na configuração inicial das propriedades da Vista. Os valores estarão na tabela de atributos do shape, e podemos consultá-los através do ícone “Tabela de atributos:

Recortar a rede de drenagem da microbacia hidrográfica:

Como último passo deste tutorial vamos recortar a rede de drenagem, de forma a termos separada apenas a rede de drenagem da MBH que nos interessa. Para tanto, acessaremos o menu Vista > Gestor de geoprocessos e, na janela do Gestor de Geoprocessos, acessaremos o caminho: Geoprocessos > Análises > Sobreposição > Recortar.

Clicamos em “Abrir Geoprocesso” e, na janela de opções da ferramenta, aplicaremos as seguintes configurações: em “Camada de entrada” selecionamos o shape da rede de drenagem; selecionamos como “Camada de recorte” o shape do limite da MBH; e, em “Camada de saída” definimos o nome e o caminho do arquivo que será gerado.

Após clicarmos em “Aceitar”, o geoprocesso será aplicado e obteremos o nosso resultado:

Na próxima imagem apresento a MBH devidamente delimitada, juntamente com sua rede de drenagem, que é o nosso resultado final, já com a simbologia alterada para uma melhor apresentação visual:

A partir deste momento poderemos gerar o mapa da MBH, para ser impresso ou salvo como um arquico pdf, mas esse não é o objetivo deste tutorial. Para quem quiser fazer esse trabalho indico o excelente tutorial sobre o “Modo layout no gvSIG“, do meu amigo Esdras, no blog Geo para Linux