iDea Plus Geo

Geo ideias em formato aberto

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

April 11, 2013 — Eliazer Kosciuk

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

Tags: gvSIG, geoprocessamento, jython, python, SLGeoTbFaz, calculadora-de-campos, tutorial