source: trunk/src/dm2dd.pro @ 17

Last change on this file since 17 was 13, checked in by pinsard, 10 years ago

fix thanks to coding rules

  • Property svn:keywords set to Id
File size: 2.1 KB
Line 
1;
2;+
3;
4; ==========
5; dm2dd.pro
6; ==========
7;
8; .. function:: dm2dd(degree,minute)
9;
10;    Calculate the decimal degree for a given degree and minute
11;
12;    :param degree: degree
13;    :type degree: integer
14;    :raise degree: required
15;
16;    :param minute: minute
17;    :type minute: float
18;    :raise minute: required
19;
20;    :returns: decimal degree or -1 if error in parameters type or dimension
21;    :rtype: double
22;
23; :examples:
24;
25; .. code-block:: idl
26;
27;    degree = 45
28;    minute = 30.5
29;    dd = dm2dd(degree,minute)
30;    print,dd
31;
32; .. parsed-literal::
33;
34;    45.5083
35;
36; :uses:
37;
38; :func:`report <saxo:report>`
39;
40; :see also:
41;
42; http://www.csgnetwork.com/gpscoordconv.html
43;
44; :todo:
45;
46;  authorize arrays in inputs (like :func:`julday <saxo:julday>`)
47;
48; :history:
49;
50; - fplod 20101126T140307Z aedon.locean-ipsl.upmc.fr (Darwin)
51;
52;   * creation
53;
54; :version:
55;
56; $Id$
57;
58;-
59FUNCTION DM2DD, degree, minute
60
61    compile_opt idl2, strictarrsubs
62
63    ; Return to caller if errors
64    ON_ERROR, 2
65
66    usage = 'result = dms2dss(degree, minute)'
67
68    ; check parameters
69    nparam = N_PARAMS()
70    IF (nparam LT 2) THEN BEGIN
71        ras = report(['Incorrect number of arguments.' $
72        + '!C' $
73        + 'Usage : ' + usage])
74        return, -1
75    ENDIF
76
77    arg_type = size(degree,/type)
78    IF ((arg_type NE 2) AND (arg_type NE 3)) THEN BEGIN
79        ras = report(['Incorrect arg type degree' $
80        + '!C' $
81        + 'Usage : ' + usage])
82        return, -1
83    ENDIF
84
85    arg_dim =  size(degree,/n_elements)
86    IF (arg_dim GT 1) THEN BEGIN
87        ras = report(['Incorrect arg dimension degree' $
88        + '!C' $
89        + 'Usage : ' + usage])
90        return, -1
91    ENDIF
92
93    arg_type = size(minute,/type)
94    IF (arg_type NE 4) THEN BEGIN
95        ras = report(['Incorrect arg type minute' $
96        + '!C' $
97        + 'Usage : ' + usage])
98        return, -1
99    ENDIF
100
101    arg_dim =  size(minute,/n_elements)
102    IF (arg_dim GT 1) THEN BEGIN
103        ras = report(['Incorrect arg dimension minute' $
104        + '!C' $
105        + 'Usage : ' + usage])
106        return, -1
107    ENDIF
108
109    ; conversion
110    dd = degree + minute/60.d
111
112    return, dd
113
114END
Note: See TracBrowser for help on using the repository browser.