COGO: Convert DMS String to decimal degrees floating point number.

In my article on DD2DMS I outlined how to convert a latitude or longitude as a decimal degrees value to a formatted string. This article describes a function, DMS2DD that reverses those values back to a single decimal degree value.

Note that I have a schema call cogo in which I create functions like this. You can use anything you like.

 USE [GISDB]
 GO -- Change to your database
 /** ---------------------------------------------------------------------------------------   * @function   : DMS2DD
   * @precis     : Function that takes a degree, minute and second value and returns a single decimal degree value.   * @version    : 1.0
   * @usage      : Function DD2DMS( @dDeg Float,
                                     @dMin Float,
                                     @dSec Float)
   *                Returns Float
   *               eg SELECT dbo.DMS2DD(-44,10,50) as dd;
   * @param      : dDeg : Non-NULL degree value
   * @paramType  : dDeg : Float (though normally an int)
   * @param      : dMin : Minute value
   * @param      : dMin : Float (though normally an int)
   * @param      : dSec : Seconds value
   * @param      : dSec : Float
   * @return     : Decimal degree value.
   * @returnType : Float
   * @history    : Simon Greener - Apr 2007 - Original coding.
   * @history    : Simon Greener - May 2011 - Ported to TSQL
   * @copyright  : Licensed under a Creative Commons Attribution-Share Alike 2.5 Australia License.   *              (http://creativecommons.org/licenses/by-sa/2.5/au/)
 **/
 CREATE FUNCTION DMS2DD( @dDeg FLOAT,
                           @dMin FLOAT,
                           @dSec FLOAT)
 RETURNS FLOAT
 AS
 BEGIN
     DECLARE
        @dDD FLOAT;
     BEGIN
        SET @dDD = ABS(@dDeg) + @dMin / 60.0 + @dSec / 3600.0;
        RETURN SIGN(@dDeg) * @dDD;
     END;
 END
 GO

Now test.

 SELECT cogo.DMS2DD(-44,10,50);

|_. dd| |-44.1805555555556| I hope this is helpful to someone.