Calculadora de Campo

263 views
Skip to first unread message

samir.rural

unread,
Jun 22, 2012, 3:05:32 PM6/22/12
to qgisb...@googlegroups.com
Boa tarde a todos,
Eu estou tentando formatar os dados da tabela de uma camada vetorial shp para poder  exibir a tabela diretamente no compositor de impressão. O formato que eu quero é:
ex.:
1.500,2350 ha (com ponto como separador de milhar, vírgula como separador de decimal, quatro casas decimais e representar a unidade "ha".
Na calculadora de campo eu crio uma coluna  (tipo de arquivo de saída número decimal (real)), espessura do campo de saída 20, precisão 4, usa a expressão:
$area / 10000
Com ela eu consigo o seguinte resultado 1500.235 (o zero não é representado);
Se eu uso:
$area / 10000 || ' ha'
Com essa expressão eu consigo o seguinte resultado:
1500.235 ha (o que já seria uma vantagem, mas quando eu salvo, ela me retorna zero para todas as células);
Se um uso a mesma expressão acima mas em uma coluna do tipo string ela me retorna
1500.235 ha (mas esse é um texto e não um número e mesmo assim me retorna sem as 4 casas decimais (zero não significativo) e sem o uso do ponto como separador de milhar e vírgula como separador de decimal).

Eu já tentei resolver abrindo a tabela no Calc LibreOffice, e alterar a formatação da coluna, também o título da coluna, isso usando a lógica do Calc, formatando as células como #.###,000# e também usando #.###,000# "ha" mas sem sucesso).

Sem essa forma de representar, na hora da impressão o trabalho não tem um bom acabamento. Eu poderia criar rótulos e digitar todos os valores como texto, no próprio modo de impressão, mas esse seria um trabalho braçal, carregar pedra no sol quente, são muitos dados e chance de erros desnecessários.

Se alguém souber uma forma de resolver isso eu agradeceria muito.




Ander

unread,
Jun 24, 2012, 6:40:56 PM6/24/12
to qgisb...@googlegroups.com
Olá,
Estou num pc sem o QGis pra testar agora, mas imagino que o que vc deseja não tem um solução pronta pra obter o resultado esperado.
Certa vez tbm precisei fazer algo semelhante, mas o jeito mesmo foi usar um campo string e depois de calculado editar para a forma desejada (eram poucos polígonos).
Agora lendo o seu "problema", pensei uma coisa. Criar mais duas colunas, uma extraindo a parte inteira, e outra a parte decimal. Numa terceira coluna do tipo texto, formataria a área para ser exibida, concatenando as duas colunas, algo como:
[col_int] || ',' || [col_dec] || ' ha'
O problema ainda seria com o separador de milhar. Mas pode de dar uma luz.

--
 
Anderson Roberto da Silva
Engenheiro Cartógrafo
Analista de Cartografia - Battistella Florestal




samir.rural

unread,
Jun 25, 2012, 11:37:51 AM6/25/12
to qgisb...@googlegroups.com
Bom dia,
Boas novas, não posso dizer que esta resolvido como eu imagino que seria o método mais fácil, ou seja utilizando apenas o qgis e a calculadora de campo, mas...

Eu já havia pesquisado algo nesse sentido, utilizando o a planilha do Calc do LibreOffice (me parece que no Excel não funciona), só não consegui achar novamente o blog (agradeço ao autor dele), e naquele caso o método não resolvia completamente o problema, enfim...

Nesse eu fiz o seguinte:

Abri o arquivo dbf usando o Calc (O arquivo não pode estar aberto no qgis e na planilha ao mesmo tempo) e no título da coluna que dividida em 4 partes separados por vígulas:

1º Nome da coluna;

2º Identificação do tipo de célula (se for texto ou número) sendo N para Número e C para texto;

3º A expessura do campo;

4º Número de casas decimais. (No caso de campo texto não há esse campo).

No meu caso ficou assim:
Título da coluna antiga:

Area,N,20,3

Titulo da coluna nova ou alterada:

Area,C,20

Na formação dos valores da coluna no calc eu usei #.###,0000" ha", depois salvei a formatação das células como número mesmo, mas quando ela e aberta no qgis ela é entendida como texto, isso por ter o "C" no título da coluna. Tentei salvar como texto no calc mas ele corta o zero e o ponto.

Bom, não inventei a roda, essa solução já está em um blog (quando eu achar novamente eu posto o link para dar os créditos). A questão fica parcialmente resolvida, porém a minha idéia é usar as ferramentas do qgis para resolver esse tipo de problema relativamente simples, mas que acabou virando um obstáculo. Quando eu propus essa forma de resolver o problema os outros que terão que usar o qgis como substituto de software pagos, tiveram isso como barreira "putz, muito complicado e...". A minha tentativa era resolver tudo via calculadora de campo, até ali não encontrei resistencia. A resistencia de mudança do pago para o livre é algo cultural, complicado de mudar, mas continuemos.

Eu não sei se a calculadora de campo utiliza apenas as expressões que existem no arquivo de ajuda, o que seria limitado, porque o banco sql tem uma "renca" de expressões para serem utilizadas, até mesmo para casos identicos a esse que eu descrevi, mas como sou ignorante no assunto sql eu não cosegui aplicar na calculadora de campo.
Nós que trabalhamos com esse tipo de demanda, entendemos que um simples ponto ou uma vígula podem dar de dor de cabeça, mas em geral, o resultado final será uma planta impressa, e pra esse tipo de material o acabamento é fundamental.

Obrigado Ander pela ajuda, com sua forma de juntar duas colunas em uma, isso me gerou outras idéias.
Vou continuar pesquisando essa Calculadora de Campo e se conseguir irei postar.
Reply all
Reply to author
Forward
0 new messages