Leonidas, o Eng Cartógrafo Anderson Roberto da Silva já respondeu a este questionamento, segue abaixo a solução encontrada por ele:
Caro,Dá pra fazer deste modo (testado no QGis 1.8.0 Lisboa) no field calculator:
1) Crie as colunas com os nomes (verde) e tipo (azul):
- azimute (real), Precisão: 10 tá bom;
- grau_int (inteiro)
- min_int (inteiro)
- seg (real) Precisão: 4 tá bom;
- gms ou outro nome qualquer (texto)
2) Cálculo do Azimute com esta fórmula: (atan((xat(-1)-xat(0))/(yat(-1)-yat(0)))) * 180/3.14159 + (180 *(((yat(-1)-yat(0)) < 0) + (((xat(-1)-xat(0)) < 0 AND (yat(-1) - yat(0)) >0)*2)))
3) Cálculo do grau_int: case when (toint( "azimute") - "azimute" > 0) Then (toint( "azimute") - 1) else toint( "azimute") end
4) Cálculo do min_int: case when (toint(("azimute"- "grau_int")*60)-("azimute"- "grau_int")*60) > 0 Then (("azimute"- "grau_int")*60)-1 else toint(("azimute"- "grau_int")*60) end
5) Cálculo do seg: "azimute" * 3600- "grau_int" *3600- "min_int" *60
6) Cálculo do gms ou outro nome qualquer: "grau_int" || '° ' || "min_int" || '´ ' || "seg" || '"'
Motivo da criação das colunas: no field calculator do QGis não sei se é possível definir variáveis, tentei e não consegui. Logo, salvei nas colunas os resultados.
A condição case when utilizado nos cálculos dos itens 3 e 4, servem pois a operação toint (extrair a parte inteira) dá um resultado não esperado. Exemplo: toint(145.5) retorna 146 e não 145 como esperado. No console python, se escrever a expressão int(145.5), retorna 145. Por isso coloquei a condição.
É trabalhoso, talvez seja mais fácil exportar numa tabela do excel e fazer os cálculos lá, do que fazer no própria QGis.
Abraços!
--
Anderson Roberto da Silva
Engenheiro Cartógrafo
Hélder Gramacho dos Santos
Engenheiro Agrônomo
Perito Federal Agrário
tel: (71) 9279-9439