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)!

Comunidades gvSIG brasileiras: espaços onde compartilhar conhecimento

Buenas, pessoal!

Como sempre, ando meio sumido, mas volta e meia eu “apareço”. (BUUU :P)

Hoje estou aproveitando para divulgar alguns novos espaços para a comunidade gvSIG brasileira (e outros nem tão novos, mas pouco divulgados…):

Vou começar com uma comunidade que criei a pouco tempo: gvSIG Brasil no Google+

Se você se inscrever por lá, tenha um pouco de paciência para receber a liberação para acesso, porque eu não tenho acesso ao G+ no trabalho… se alguém se voluntariar a ajudar no gerenciamento desta comunidade, entre em contato comigo que eu providencio os ajustes.

Outra comunidade brasileira do gvSIG foi criada para os usuários do Facebook (essa não fui eu…). Se você está no Facebook e quiser participar, acesse o grupo gvSIG Brasil.

Temos também a comunidade gvSIG no GeoConnect do Mundo Geo. Muito embora não seja uma comunidade específica para os brasileiros, são aceitas postagens em qualquer língua.

Divulgo ainda, para quem não conhece, a Lista de emails da Comunidade gvSIG-BR. Esta é a lista oficial da comunidade de usuários brasileiros, e é o espaço destinado para tirar dúvidas, divulgar trabalhos e estimular a adoção do gvSIG aqui no Brasil.

É isso aí, pessoal. Espaço para divulgar e compartilhar conhecimento é que não falta. O que falta são pessoas dispostas a criar e, principalmente, compartilhar o conhecimento!

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.

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:

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 “paradas_bus.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:

voronoi00

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“:

voronoi01

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:

voronoi02

 Como “Camada de entrada” vamos selecionar o shape “paradas_bus.shp“; automaticamente o gvSIG 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:

voronoi03

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:

voronoi04

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!

Instalação da extensão de topologia no gvSIG 1.12

Estou acompanhando a série de artigos sobre Diagrama de Voronoi que o Anderson Medeiros está publicando em seu blog, e um dos artigos explica como efetuar essa operação no ArcGIS. É uma boa hora para retomarmos a série #SLGeoTbFaz. No entanto, ao abrir o gvSIG para fazer o procedimento, notei falta da opção para elaborar o Diagrama de Voronoi e, após uma breve pesquisa, descobri que seria necessário instalar a extensão de Topologia para habilitar essa função no gvSIG. Veremos agora como proceder para instalar a extensão de topologia no gvSIG, nas versões 1.12 e superiores (nas versões 1.11 e anteriores o procedimento é um pouco diferente, e será abordado ao final deste artigo). Em primeiro lugar, precisamos acessar o Gestor de Complementos, que a partir desta versão do gvSIG já está totalmente funcional. Para tanto, acessamos essa opção no menu Ferramentas > Gestor de Complementos. Ao clicarmos nesta opção, nos depararemos com a seguinte tela (clique na figura para abrir em tamanho maior):

complementos01

A primeira opção é utilizada no momento da instalação do gvSIG, a segunda é utilizada quando fazemos a instalação a partir de um arquivo disponibilizado para este fim, e a terceira opção, que é a que iremos usar, é utilizada quando queremos instalar um complemento (uma extensão do gvSIG, neste caso), a partir de um repositório do gvSIG, na web. Note que o campo logo abaixo já está preenchido com o link do repositório que iremos utilizar. Clicamos no botão “Next” para irmos à próxima tela: complementos02 No lado direito desta tela veremos uma lista com todos os complementos que estão disponíveis para instalação a partir deste repositório. Vamos descer a lista até encontrarmos a extensão “org.gvsig.topology“, que é a que nos interessa neste momento. Selecionado o complemento que queremos instalar, clicamos novamente no botão “Next“.

complementos03

Neste momento, aparecerá uma janela alertando para o fato de que selecionamos uma versão que está em desenvolvimento ou não é oficial. Clicamos em “Continue” para seguirmos na instalação.

complementos04

Neste momento, voltaremos à janela do Gestor de complementos. Clicamos no botão “Iniciar download” para iniciarmos o processo:

complementos05

Dependendo da conexão, esse passo pode demorar um pouco, pois o programa entrará em contato com o servidor do repositório, e fará a “negociação” para iniciar o download:

complementos06

Quando o download do arquivo começa, podemos acompanhar o seu avanço.

complementos07

Terminado o download precisamos clicar novamente no botão “Next“, para seguir para a tela de instalação propriamente dita:

complementos08

Terminada a instalação do complemento que selecionamos, o botão “Finalizar” ficará disponível, bastando clicar no mesmo para terminarmos o processo.

complementos09

 Por último, somos alertados de que precisamos reiniciar o gvSIG para que as mudanças sejam aplicadas, isto é, neste caso, para que a extensão de Topologia esteja funcional no gvSIG. Pode até parecer um pouco complicado em um primeiro momento, em parte porque eu detalhei bastante o processo, mas é algo relativamente fácil e certamente menos complicado do que o processo de instalação de complementos que existia nas versões anteriores. Por sinal, para quem estiver trabalhando com versões anteriores a 1.12 do gvSIG, será necessário instalar no modo “antigo”: Acesse a página de downloads das extensões (http://www.gvsig.org/web/projects/gvsig-desktop/devel/topology), escolha a versão referente ao seu sistema operacional, e execute o arquivo que baixar. Se você estiver trabalhando com o Linux, poderá se basear em um dos tutoriais que eu já havia disponibilizado em outras ocasiões sobre a instalação de extensões no gvSIG (aqui ou aqui).

Neste artigo apresentamos o Gestor de Complementos do gvSIG, uma ferramenta importante e que passará a fazer parte do nosso modo de trabalhar com o programa, pois vem substituir o processo antigo, permitindo que não nos preocupemos com qual a sistema operacional e/ou versão do programa estamos trabalhando, ou com qual o local onde o gvSIG está instalado, pois o Gestor de Complementos gerencia todas estas informações para nós, tornando o processo transparente.

No próximo artigo veremos como aplicar o Diagrama de Voronoi com o gvSIG, utilizando a extensão de Topologia do gvSIG. Até lá!

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í!  😉

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!

Nova atualização da tradução para o pt-br do gvSIG

Buenas, pessoal!

Enquanto não sai do forno o primeiro artigo deste retorno vou deixar um “brinde” para os usuários brasileiros de gvSIG: Portuguese_-_Brazil_(pt_BR). Essa é a última revisão que eu fiz, visando a atualização para a versão 1.12 do gvSIG.

Quando a versão 1.12 do gvSIG for lançada, já deverá vir com essa atualização da tradução. No entanto, se você ainda está utilizando uma versão anterior e quiser usar a tradução atualizada, basta baixar o arquivo e fazer a instalação, conforme já explicamos várias vezes aqui no blog (para quem não lembra, basta seguir os passos deste tutorial ou deste outro, com um vídeo explicando o processo).

Em breve estarei postando novos artigos… aguardem!