; ;+ ; ; ========== ; dm2dd.pro ; ========== ; ; .. function:: dm2dd(degree,minute) ; ; Calculate the decimal degree for a given degree and minute ; ; :param degree: degree ; :type degree: integer ; :raise degree: required ; ; :param minute: minute ; :type minute: float ; :raise minute: required ; ; :returns: decimal degree or -1 if error in parameters type or dimension ; :rtype: double ; ; :examples: ; ; .. code-block:: idl ; ; degree = 45 ; minute = 30.5 ; dd = dm2dd(degree,minute) ; print,dd ; ; .. parsed-literal:: ; ; 45.5083 ; ; :uses: ; ; :func:`report ` ; ; :see also: ; ; http://www.csgnetwork.com/gpscoordconv.html ; ; :todo: ; ; authorize arrays in inputs (like :func:`julday `) ; ; :history: ; ; - fplod 20101126T140307Z aedon.locean-ipsl.upmc.fr (Darwin) ; ; * creation ; ; :version: ; ; $Id$ ; ;- FUNCTION DM2DD, degree, minute compile_opt idl2, strictarrsubs ; Return to caller if errors ON_ERROR, 2 usage = 'result = dms2dss(degree, minute)' ; check parameters nparam = N_PARAMS() IF (nparam LT 2) THEN BEGIN ras = report(['Incorrect number of arguments.' $ + '!C' $ + 'Usage : ' + usage]) return, -1 ENDIF arg_type = size(degree,/type) IF ((arg_type NE 2) AND (arg_type NE 3)) THEN BEGIN ras = report(['Incorrect arg type degree' $ + '!C' $ + 'Usage : ' + usage]) return, -1 ENDIF arg_dim = size(degree,/n_elements) IF (arg_dim GT 1) THEN BEGIN ras = report(['Incorrect arg dimension degree' $ + '!C' $ + 'Usage : ' + usage]) return, -1 ENDIF arg_type = size(minute,/type) IF (arg_type NE 4) THEN BEGIN ras = report(['Incorrect arg type minute' $ + '!C' $ + 'Usage : ' + usage]) return, -1 ENDIF arg_dim = size(minute,/n_elements) IF (arg_dim GT 1) THEN BEGIN ras = report(['Incorrect arg dimension minute' $ + '!C' $ + 'Usage : ' + usage]) return, -1 ENDIF ; conversion dd = degree + minute/60.d return, dd END