Eu vim com a seguinte expressão para converter 5.1234 a 5 ° 7`24.24 "
toint ($ x) || '°' || toint ((($ x) - toint ($ x)) * 60) || '' '|| substr ((alternando (((($ x) - toint ($ x)) * 60) - toint ((($ x) - toint ($ x)) * 60)) * 60), 1,5) || '"'
Aqui está o problema: para alguns pontos, como o 5.1234, ele funciona. mas para outros, não. Eu suspeito que o problema é a conversão de números inteiros que arredondam os números decimais em vez de truncá-lo.
Existe alguma outra opção? obrigado.
qgis
latitude-longitude
calculator
Obsidianz
fonte
fonte
Respostas:
Gosto da expressão que você criou - provavelmente nenhuma solução no QGIS 1.8, mas no QGIS 1.9-dev há uma
floor()
função de arredondamento que é arredondada para baixo . Para D ° M'S '':Observe o apóstrofo escapado (
\'
).Para D ° M.MMM ':
Para limitar o número de minutos decimais exibidos, substitua # na expressão abaixo pelo número de dígitos:
fonte
O operador módulo pode ser usado para fazer truncamento, mas a expressão resultante seria muito feia. É mais bonito usar a substituição de strings, mas, infelizmente, o QGIS não expõe strpos ou funções similares. Use
regexp_replace($x, '\\..*', '')
para obter a parte inteira eregexp_replace($x, '^[0-9]*\\.', '')
obter a parte decimal. Use emtoreal
vez detoint
para cálculos com a segunda expressão para garantir que não haverá arredondamento.fonte