Se me ocurrió la siguiente expresión para convertir 5.1234 a 5 ° 7`24.24 "
toint ($ x) || '°' || toint ((($ x) - toint ($ x)) * 60) || '' '|| substr ((cadena (((($ x) - toint ($ x)) * 60) - toint ((($ x) - toint ($ x)) * 60)) * 60), 1,5) || '"'
Aquí está el problema: para algunos puntos, como 5.1234, funciona. pero para otros, no lo hace. Sospecho que el problema es la conversión de enteros que redondea las cifras decimales en lugar de truncarla.
¿Hay alguna otra opción? Gracias.
qgis
latitude-longitude
calculator
Obsidianz
fuente
fuente
Respuestas:
Me gusta la expresión que ha reunido: probablemente no haya solución en QGIS 1.8, pero en QGIS 1.9-dev hay una
floor()
función de redondeo que se redondea hacia abajo . Para D ° M'S '':Tenga en cuenta el apóstrofe escapado (
\'
).Para D ° M.MMM ':
Para limitar el número de minutos decimales mostrados, sustituya # en la expresión a continuación con el número de dígitos:
fuente
El operador de módulo se puede usar para hacer truncamiento, pero la expresión resultante sería muy fea. Es más bonito usar la sustitución de cadenas, pero desafortunadamente QGIS no expone ningún strpos o funciones similares. Use
regexp_replace($x, '\\..*', '')
para obtener toda la parte yregexp_replace($x, '^[0-9]*\\.', '')
para obtener la parte decimal. Use entoreal
lugar detoint
para cálculos con la segunda expresión para asegurarse de que no habrá redondeo.fuente