5 votos

¿Existe una función Log o Ln en la calculadora de campos de QGIS?

No encuentro ninguna forma de tomar el logaritmo (natural o base 10) de un campo en QGIS. He llegado a la calculadora de campos pero no hay un botón para el logaritmo y parece que no puedo encontrar ninguna fórmula que funcione.

Actualmente estoy usando la versión 1.4.0 en linux. No pude encontrar nada en las notas de la versión acerca de este ser añadido desde entonces, pero ¿alguien sabe si es en una versión más reciente?

Muchas gracias.

0 votos

No está en la lista de funciones actualmente admitidas, pero si abre una solicitud para añadirla en hub.qgis.org/projects/quantum-gis Seguro que alguien puede añadirlo por ti.

0 votos

@NathanW o si pueden añadir un analizador de ecuaciones. Me encantaría una función que hiciera lo siguiente Promedio(algún_campo_1, algún_campo_2, ...) / sumof_elements(alguna_fila1) * sumof_elements(alguna_fila2). Donde el promedio podría estar en los campos de la misma línea que el valor que se calcula.

0 votos

Ya existe un analizador de ecuaciones/expresiones (véase qgis.org/api/classQgsExpression.html ). Sólo es cuestión de ampliarlo para incluir las funciones. También he pensado en añadir soporte de Python como Arc a la calculadora de campo, pero simplemente no tengo tiempo en este momento.

4voto

nd. Puntos 231

Funciones solicitadas añadidas a QGIS

http://hub.qgis.org/issues/4365#note-1

Así es como funciona (el proyecto QGIS)... sólo hay que preguntar, si tiene sentido probablemente se añadirá en poco tiempo ;)

0 votos

3voto

Ronnie Overby Puntos 246

Como solución a la falta de esto en QGIS puedes abrir el archivo .dbf de tu conjunto de archivos shapefile (exporta primero a shapefile si estás usando un formato diferente) y abrirlo en Libre Office Calc (u openoffice, MS Excel 97/2003) para calcular el campo en una nueva columna con una de las siguientes fórmulas:

=LOG(Number,Base)
=LOG10(Number)
=LN(Number)

Puede utilizar prácticamente todas las funciones de la hoja de cálculo de esta manera, siempre que el número de funciones no llegue a millones y no reordene o elimine ninguna fila.

Asegúrese de que la cabecera de la columna es compatible con DBF

  1. campo Nombre (10 caracteres como máximo)
  2. tipo de datos (probablemente N para los numéricos o C para las cadenas de caracteres)
  3. longitud del campo (incluidos los decimales)
  4. número de decimales (opcional para N)

Ejemplo:

VALUE_LOG,N,24,12

Haga una copia de seguridad del .dbf original antes de hacer cualquier guardado y guarde/sustituya el abierto como un archivo dBase (.dbf).

Un archivo .dbf sólo puede ser abierto para su edición por un programa a la vez, así que asegúrese de descargar el archivo shape primero en qgis antes de cargarlo en calc y viceversa.

0 votos

Gracias, Max. Esta solución la encontré ayer con OpenOffice Calc (Libre parece menos estable por alguna razón en mi máquina) pero en cualquier caso, funcionó perfectamente. No sabía cómo estructurar las cabeceras de las columnas (lo que ahora explica tu post), así que primero creé las nuevas columnas en qGIS y luego sólo cambié los valores en OpenOffice. Gracias por la ayuda.

0 votos

P.D. Para los futuros lectores, también es importante comprobar los valores cero, que son indefinidos para el logaritmo; así que algo como =IF(REF=0;-1;LN(REF)) puede ser apropiado cuando REF es la celda sobre la que se está calculando el logaritmo y -1 es algún valor especial que se quiere asignar para los valores cero.

2voto

nd. Puntos 231

Esta es la lista de funciones reales que soporta la calculadora de campos de QGIS.

Si encuentra que falta algo obvio, como la función de registro, por favor presente un ticket de solicitud de características en el rastreador de errores de QGIS, ejemplo

http://hub.qgis.org/issues/4365

Funciones de la calculadora de campos de QGIS:

'cadena' valor literal de la cadena

número

NULL valor nulo

sqrt(a) raíz cuadrada

sin(a) seno de a

cos(a) coseno de b

tan(a) tangens de a

asin(a) arcussinus de a

acos(a) arcuscosinus de a

atan(a) arcustangens de a

to int(a) convierte la cadena a en un entero

to real(a) convierte la cadena a en real

to string(a) convertir el número a en cadena

lower(a) convierte la cadena a en minúsculas

upper(a) convierte la cadena a en mayúsculas

length(a) longitud de la cadena a

atan2(y,x) arcustangens de y/x utilizando los signos de los dos argumentos para determinar el cuadrante del resultado.

replace(a,replacethis,withthat) reemplazar esto por aquello en la cadena a

regexp_replace(a,replacethis,withthat) reemplaza la expresión regular replacethis con withthat en la cadena a

substr(a,from,len) len caracteres de la cadena a empezando por from (el índice del primer carácter es 1)

a || b concatenar cadenas a y b

$rownum número fila actual

$área área del polígono

$perímetro del polígono

$longitud del área de la línea

$id feature id

$x x coordenada del punto

$y y coordenada del punto

xat(n) Coordenada x del enésimo punto de una línea (los índices comienzan en 0; los valores negativos se aplican al último índice)

yat(n) coordenada y del enésimo punto de una línea (los índices comienzan en 0; los valores negativos se aplican al último índice)

a ^ b a elevado a la potencia de b

a * b a multiplicado por b

a / b a dividido por b

a + b a más b

a - b a menos b

+un signo positivo

-un valor negativo de a

0 votos

¡Gracias Giovanni! He creado una página wiki con una lista de todas estas funciones para futuras referencias: qgis.org/wiki/Lista_de_Funciones_de_Calculadora_de_Campos

1voto

Celso Puntos 66

Sospecho que va a ser duro porque tienes que escribir algo de código python.

Podrías escribir un plugin de python en el que puedas acceder a la tabla de atributos y utilizar cualquier función de python que quieras en la fijación de un valor de atributo.

O, en lugar de escribir un plugin, podrías ejecutar el código directamente en la consola de python. Esto debería ahorrarte algo de tiempo, pero si necesitas ejecutar esta función repetidamente un plugin es más eficiente a largo plazo.

Este es un enlace a la sección de acceso a las tablas de atributos del tutorial sobre plugins de python. Esta es la documentación para el Registro en python.

0voto

Xavier Nodet Puntos 2498

Estoy usando qgis 1.7 y parece que no hay una función de registro en el campo de expresión.

Puede intentar utilizar gvSIG. Tiene logaritmo natural en su campo de expresión.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X