Faisant suite à ce billet, voici une petite fonction pour représenter sexagésimalement une coordonnée géographique exprimée en degrés :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | ------------------------------- -- Nicolas SOUQUET - 19/11/2009 ------------------------------- ALTER FUNCTION Fn_SIG_CoordonneesDegresToSexagesimales (@_degresDecimaux FLOAT) RETURNS VARCHAR(16) WITH SCHEMABINDING AS BEGIN -- Extraction des degrés DECLARE @nDegresSexagesimaux TINYINT SELECT @nDegresSexagesimaux = CAST(@_degresDecimaux AS TINYINT) -- Extraction des minutes DECLARE @fMinutesSexagesimaux FLOAT SELECT @fMinutesSexagesimaux = (@_degresDecimaux - @nDegresSexagesimaux) * 60 DECLARE @nMinutesSexagesimaux TINYINT SELECT @nMinutesSexagesimaux = CAST(@fMinutesSexagesimaux AS TINYINT) -- Extraction des secondes DECLARE @fSecondesSexagesimaux FLOAT SELECT @fSecondesSexagesimaux = (@fMinutesSexagesimaux - @nMinutesSexagesimaux) * 60 -- Resultat RETURN CAST(@nDegresSexagesimaux AS VARCHAR(2)) + '° ' + CAST(@nMinutesSexagesimaux AS VARCHAR(2)) + '′ ' + CAST(@fSecondesSexagesimaux AS VARCHAR(14)) + '"' END |
Ainsi l’exécution de :
SELECT dbo.Fn_SIG_CoordonneesDegresToSexagesimales (47.51027)
Nous retourne 47° 30′ 36.972″
ElSuket