4 votos

¿Cómo replicar la función trunc en QGIS?

He buscado un poco antes de hacer esta pregunta, pero no he encontrado la respuesta. ¿Existe una función Trunc en QGis? He intentado usar floor, pero no funciona (como yo quiero) si el número es negativo, por ejemplo:

Si

$x=-8.639

El suelo me dará

floor($x)=-9

Y lo que quiero conseguir es -8 (es la función trunc).

(Estoy pasando los ángulos a la notación DMS)

Creo que esto se puede resolver con una declaración condicional para valores negativos y valores positivos También encontré esta expresión que hace el trabajo regexp_replace($x, '\\..*', '') ... pero supongo que debe haber otra forma (más limpia) de hacerlo.

Estoy usando QGis 2.0 en una máquina Win7 de 64 bits.

3voto

crstamps2 Puntos 233

La calculadora de campos acepta expresiones de Python. Por desgracia, trunc() función no está disponible en Python (y por tanto en la calculadora de campo) por defecto y no puedes importar el módulo matemático dentro de la calculadora de campo. La forma más fácil de lograr su objetivo ya que floor() está funcionando bien es incrementar su $x valores con el número suficientemente alto N que asegura que al final habrá un valor positivo para cualquiera de sus coordenadas, entonces floor() el resultado y, finalmente, decrementarlo en N . Por ejemplo:

floor($x + 100000000) - 100000000

1voto

Fernando Puntos 111

¡UNA VEZ MÁS! Ahora creo que tengo esto completamente cubierto.

Creo que la fórmula para obtener el valor truncado (para $x, por ejemplo) es: (abs(ceil($x))-abs(floor($x)))*floor(abs($x))

.

La primera parte ( (abs(ceil($x))-abs(floor($x))) ) determinará el signo.

La segunda parte ( floor(abs($x)) ) determinará el valor (utilizando la función absoluta).

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