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”:
Para quem perdeu o restante da série, é bom dar uma revisada antes de prosseguirmos:
- Calculadora de Campos no gvSIG – Introdução
- Calculadora de Campos no gvSIG – Operações com textos – parte 1
- Calculadora de Campos no gvSIG – Operações com textos – parte 2
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:
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)
return string.lower().capitalize()
def toPhrase(string):
# 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.
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“.
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”.
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.
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:
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:
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:
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)!
Tags: gvSIG, geoprocessamento, jython, python, SLGeoTbFaz, calculadora-de-campos, tutorial
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:
Será aberta a janela da ferramenta Sextante:
Para facilitar a localização, vamos utilizar o campo de busca (“Search“), fazendo uma busca pela palavra “voronoi“:
Podemos 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:
Na 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:
Selecionados 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:
Alterando os parâmetros da simbologia, podemos ver o nosso resultado final, agora gerado no gvSIG através da extensão Sextante:
Por hoje é isso pessoal.
Tags: geoprocessos, geoprocessamento, gis, gvSIG, sextante, SLGeoTbFaz, tutorial
Diagrama de Voronoi no gvSIG (#SLGeoTbFaz)
Buenas, pessoal!
Como comentamos no último artigo, onde falamos sobre a instalação da extensão de Topologia no gvSIG, dissemos que a mesma seria necessária para o próximo assunto, o Diagrama de Voronoi:
Vou fazer um “CTRL-C – CTRL-V” no texto do Anderson Medeiros sobre a função do Diagrama de Voronoi, para não chover no molhado:
O diagrama de Voronoi, também conhecido pela denominação de polígonos de Thiessen é utilizado para resolver problemas que envolvem conceito de proximidade em um plano. É uma das estruturas mais importantes no contexto da Geometria Computacional.
Recomendo o texto “Diagrama de Voronoi e suas aplicações em SIG“, também do Anderson Medeiros, se você quiser se aprofundar um pouco mais na parte teórica. Como o nosso objetivo é a parte prática, baixe esse arquivo de shapes, que contém dois shapes: o shape “lotes.shp” representando as quadras de um determinado bairro, e o shape “paradasbus.shp_” representando as paradas de ônibus existentes naquela região. Utilizaremos o geoprocesso do Diagrama de Voronoi para gerarmos um diagrama que nos permita fazer uma análise espacial da distribuição das paradas de ônibus, para verificarmos se as suas localizações estão atendendo as demandas dos usuários, por exemplo. Vamos ao trabalho:
Em primeiro lugar, abra o seu gvSIG, já com a extensão de Topologia devidamente instalada (se ainda não instalou, volte ao artigo anterior neste blog). Crie uma nova Vista, no sistema de projeção SAD69 (EPSG 4291). Abra a Vista e insira na mesma os dois shapes que foram baixados:
Em seguida, vamos abrir o geoprocesso do Diagrama de Voronoi propriamente dito, acessando o menu “Vista > Gestor de geoprocessos“. Ao clicarmos nesta opção irá abrir a janela do Gestor de geoprocessos. Para localizar o geoprocesso do Diagrama de Voronoi é necessário navegar na árvore de Geoprocessos: “Geoprocessos > Análises > Geometria Computacional > Voronoi > TIN/Voronoi/Delaunay“:
Ao clicarmos nesta opção irá aparecer no lado direito da janela do Gestor de geoprocessos uma descrição dos procedimentos que serão aplicados. Basta clicarmos na opção “Abrir Geoprocesso” para abrir a janela do Geoprocesso:
Como “Camada de entrada” vamos selecionar o shape “paradasbus.shp“; automaticamente o gSIG nos avisará que foram selecionados 17 elementos. Selecionaremos a opção “Polígonos de Thiessen (Voronoi)” e a opção “Chew’s incremental TIN baseado em um triângulo envolvente“. Por último, clicamos no botão “Abrir_” e selecionamos o local e o nome para o shape que será criado.
Feitas estas seleções, podemos gerar o Diagrama de Voronoi, bastando para isso clicar no botão “Aceitar” e aguardar a geração do diagrama.
No final do processo, seremos apresentados a uma tela semelhante a essa:
Para melhorarmos a visualização e obtermos um resultado mais significativo em termos de interpretação, podemos alterar as propriedades da camada do Diagrama de Voronoi, retirando o seu preenchimento, o que nos permitirá visualizar a distribuição das paradas de ônibus e como cada conjunto de quadras está sendo atendido pelas suas respectivas paradas:
Por hoje é isso, pessoal! Espero conseguir tempo para colocar online todos os artigos que tenho por aqui sobre o uso do gvSIG… Um abraço a todos os que nos acompanham e nos incentivam nessa empreitada!
Tags: geoprocessos, geoprocessamento, gis, gvSIG, tutorial, SLGeoTbFaz
Calculadora de campos no gvSIG: Operações com textos, parte 2
Buenas, pessoal!
Dando seguimento ao nosso estudo do uso da Calculadora de Campos no gvSIG, vamos continuar a lidar com as operações com textos, destrinchando mais algumas funções que são disponibilizadas pelo gvSIG.
Para início de história, vamos baixar o arquivo shape sobre o qual vamos trabalhar: ARQUIVO2. Em seguida, criamos uma nova vista, com a projeção SAD69/UTMzone23S (código EPSG 29183), e inserimos o nosso novo shape, e entramos em modo de edição (se não sabe como chegar até aqui, confira o primeiro artigo desta série).
Uma dica importante para quem usa Linux: se você está visualizando caracteres “estranhos” quando abre a tabela de atributos do shape, você está enfrentando problemas com a codificação do arquivo .dbf:
Para corrigir este problema, basta seguir a dica do blog Processamento Digital: Codificação Padrão do DBF.
Função subString: Separando partes de uma string:
Uma das funções a que precisamos recorrer frequentemente é separar partes de uma string. Na tabela vinculada ao shape que estamos trabalhando existe o campo [FONE], que contém uma string com o número do telefone, incluindo o prefixo (código de área):
Vamos separar esta string em duas informações: prefixo e telefone, aproveitando os campos que já estão disponíveis na tabela. Vamos fazer essa tarefa em dois passos:
Primeiramente, selecionamos a coluna [PREFIXO], clicando no respectivo nome na tabela. Em seguida, acessamos a Calculadora de Campos (menu Campo > Expressão). Selecionamos então a opção “String”, e localizamos a função que queremos aplicar: “subString”. Ao clicarmos duas vezes sobre ela, aparecerá a seguinte expressão no campo de Expressões:
subString(,,)
Podemos então editar essa expressão, para que fique dessa forma:
subString([FONE],0,4)
Com isso, estamos dizendo para o gvSIG pegar a string do campo [FONE], e separar a substring que inicia no caractere 0 (zero) e termina no caractere 4 menos 1 (para o Python, começamos a contar os caracteres a partir do zero).
Para entender melhor:
(21) 3371-9411 01234567890123
Ou seja: separaremos a substring que está contida entre o primeiro e o quarto caracter, e colocaremos o resultado no campo [PREFIXO], que estava previamente selecionado. Ao clicarmos em “Aceitar” poderemos ver o resultado da nossa expressão:
Essa forma de contar pode parecer um pouco confusa no começo, mas depois a gente pega o jeito…
Agora vamos a segunda parte: selecionamos a coluna [TEL] e acessamos novamente a Calculadora de Campos. Agora, digitaremos a seguinte expressão:
subString([FONE],5,14)
Ou seja: da string presente no campo [FONE] estaremos selecionando a substring que começa no caractere 5 (o sexto caractere) e que termina no caractere 14 menos 1 (isto é, 13, ou o décimo quarto caractere). Clicando em “Aceitar”, poderemos visualizar o resultado da expressão que criamos:
Como eu disse anteriormente, no começo pode parecer um pouco confuso, mas depois que entendemos o processo fica fácil de aplicar as regras e obter os resultados que precisamos ao manipularmos strings.
Concatenando strings com a função “+”
Agora vamos fazer o caminho inverso, para aprendermos a lidar com a função de concatenar strings. Como primeiro passo, crie o campo [TELEFONE] com as mesmas propriedades do campo [FONE] (string, comprimento = 24). Lembre-se que, para isso, precisamos estar no modo de edição (se você está acompanhando o tutorial, já deve estar no modo de edição).
Selecione o campo [TELEFONE] na tabela e abra a Calculadora de Campos. Vamos criar agora a string telefone no formato “0XX (21) 3371-9411”, Para tanto, digite a seguinte expressão:
"0XX " + [PREFIXO] + " " + [TEL]
O “segredo” aqui é inserirmos os caracteres das partes da string que queremos adicionar à string final entre aspas duplas (Ex.: “0XX “). Preste atenção também ao uso dos espaços. Basta digitarmos as strings e intercalarmos os campos, com a função de concatenação, de modo a obtermos o resultado desejado. Ao clicarmos em “Aceitar”, poderemos ver o resultado final:
Função toLowerCase
Converte todos os caracteres de uma string para caixa baixa (LowerCase).
Já não vou explicar o processo de aplicação da expressão, pois creio que nesta altura do campeonato essa parte já deva estar dominada. Vou apenas apresentar a expressão utilizando a função, e o resultado final:
toLowerCase([NOME])
Função toUpperCase:
Converte todos os caracteres de uma string para caixa alta (UpperCase).
toUpperCase([MUNICIPIO])
Buenas… por hoje é isso, pessoal! Lembrem-se de que, para salvarmos todas as alterações que efetuamos na tabela, precisamos sair do modo de edição do shape e salvar as alterações quando questionados.
Espero que eu não tenha sido sucinto demais, mas quem encontrar alguma dificuldade basta revisar os artigos anteriores desta série, que o processo está bem “mastigadinho”.
No próximo artigo abordaremos o uso da aba “Avançado” da Calculadora de Campos. Aguardem, que vem muita novidade por aí!
Tags: calculadora-de-campos, geoprocessamento, gis, gvSIG, tutorial, geoprocessos, SLGeoTbFaz
Calculadora de Campos no gvSIG: Operações com textos, parte 1
Buenas, pessoal!
Depois de um “longo inverno” sem postagens aqui no blog, retomamos aonde havíamos parado: o estudo das aplicações da Calculadora de Campos no gvSIG. Recomendo que vocês façam uma revisão do artigo anterior, onde fizemos uma introdução a Calculadora de Campos no gvSIG antes de prosseguir por aqui…
Para os exercícios que faremos por aqui, continuaremos utilizando o shapefile que já estávamos usando, e que pode ser baixado aqui: ARQUIVO1. Lembrando: este shapefile está na projeção SAD69/UTMzone23S (código EPSG 29183), portanto, para iniciarmos os trabalhos, precisamos criar uma nova vista com esta projeção que, depois de aberta, devemos inserir o shapefile sobre o qual trabalharemos. No final, devemos estar com uma área de trabalho semelhante a essa:
Para começarmos o nosso trabalho com a Calculadora de Campos, precisamos colocar o gvSIG em modo de edição. Para tanto, no TOC, clicamos com o botão secundário do mouse sobre o nome do arquivo que iremos trabalhar e, no menu contextual que se abre, escolhemos a opção “Iniciar edição”.
A partir de agora o gvSIG estará em modo de edição, permitindo que tenhamos acesso a Calculadora de Campos.
Ainda como preparação para os trabalhos, precisamos criar um novo campo na tabela de atributos do nosso shape. Não vou abordar esse assunto novamente, então, se você não lembra como fazemos isso, volte ao artigo anterior desta série para revisar o assunto.
Abra a Tabela de Atributos do shape que estamos trabalhando (menu Tabela > Modificar a estrutura da tabela ou clicando no ícone correspondente). Se você está utilizando o mesmo shape que trabalhamos na primeira parte, verá uma tabela de atributos semelhante a essa:
(Se você baixou o arquivo novamente, a tabela não conterá o campo “MUN”, que foi criado no tutorial anterior. Não se preocupe, ele não será necessário para o trabalho que iremos fazer).
Observando com atenção os atributos da tabela, podemos notar que o Campo “Bairro” é do Tipo “String”, e tem um Tamanho de 254 bytes. Aproveitando que estamos na Tabela de Atributos em modo de edição, vamos alterar a tabela (menu Tabela > Modificar a estrutura da tabela) para criar um Novo Campo, com o criativo nome [Bairro2], com as mesmas características do campo [Bairro] (isto é: Tipo “String” e Tamanho de 254 bytes). Com isso, estaremos duplicando o campo [Bairro].
Copiar dados de textos a partir de um Campo existente:
A partir deste momento é que começamos a nossa conversa “pra valer”. Como primeira operação com textos através da Calculadora de Campos do gvSIG, vamos fazer uma operação básica: copiar os dados de um campo de texto para outro campo (isto é, vamos duplicar o campo). Pode parecer uma operação sem sentido, mas é muito importante quando queremos trabalhar sobre os dados de um campo, mas ao mesmo tempo precisamos preservar as informações originais.
Para iniciarmos o trabalho, sempre no modo de edição, vamos selecionar a coluna do campo [Bairro2], clicando em cima do seu nome na tabela. Em seguida, podemos acessar a Calculadora de Campos (menu Campo > Expressão). Na janela “Calcular expressão” que se abre, podemos notar no destaque da figura abaixo, que o campo [Bairro2] já vem destacado, indicando que é nele que o resultado da expressão será colocado.
Vamos copiar todos os registros que estão na coluna do campo [Bairro] para o nosso recém criado campo [Bairro2]. Para tanto, basta darmos dois cliques sobre o nome do campo desejado ([Bairro]), que o mesmo já aparecerá na expressão. Para completarmos o procedimento, basta clicar sobre o botão “Aceitar”. Podemos verificar então que todos os campos foram copiados para a outra coluna:
Se o nosso objetivo não é copiar a totalidade dos registros de um campo, o gvSIG nos permite realizar esta operação apenas sobre os registros desejados. Para testar esta modalidade, crie um novo campo na tabela (minha sugestão: [Bairro3] 🙂 ). Após criado o novo campo, retorne na tabela de atributos do nosso shape, e faça uma seleção de múltiplas linhas da tabela (dica: se você segurar a tecla “CTRL”, poderá fazer a seleção linha a linha, clicando nas linhas desejadas; se a seleção for contínua, você poderá clicar na primeira linha, pressionar a tecla “SHIFT” e clicar na última linha da seleção, que todas as linhas entre elas serão selecionadas).
Feita a seleção, clique na coluna do campo [Bairro3], que é onde colocaremos o resultado da expressão que vamos usar, abra novamente a Calculadora de Campos e repita o procedimento anterior:
Observe que agora, após clicarmos no botão “Aceitar”, o resultado da expressão só aparecerá nos registros do campo [Bairro3] que estavam selecionados antes de chamarmos a Calculadora de Campos:
Essa ferramenta pode ser utilizada em conjunto com a ferramenta filtro, o que nos ajudará muito quando estivermos trabalhando com tabelas de dados com muitos registros. Para tanto, estando no modo de edição, basta aplicarmos o filtro para fazer a seleção dos dados desejados, e depois aplicarmos a Calculadora de Campos para efetuarmos as operações desejadas.
Função Replace
A outra função que iremos testar nesta primeira parte será a função “replace”. Podemos utilizar esta função para substituirmos valores que existem em um determinado campo da tabela por outro valor. Por exemplo, para substituirmos algum valor que foi digitado errado, ou que tem que ser alterado.
A sintaxe desta função é: replace (Parâmetro1,Parâmetro2, Parâmetro3), onde:
- Parâmetro 1: o campo onde iremos aplicar a função;
- Parâmetro 2: a string antiga, que será substituída; e
- Parâmetro 3: a string nova, que será colocada no lugar da antiga.
Neste exemplo, vamos substituir todas as strings “São Cristóvão” que ocorrem no campo [Bairro2], por uma nova string, “S. Cristóvão”. Para tanto, primeiramente teremos que remover a seleção que aplicamos no exemplo anterior, pois se não só obteríamos o resultado sobre os registros selecionados. Para remover a seleção, basta acessarmos o menu Camada > Limpar seleção, ou clicarmos no ícone correspondente.
Removida a seleção, selecionamos o campo sobre o qual iremos trabalhar ([Bairro2]) e abrimos a Calculadora de Campo. Para aplicarmos a função “replace”, na aba “Geral” da Calculadora de Campos, selecionamos a opção “string” para o Tipo, e na lista que aparece no lado direito da janela clicamos duas vezes em “replace”. Na parte de baixo da janela aparecerá a seguinte expressão:
replace( , "","")
Posicionamos o cursor antes da primeira vírgula e na lista de campos que aparece no lado esquerdo da janela, selecionamos o campo [Bairro2]. Ao darmos um duplo clique sobre ele, notamos que ele aparecerá na expressão:
replace( [Bairro2], "","")
Em seguida, digitamos entre a primeira sequencia de aspas a string que queremos substituir (“São Cristóvão”) e na segunda sequencia de aspas digitamos a string que irá substituir (“S. Cristóvão”). A expressão deverá ficar como a seguinte:
replace( [Bairro2], "São Cristóvão","S. Cristóvão")
Ao clicarmos em “Aceitar” veremos que a função “replace” foi aplicada sobre o campo [Bairro2], conforme solicitamos:
Um detalhe: depois de terminado não se esqueça de clicar com o botão secundário no nome do shape que estamos trabalhando, no TOC, e selecionar a opção “Finalizar a edição” no menu que se abre, e salvando (ou não) as alterações que foram feitas na tabela de dados!
Buenas… por hoje é isso, pessoal! Nos veremos em breve, com a próxima parte do artigo sobre a Calculadora de Campos no gvSIG. E, lembrem-se: #SLGeoTbFaz!
Tags: calculadora-de-campos, geoprocessamento, gis, gvSIG, tutorial, geoprocessos, SLGeoTbFaz
Voltando... de novo!
Buenas, pessoal!
Depois de um forçado descanso [quase] sabático, por motivos que não é o caso de mencionar por aqui, mas que me impossibilitaram de estar presente mais constantemente através do meu blog, volto para anunciar que… em breve estarei de volta!
Não prometo muita constância, mas ao menos não deixarei o blog abandonado às traças, como aconteceu nestes últimos meses. Estou sabendo que estamos com alguns problemas de acesso direto aos artigos, e também que em alguns artigos as imagens estão com problemas (o servidor de imagens que eu utilizava fechou nesse meio tempo, e não houve tempo hábil para recuperar as imagens). Prometo que nos próximos dias estarei arrumando esses problemas (afinal, esse ano é um ano de eleições… ).
Na medida do possível aguardem novas postagens, principalmente quanto ao gvSIG e a série #SLGeoTbFaz.
Por enquanto é isso, pessoal! Nos vemos em breve...
Tags: geoprocessamento, gvSIG, SLGeoTbFaz
Calculadora de Campos no gvSIG: Introdução (#SLGeoTbFaz)
Buenas, pessoal!
Só mesmo o @jpsantos2002 para me tirar desse quase “descanso sabático” de postagens aqui no blog! Acontece que ele iniciou uma série de artigos sobre o uso da Calculadora de Campos no ArcGIS, um assunto que sempre me interessou mas que nunca encontrava tempo para me aprofundar no estudo. Quando vi os primeiros artigos da série, imediatamente pensei: “taí” um bom gancho para mais um artigo da série #SLGeoTbFaz!
Apesar de ser uma ferramenta poderosa para a atualização, edição e criação de novos campos de dados em tabelas, é uma ferramenta pouco explorada em tutoriais, e acaba sendo pouco conhecida. O manual do gvSIG apresenta um capítulo a parte sobre a Calculadora de Campos, mas não é muito rico em exemplos de uso. Além deste material, até o momento encontrei apenas dois tutoriais que falam sobre o assunto (e que já estão devidamente catalogados na Coletânea de links sobre o gvSIG): Operador “like” SQL en GvSig e Concatenar campos com Field Calculator. Recomendo a leitura dos dois artigos, que muito nos ajudam a entender sobre o assunto.
Mas, chega de conversa fiada e vamos ao que interessa: a Calculadora de Campos!
Como já comentamos, a Calculadora de Campos é um poderoso recurso disponibilizados pelos programas SIG (entre eles, o gvSIG), e que nos permite fazer a inserção automática de valores na tabela de atributos de um shapefile através de operações matemáticas e expressões lógicas. Utilizada em conjunto com as ferramentas de seleção, filtro e NavTable potencializa as aplicações com dados em tabela, facilitando a edição dos mesmos sem que seja necessário lançar mão de outros aplicativos.
Todas as geometrias do shapefile (ponto, linha ou polígono) possuem uma base de dados que armazena informações no arquivo DBF. As operações da Calculadora de Campo podem ser executadas para atualizar valores de um determinado campo ou aplicar o resultado de uma operação num novo campo. Para fins de compatibilidade com a série de artigos do Jorge Santos vamos utilizar neste tutorial o mesmo shapefile que ele disponibilizou, e que pode ser baixado aqui: ARQUIVO1.
Para iniciar os trabalhos, crie uma nova Vista no gvSIG, e altere a projeção da vista para SAD69/UTMzone23S (código EPSG 29183), que é a projeção do shapefile que iremos trabalhar.
Feito isto, podemos abrir a Vista que criamos e inserir o arquivo shapefile que baixamos. No gvSIG todas todos os arquivos que fazem parte da Vista são organizadas em camadas que, após inseridas, são apresentadas no TOC (Table of Contents). Para selecionar o arquivo a trabalhar, basta clicar em cima do nome do mesmo no TOC, e ele passa a aparecer destacado na listagem:
Para abrir a Tabela de atributos da camada, selecione-a no TOC e, em seguida, acesse o menu Camada > Ver tabela de atributos, ou clique no ícone correspondente na barra de ferramentas:
Será mostrada a Tabela de atributos do shape selecionado:
Criando um novo campo:
Em muitos momentos nesta série de tutoriais sobre a Calculadora de Campos será necessária a criação de novos campos na Tabela de atributos do shape, para que possamos inserir novas informações. Portanto, vamos revisar o procedimento para a criação de novos campos na Tabela de atributos.
Em primeiro lugar, precisamos colocar o gvSIG em modo de edição. Para tanto, com o arquivo selecionado no TOC, clicamos com o botão secundário do mouse sobre ele e, no menu contextual que aparece, selecionamos a opção “Iniciar edição”.
O gvSIG entrará em modo de edição. Acesse novamente a tabela de atributos do shape. A partir do momento que aparece a tabela de atributos na tela, já poderemos alterá-la. Para isso, vamos acessar o menu Tabela > Modificar a estrutura da tabela. Será aberta a janela do Editor de campos.
Nesta janela podemos observar a estrutura da tabela que estamos trabalhando, de onde podemos obter alguns dados importantes: o “Nome do campo”, o “Tipo” do campo (que pode variar entre Boolean, Data, Integer (Inteiro), Double (Dupla precisão) e String), o “Tamanho” do campo, a “Precisão decimal” (número de dígitos decimais, em campos numéricos), e o “Valor padrão” (que pode ajudar no momento do preenchimento da tabela, se temos um campo com um valor padrão, que se repete com frequencia). Como queremos acrescentar um campo à tabela, vamos clicar no botão “Novo campo”.
Na janela “Propriedades do novo campo” que é aberta, vamos criar um novo campo, que irá representar o município ao qual o ponto está inserido. Para tanto, vamos determinar “MUN” como Nome do campo, selecionar “String” como Tipo, e digitar o valor “50” como Tamanho do campo.
Obs.: Existem algumas regras para a criação dos nomes de campos em tabelas vinculadas a shapes, herança do formato de arquivo .DBF que é adotado. As principais regras são:
- O nome dos campo possui um limite de 10 caracteres;
- Números, letras, hífens e underscores são permitidos;
- Não são permitidos espaços e caracteres especiais.
Terminada a inserção dos dados, clicamos em “Aceitar” e podemos conferir que o campo foi criado conforme nossas especificações, passando a fazer parte da Tabela de atributos.
Com o novo campo criado, vamos clicar em “Aceitar” para fechar a janela “Editor de campos”, e começarmos a usar a Calculadora de Campos.
Utilizando a Calculadora de Campos
Como primeiro exemplo, vamos utilizar a Calculadora de Campos para preencher automaticamente o campo “MUN” com o valor “Rio de Janeiro”, que é o município onde estão localizados os pontos do nosso shape. Clique com o botão principal do mouse sobre o nome da coluna “MUN”, selecionando-o, e vamos acessar a Calculadora de Campos.
Para abrir a Calculadora de Campos, devemos clicar no menu Campo > Expressões, ou clicar no ícone correspondente na barra de ferramentas:
Abrirá a janela “Calcular expressão”. Para inserir dados do tipo String devemos digitar o texto entre aspas duplas. Digite “Rio de Janeiro” para preencher a coluna do campo MUN com o nome do município. Clique no botão Aceitar para completar a operação.
Observando a Tabela de atributos, podemos notar que todos os campos da coluna “MUN” foram preenchidos com o valor “Rio de Janeiro”.
Para encerrar a seção de edição, no ToC devemos clicar com o botão secundário do mouse no nome do shape que estamos editando e selecionar a opção “Terminar edição”. Responda “Sim” à pergunta “Deseja salvar a camada?”, e todas as alterações que fizemos na Tabela de atributo serão salvas.
Esse foi o nosso primeiro contato com a Calculadora de Campos no gvSIG. No próximo tutorial começaremos a explorar as operações com campos do tipo String (texto).
Tags: calculadora-de-campos, geoprocessos, geoprocessamento, gis, gvSIG, SLGeoTbFaz, tutorial
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…
Tags: geoprocessamento, geoprocessos, gvSIG, SLGeoTbFaz, tutorial
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 arquivo 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
Tags: geoprocessamento, gis, gvSIG, MDT, sextante, SLGeoTbFaz, tutorial, geoprocessos
Delimitação de Microbacias Hidrográficas com o gvSIG: Parte III
Buenas, pessoal!
Vamos agora para a terceira parte do tutorial sobre delimitação de Microbacias Hidrográficas (MBH) com o gvSIG. Na segunda parte do tutorial vimos como gerar o MDT a partir de um arquivo shape contendo curvas de nivel da região de interesse. Neste momento, estamos com o MDT pronto e processado, de modo a não apresentar depressões. Retomamos o trabalho a partir deste ponto.
Gerar a camada de fluxo:
Para início de conversa, abriremos a ferramenta Sextante: SEXTANTE > Basic hydrological analysis > Flow accumulation
Na janela da ferramenta que se abre, vamos efetuar as seguintes configurações: Na aba “Parameters”, seção “Inputs – Raster layers”, em “Elevation” selecionaremos a camada que foi gerada após o processamento de eliminação das depressões; em “Weight” deixamos sem seleção (Not selected); na seção “Options”, em “Method” selecionamos a opção “MFD (Multiple Flow Directions)”; em “Convergence factor (MFD), colocamos o valor de “1.1”; na seção “Outputs”, como de praxe, selecionamos o nome e caminho onde o arquivo resultante será salvo.
Na aba “Output region” deixaremos selecionada a opção “Fit to input layers” (nota: de agora em diante essa será a opção “padrão”, quando não nos referirmos a ela nas próximas fases. Se houver alguma necessidade de alterar essa opção, eu avisarei).
Ao clicarmos em “OK” a rotina de acúmulo de fluxo será aplicada, e obteremos como resultado final um arquivo raster que representa o acúmulo de fluxo da nossa área de estudo:
Podemos agora partir para a geração da rede de drenagem.
Gerar a rede de drenagem:
Abrimos novamente a ferramenta Sextante: SEXTANTE > Basic hydrological analysis > Channel network
Definindo as opções da ferramenta: Na aba “Parameters”, seção “Input – Raster layers”, vamos definir que em “Elevation” será utilizada a camada raster do MDT processado (sem depressões); em Threshold layer, selecionaremos a camada de fluxo, gerada na fase anterior; na seção “Options”, primeiramente não mexeremos nas opções apresentadas: em “Criteria” está selecionado “Greater than”, e em Threshold está o valor de “10000.0”; na seção “Outputs, o diferencial agora é que será gerada uma camada no formato raster e outra no formato vetorial. Definimos aqui nome e caminho para caminho para cada um dos arquivos que será gerado. Na aba “Output region”, como comentamos anteriormente, deixaremos selecionada a opção “Fit to input layers”.
Ao rodarmos a rotina clicando em “OK”, seremos apresentados ao arquivo resultante: a rede de drenagem da nossa área de estudo:
Como podemos observar, a rede de drenagem ficou muito detalhada. Se aplicarmos a rotina de geração de sub-bacias neste arquivo, receberemos como resultado centenas de sub-bacias, referentes a cada contribuinte da rede de drenagem, por menor que seja. Co mo não é esse o objetivo neste momento, vamos alterar os parâmetros para obter uma rede de drenagem com menos detalhes:
Abrindo novamente a ferramenta “Channel ntetwork” do Sextante, vamos alterar apenas a opção “Threshold”, da seção “Options” da aba “Parameters”. Como uma primeira aproximação, vamos alterar o valor de “10000.0” para “100000.0”; não alteraremos as demais opções.
Pressionado “OK”, a rotina será aplicada novamente, e obteremos nossa nova rede de drenagem:
Com a rede de drenagem gerada, podemos passar para o próximo passo:
Gerar as sub-bacias hidrográficas:
Acessamos novamente a ferramenta Sextante: SEXTANTE > Basic hydrological analysis > Watersheds
Configurando a ferramenta: na aba “Parameters”, seção “Inputs – Raster layers”, em “Elevation” selecionamos a camada raster do MDT processado (sem depressões); em “Chanel network” selecionamos a camada da rede de drenagem que geramos no passo anterior; na seção “Options”, em “Minimum watershed size [cells]” podemos definir o tamanho mínimo, em células, que a sub-bacia pode ter. Neste caso, deixamos o valor padrão (“0”); Na seção “Outputs”, definimos o nome do arquivo e o caminho onde ele será salvo. Na aba “Output region”, deixamos selecionada a opção “Fit to input layers”.
Ao clicarmos em “OK”, seremos apresentados ao nosso resultado final: um arquivo raster representando todas as sub-bacias hidrográficas da nossa área de estudo.
Na próxima imagem podemos conferir a rede de drenagem sobreposta às sub-bacias hidrográficas:
Para os próximos passos no trabalho de delimitação das MBH, precisaremos converter este arquivo raster em um arquivo vetorial:
Vetorizar as sub-bacias hidrográficas:
Pela última vez neste tutorial, vamos acessar a ferramenta Sextante: SEXTANTE > Vectorization > Vectorize raster layer (polygons)
Precisamos definir apenas dois parâmetros: em “Input layer”, selecionamos a camada raster que queremos vetorizar (a camada das sub-bacias hidrográficas que acabamos de gerar), e em “Outputs – Result[vector]” definimos o nome do arquivo e o caminho onde ele será salvo.
Novamente clicando em “OK” seremos apresentados ao arquivo vetorial simbolizando as sub-bacias da nossa área de estudo:
Como último passo desta parte do tutorial, vamos alterar a simbologia da camada de sub-bacias hidrográficas, para facilitar os trabalhos seguintes:
Aplicar simbologia nas sub-bacias hidrográficas:
Selecionamos no TOC a camada “Result” (gerada no passo anterior), e, clicando com o botão direito do mouse sobre ela, selecionamos no menu contextual que se abre a opção “Propriedades”. Na aba “Simbologia”, selecionamos Categorias > Valores únicos
Em “Campo de classificação” escolhemos o campo pelo qual iremos aplicar a simbologia (Watersheds, neste caso); em “Esquema de cores”, escolhemos um gradiente de cores que nos agrade, de preferência com uma grande variação de cores (selecionei o esquema “purple-red+stripes”); em seguida, clicamos em “Adicionar todos”. Aparecerá a mensagem de alerta: “mais de 100 símbolos não contribuem para uma clara informação em um mapa”:
Podemos clicar em “Yes”, pois neste caso o que queremos é apenas facilitar a diferenciação das diferentes áreas.
Clicando em “Aplicar” teremos um “preview” e, se o resultado nos agradar, podemos clicar em “Aceitar”. Seremos então apresentados ao nosso arquivo vetorial, já com a simbologia aplicada:
Com isto terminamos esta terceira parte do nosso tutorial sobre delimitação de Microbacias Hidrográficas com o gvSIG. Na próxima (e última) parte iremos finalmente selecionar as sub-bacias que compõe a nossa MBH, e executar os procedimentos que nos permitirão delimitá-la.
Tags: geoprocessamento, geoprocessos, gis, gvSIG, MDT, sextante, SLGeoTbFaz, tutorial
Delimitação de Microbacias Hidrográficas com o gvSIG: Parte II
Buenas, pessoal!
Estamos de volta com a segunda parte do tutorial de delimitação de Microbacias Hidrográficas (MBH) com o gvSIG. Para darmos continuidade precisaremos do arquivo shape contendo as curvas de nível da nossa área de interesse, que foi obtido no final da primeira parte deste tutorial:
Passaremos agora a gerar o modelo digital do terreno a partir destas curvas de nível.
Rasterização das curvas de nível:
Como primeiro passo, precisamos transformar os vetores em um arquivo raster. Para tanto, acessamos novamente a ferramenta Sextante: SEXTANTE > Rasterization and interpolation > Rasterize vector layer
Na janela de configuração da ferramenta que se abre vamos alterar os parâmetros da primeira aba (“Parameters”): na seção “Inputs – Vector layer”, em Vector Layer selecionamos a camada de entrada, que nesse caso é a camada que contém o recorte das curvas de nível; em Field, precisamos definir qual o campo da tabela contém os dados de altitude (cota) dos vetores que, no nosso caso, está em “CODIGO”; na seção “Outputs”, definimos o arquivo em que será salvo o resultado da operação. Deixei marcada a opção de salvar para um arquivo temporário, mas podemos selecionar o caminho e definir o nome para o arquivo se quisermos salvá-lo.
Na aba “Output region” vamos selecionar a opção “Use extent from layer”, selecionando em seguida a camada do recorte das curvas de nível como base. Em seguida, alteramos a opção “Cell size” para o valor “20.0”, e clicamos em “OK”.
Será processada a rasterização da camada de vetores, e no final obteremos um arquivo raster equivalente ao arquivo vetorial das curvas de nível:
Como podemos notar, temos duas situações neste arquivo: pixels da imagem onde estão as curvas de nível contém informações da altitude das mesmas (cotas), enquanto que nas áreas pretas da imagem estão pixels que não contém informações. Precisamos preencher esses “vazios”, de forma que cada pixel da imagem contenha uma informação de altitude, através de um processo de interpolação. Usaremos outra rotina do Sextante para preencher as células sem dados
Preenchendo as células sem dados:
Voltamos a abrir o Sextante: SEXTANTE > Basic tools for raster layers > Void Filling
Na janela de opções da ferramenta que é aberta, precisamos apenas conferir se em “Layer” está selecionada a camada que foi rasterizada no passo anterior, e podemos deixar o valor default de “0.1” em “Tension thershold”. Em “Outputs – Filled layer[raster], podemos definir o nome e o caminho onde o arquivo gerado será salvo:
Após clicarmos em “OK”, o arquivo raster será processado pela rotina, e teremos no final um arquivo onde cada célula (pixel) contém uma informação de altitude (cota), representando assim o Modelo Digital do Terreno (MDT):
Eliminando as depressões:
Voltemos à nossa ferramenta Sextante: SEXTANTE > Basic hydrological analysis > Sink filling
Novamente, na janela da ferramenta que é aberta, vamos definir alguns parâmetros: em “Input – Raster layers”, vamos tomar o cuidado de observar se está selecionada a camada raster gerada no passo anterior (rasterizada e preenchida); em “Min. angle between cells [deg]” podemos deixar o valor default de “0.01” e, como sempre, em “Outputs – Preprocessed[raster]”, definiremos o nome e o caminho onde será salvo o arquivo que será gerado pela rotina. É importante que salvemos este arquivo, pois o mesmo será utilizado para os procedimentos subsequentes.
Após clicarmos em “OK” será iniciado o processamento. E aqui cabe uma ressalva importante: esse processo é demorado! Para fins de comparação, o processo demorou 50 minutos em um computador com processador Intel Core 2 Quad e 8 Gb de RAM. Portanto, tenha paciência, saia para fazer um lanche, e aguarde o término do processamento!
Finalizado o processamento seremos apresentados ao resultado final. Aparentemente, não há diferenças entre esse e o arquivo anterior, mas agora temos certeza que todas as depressões do terreno foram eliminadas.
Terminamos aqui a segunda parte deste tutorial. Na próxima parte estaremos trabalhando com a geração da camada de acúmulo de fluxo, a geração da rede de drenagem e, finalmente, a geração das sub-bacias hidrográficas. Aguardem!
Tags: geoprocessamento, gis, gvSIG, geoprocessos, MDT, sextante, SLGeoTbFaz, tutorial
Delimitação de Microbacias Hidrográficas com o gvSIG: Parte I
Buenas, pessoal!
Recentemente tive que lidar no meu trabalho com o desafio de delimitar uma microbacia hidrográfica (MBH, de agora em diante), pois precisava conhecer qual seria a área abrangida por tal MBH, quais os moradores que faziam parte desta MBH, etc. Digo desafio porque nunca havia realizado tal procedimento com o gvSIG. Nesta série de artigos venho compartilhar os procedimentos que adotei, pois certamente poderão ajudar outros usuários. Além disso, esse é mais um artigo que pode ser enquadrado na Série #SLGeoTbFaz… 😉
Antes de começar, gostaria de ressaltar que praticamente toda a sequencia de procedimentos que eu segui está descrita na apostila “Introdução ao gvSIG portable v1.11 SIG-RB, Módulo Básico”, disponibilizado de forma aberta pelo pessoal do Sistema de Informações do Ribeira de Iguapé e Litoral Sul. A apostila pode ser baixada gratuitamente mediante um rápido cadastro na área de capacitação do site. Feitas estas primeiras considerações, vamos ao tutorial, propriamente dito:
Nesta primeira fase, vamos preparar o ambiente para o trabalho que virá a seguir. Os dados que iremos utilizar foram obtidos do DVD “Base cartográfica vetorial contínua do Rio Grande do Sul – escala 1:50.000”, produzido pela UFRGS – IB. Centro de Ecologia – Laboratório de Geoprocessamento, e pode ser adquirido no site da Editora UFRGS. Vale cada centavo investido!
Com o gvSIG aberto, vamos criar uma nova Vista, definindo nas propriedades da mesma o Sistema de Coordenadas EPSG 32722 (WGS 84 / UTM zona 22S). Abrimos a Vista e inserimos o arquivo shape do estado do Rio Grande do Sul, já reprojetado para o Sistema de Coordenadas adotado.
Com a ferramenta de seleção, selecionamos o município que será trabalhado. No caso, o município de Seberi, no noroeste gaúcho:
Com a área de interesse selecionada, vamos no menu Camada > Exportar para > SHP, e exportamos a feição selecionada para um novo arquivo shape, com o qual iremos trabalhar. Salvo o arquivo, respondemos “sim” à mensagem que nos pede se queremos inserir o novo shape na Vista. Na próxima figura podemos conferir o shape dos limites do município, após clicarmos com o botão direito do mouse no nome da camada no TOC e, no menu contextual que se abre, selecionar “Zoom na camada”:
Como estaremos trabalhando com dados em uma escala maior, vamos criar um buffer para garantir que todos os detalhes que queremos trabalhar estarão incluídos. Para tanto, acessamos o menu Vista > Gestor de geoprocessos.
Na árvore de seleção de geoprocessos à esquerda da janela aberta selecionamos Geoprocessos > Análises > Proximidade > Buffer (área de influência) e clicamos em “Abrir geoprocesso“.
Na janela que se abre precisaremos definir alguns dados: na “Camada de entrada”, selecionamos o shape do limite do município; selecionamos a opção “Buffer definido por uma distância”, definindo o valor de 500 m; em “Criar Buffer” selecionamos a opção “Fora do polígono”; em “Número de anéis concêntricos” deixamos o valor “1” e, finalmente, definimos um arquivo onde o buffer resultante será salvo, clicando em “Abrir” e definindo o nome do arquivo e selecionando o caminho onde o mesmo será salvo.
Com todas as opções definidas clicamos em “Aceitar” e será gerado um shape com uma área de buffer externo de 500m ao redor do shape dos limites do município de Seberi:
Podemos agora descartar as camadas que não serão mais utilizandas, deixando apenas a camada gerada pelo geoprocesso Buffer: selecionando-as no TOC, clicamos com o botão direito do mouse e escolhemos a opção “Remover camadas” no menu contextual que aparece.
Precisamos agora definir um retângulo envolvente que englobe toda a área do município. Para tanto, clicamos em SEXTANTE > Toolbox e, na janela que se abre, selecionamos Sextante > Tools for vector layers > Bounding Box:
Na janela da ferramenta “Bounding Box” que é aberta, definimos na aba “Parameters”, em “Layers”, a camada que será utilizada para gerar o retângulo envolvente (no caso, a camada do buffer), e definimos também o arquivo que será gerado. Clicando em “OK” a rotina será aplicada, e obtemos um shape com o retângulo envolvente:
Definida a nossa área de interesse podemos inserir no projeto a camada com o shape das curvas de nível da região, tomando o cuidado de selecionar o arquivo com a projeção do projeto:
Vamos agora fazer um recorte da área que nos interessa. Para tanto, vamos no menu Vista > Gestor de geoprocessos e na janela do gestor de geoprocessos selecionamos Geoprocessos > Sobreposição > Recortar, clicando em seguida em “Abrir geoprocesso”.
Na janela de opções da ferramenta Recortar que se abre, selecionamos as opções: em “Camada de entrada” escolhemos a camada das curvas de nível que queremos recortar; em “Camada de recorte” selecionamos a camada do retângulo envolvente que criamos, que é a nossa área de interesse e, finalmente, em “Camada de saída” definimos o arquivo que será gerado.
Clicando em “Aceitar” o geoprocesso será realizado, resultando em um shape contendo as curvas de nível apenas da área que nos interessa:
Na próxima figura temos o nosso arquivo shape final, contendo apenas as curvas de nível da região do município gaúcho de Seberi, que servirá de base para as próximas fases do tutorial. Se, por um acaso, você gerou o arquivo apenas na memória, poderá salvar agora o resultado obtido selecionando a camada no TOC e clicando no menu Camada > Exportar para > SHP.
Não tenho como disponibilizar o arquivo shape das curvas de nível do estado do Rio Grande do Sul, até por questões autorais, mas creio que não haverá problemas maiores em disponibilizar apenas o arquivo shape final obtido, para que os nossos leitores possam acompanhar os próximos passos do tutorial (se houver alguma infração, peço que os responsáveis entrem em contato, que retirarei o arquivo).
Na próxima parte da série abordaremos a geração do Modelo Digital de Terreno no gvSIG, feito a partir das curvas de nível que obtemos neste tutorial. Até breve!
Tags: geoprocessamento, gis, gvSIG, MDT, geoprocessos, sextante, SLGeoTbFaz, tutorial
Visualizar orientação da declividade no gvSIG (Série #SLGeoTbFaz)
Buenas, pessoal!
Bastante atrasado, mas antes tarde do que nunca! Por uma série de motivos que não precisam ser explicitados por aqui, acabei atrasando bastante o “reply” da postagem da Série “Quebrando Tabus – Software Livre Também Faz”, iniciada pelo nosso amigo Luís Lopes, que mantém o blog Geotecnologias Luís Lopes (@geoluislpes). O desafio da vez foi visualizar orientação da declividade, sendo que o Luis explicou os procedimentos utilizando o Quantum GIS, que logo foi apresentado também os utilzando o SAGA GIS, pelo Esdras Andrade (@geoparalinux), no seu blog Geoprocessamento para Linux.
Chega de enrolação, e vamos ao procedimento para visualizar a orientação da declividade utilizando o gvSIG:
Vamos utilizar o mesmo SRTM que foi utilizado nos outros tutoriais, e que pode ser baixado do site Brasil em Relevo, da Embrapa Monitoramento por Satélite. No gvSIG, criaremos uma nova Vista, tendo o cuidado de selecionar o Sistema de Coordenadas WGS84 (EPSG 4326) nas Propriedades da Vista, pois é o Sistema de Coordenadas em que o SRTM está.
Criada a nova Vista, podemos abrí-la e inserir o SRTM em uma nova camada (Vista > Adicionar Camada, lembrando de selecionar “raster” em “Tipo de arquivo”).
Inserido o SRTM, vamos abrir a ferramenta SEXTANTE, através do ícone
(SEXTANTE Tool Box). Em seguida, vamos abrindo a “árvore” de scripts: SEXTANTE > Geomorphometry and terrain analysis > Aspect, para selecionarmos a ferramenta que iremos trabalhar.
Com um duplo clique em Aspect abrirá o diálogo de opções da ferramenta, onde na primeira aba (Parameters) poderemos selecionar a camada que será utilizada para gerar a visualização da declividade (em Elevation), se as unidades estarão em radianos ou em graus (Units), o método que será utilizado para a geração (Method) e também selecionar o arquivo de saída, com o resultado (deixei marcado para gerar o arquivo na memória, mas poderíamos designar uma arquivo onde salvar o resultado):
Na segunda aba, podemos selecionar a região que será utilizada para a visualização/geração do resultado. Deixei marcada a opção de utilizar os parâmetros de entrada, mas poderíamos determinar que fosse utilizado uma região definida pelo usuário, ou selecionarmos uma Vista, para que fosse utilizada a sua extensão, ou ainda selecionarmos uma camada para o mesmo fim:
Ao clicarmos em “OK”, o SEXTANTE irá processar o SRTM com os parâmetros selecionados e, em seguida, seremos apresentados ao resultado: uma imagem… totalmente branca! (!!!!!!!!)
Calma! Não entre em desespero! Não aconteceu nada de errado, muito pelo contrário. As informações que queremos estão todas lá, basta alguns “pequenos ajustes” 😉
Com o botão direito do mouse, vamos ao TOC, e clicamos sobre a nova camada gerada, e em seguida selecionamos “Propriedades do Raster”, no menu contextual que aparece:
Na janela que se abre, vamos na aba Realce. Normalmente está selecionada apenas a opção “Ativar”:
Basta selecionarmos também a opção “Remover extremos” e voilà! Finalmente podemos visualizar a declividade da região do nosso SRTM:
Para efeito de comparação, apresento abaixo o arquivo SRTM original e a visualização da orientação da declividade, obtida após o processamento:
Neste momento, por pura falta de tempo, vou ficar devendo a visualização em modo colorido. Prometo completar o artigo mais tarde. Para os apressadinhos, deixo a dica de que é preciso usar a rotina de “Tabelas de Cor”:
Como próximo passo, vamos aplicar agora um esquema diferente de cores, para ressaltar a visualização da declividade. Para tanto, com a camada “Aspect” gerada pelo SEXTANTE selecionada no TOC, vamos acessar as ferramentas raster; primeiro selecionamos o ícone “Camada Raster” e, em seguida, no ícone ao lado, selecionamos a opção “Tabelas de cor”:
Abrirá a janela “Tabelas de cor”, onde poderemos fazer o ajuste que queremos.
Em primeiro lugar, precisamos clicar em “Ativar tabelas de cor” ([1], na figura abaixo) e, em seguida, escolher o estilo de cores que iremos aplicar, na lista disponível em “Biblioteca” ([2]). Selecionei o estilo “Mac-style”, que é o que mais se aproxima ao proposto pelo Luís. Por último, devemos alterar o valor de “Mínimo” ([3]), que está negativo, para zero e, em seguida, clicar em “aceitar”.
Na próxima figura temos o resultado final, já com o esquema de cores aplicado:
Por enquanto é isso, pessoal! Se alguém quiser se aprofundar um pouco mais na teoria, recomendo a leitura dos dois artigos “irmãos” que foram citados anteriormente. E, para você acompanhar a Série “Quebrando Tabus” no twitter, basta fazer uma pesquisa pela hashtag #SLGeoTbFaz 😉
Em tempo: quero registrar aqui que esse tutorial não teria saído se não fosse o apoio e as dicas do Carlos, da Gauss (@gaussgeo) e do Gilberto, do SIG da Bacia Hidrográfica do Ribeira de Iguape e Litoral Sul.
Tags: geoprocessamento, gis, gvSIG, sextante, SLGeoTbFaz, tutorial, geoprocessos
Geração de Pontos Aleatórios em Polígonos no gvSIG
Buenas, retornamos para mais um artigo da Série “Quebrando Tabus: SL também faz!“, lembrando que esta série de artigos foi uma idéia do Luís Lopes (@geoluislopes), e até o momento está contando também com a adesão dos geoblogueiros Anderson Medeiros (@ClickGeo), Esdras Andrade (@geoparalinux) e do Sadeck (@sadeckgeo), que vem reproduzindo os artigos nos mais diversos Softwares Livres de Geo, comprovando que é possível realizar nesses programas atividades de geoprocessamento que antes só eram encontradas nos softwares proprietários.
Antes de começar com o tutorial propriamente dito, vamos a um pequeno esclarecimento: como o gvSIG também possui embutida a extensão SEXTANTE, o procedimento que iremos seguir é o mesmo do tutorial feito pelo Anderson Medeiros, “Kosmos GIS: Geração de Pontos Aleatórios em Polígonos“. Em outro tutorial, que farei em breve, demonstrarei como utilizar os algoritmos disponibilizados pelo GRASS, que também podem ser rodados no gvSIG através da extensão SEXTANTE.
Primeiramente, baixe o arquivo shapefile que será usado neste tutorial, contendo os limites de 5 municípios da região do Piemonte da Diamantina – Bahia. Em seguida, abra o gvSIG e crie uma nova vista, com o sistema de coordenadas do shape, WGS 84 (EPSG 4326). Abra a vista e insira o shapefile que foi baixado. Deveremos ter uma tela semelhante a esta:
Em seguida, vamos acessar a extensão SEXTANTE. Para isso, clique no ícone Sextante Toolbox, localizado na barra de ícones:
Abrirá a janela do SEXTANTE:
Navegue na árvore de Algoritmos: SEXTANTE > Tools for polygon layers > Adjust n point to polygon
Com um clic duplo no algoritmo, abre-se a janela de configuração do mesmo, onde podemos ajustar os parâmetros:
Na parte referente aos parâmetros de entrada, selecionamos a camada que contém os polígonos onde a operação será realizada (piemont_chapada.shp, neste caso). Nota-se ainda que poderíamos criar os pontos baseados em um valor existente em um campo da tabela de atributos do shape.
Nas opções, digitamos o número de pontos por polígono que queremos que seja gerado, e o método (“random”, para que os pontos sejam aleatórios).
Nos parâmetros de saída, podemos escolher se queremos gerar a nova camada como um arquivo temporário, ou se queremos salvar para um novo arquivo.
Ao clicarmos em “OK”, o SEXTANTE irá executar o algoritmos com os parâmetros que foram selecionados e irá inserir a camada criada na vista ativa. Ao fecharmos a janela do SEXTANTE veremos o nosso resultado final:
Lembre-se de salvar a nova camada, selecionando-a no TOC e, em seguida, clicando em Camada > Exportar para… > SHP.
Por enquanto é isso, pessoal. Em breve estarei postando o artigo que executa uma função semelhante, mas utilizando os algoritmos do GRASS dentro do gvSIG.
Em tempo: para o pessoal que acompanha a Série “Quebrando Tabus: SL também faz!” pelo twitter, criamos uma hachtag especial para as twittadas sobre o assunto: #SLGeoTbFaz. Assim, fica mais fácil de acompanhar as postagens e de realizar buscas sobre o assunto.
Tags: geoprocessamento, gis, gvSIG, sextante, SLGeoTbFaz, tutorial
Geoprocesso Dissolver no gvSIG
Buenas, marcando o retorno dos tutoriais de gvSIG aqui no blog iDea Plus Geo, hoje eu vou aproveitar a carona com a postagem do Luís Lopes, responsável pelo blog Geotecnologias Luís Lopes. Hoje ele começou uma nova série de postagens, com o título “Quebrando tabus: SL também faz!”, mostrando que ferramentas presentes em software proprietário (no caso o ArcGIS, que é o mais utilizado) também estão disponíveis em softwares livres com a mesma eficiência.
O artigo de lançamento da série foi “Série “Quebrando tabus” | Ferramenta Dissolver no QGIS“. O que eu estou propondo aqui é realizar no gvSIG o mesmo exercício que foi feito no QuantumGIS, mostrando assim mais uma alternativa de software livre. Vamos ao tutorial:
Em primeiro lugar, baixe o arquivo shp que vamos usar neste tutorial, contendo os municípios do estado da Bahia. Descompacte os arquivos na sua pasta de trabalho.
Em seguida, abra o gvSIG. Crie uma nova vista, e, nas propriedades, altere a projeção da vista para EPSG 4170 (SIRGAS, para estar condizente com a projeção do arquivo shp que iremos trabalhar. Se quisermos trabalhar em outro sistema de projeção, necessitaremos realizar a reprojeção do arquivo shp). Abra a vista para começarmos o trabalho propriamente dito.
Estando com a vista aberta, vamos inserir o arquivo shape dos município baianos. Para tanto, clique no ícone de adicionar camadas, ou faça o caminho: Menu Principal > Vista > Adicionar camada. Na janela que se abre, clique em “Adicionar”, escolha a pasta onde você salvou o arquivo desejado (observe se está selecionado “gvSIG shp driver” no tipo de arquivo a abrir), selecione o arquivo e clique em “Aceitar”. O gvSIG adicionará o arquivo shape para a área de trabalho da vista, e deveremos ter algo parecido com a seguinte tela:
O geoprocesso Dissolver é aplicado quando queremos agregar feições com base num mesmo atributo. Neste caso, vamos gerar um novo shape, onde iremos agregar os municípios da Bahia segundo a sua divisão por Mesoregiões. O atributo pelo qual vamos agregar precisa fazer parte da tabela de atributos do shape. Para verificar isso, podemos seguir o caminho: Menu Principal > Camada > Ver tabela de Atributos, ou clicar no ícone correspondente.
Agora, iremos aplicar o geoprocesso propriamente dito: Clicamos em Menu Principal > Vista > Gestor de Geoprocessos. Irá abrir a janela do Gestor de Geoprocessos, onde deveremos navegar na árvore de geoprocessos à esquerda, até encontrarmos o geoprocesso “Dissolver” (Geoprocessos > Análises > Agregação > Dissolver).
Na parte direita da tela aparecerá uma descrição deste geoprocesso. Clicando em “Abrir Geoprocesso”, aparecerá a janela de Ferramentas de análise. Devemos selecionar na “Camada de entrada” a camada a partir da qual iremos realizar o geoprocesso de dissolver (caso queira dissolver limites a partir de uma seleção, marque a opção “Usar somente os elementos selecionados”, tendo selecionado previamente os elementos). Em “Campo para dissolver” devemos selecionar o campo que será utilizado para realizar a agregação, que neste caso, é o campo “MESOREGIÃO”. No campo “Camada de saída”, clique em “Abrir” e dê um nome e um destino ao novo arquivo que será gerado. Após isto, clique em “Aceitar”.
O gvSIG fará o processamento e adicionará automaticamente a camada resultante na vista ativa. Podemos verificar na próxima imagem o processamento finalizado, com o estado da Bahia dividido em suas Mesoregiões, a partir do shape de municípios:
E assim terminamos de estudar mais um geoprocesso disponível no gvSIG. Por enquanto é isso pessoal!
Tags: geoprocessamento, geoprocessos, gis, gvSIG, SLGeoTbFaz