Obtenir une représentation sexagésimale d’une coordonnée géographique en degrés

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

Laisser un commentaire