source: SH_SHM/trunk/util/statinf.c @ 16

Revision 16, 4.9 KB checked in by marcus, 14 years ago (diff)

r1 | svn | 2007-12-13 11:10:29 +0100 (Do, 13 Dez 2007) | 2 lines

Initial import

Line 
1
2/* file statinf.c
3 *      =========
4 *
5 * version 4, 21-Nov-2005
6 *
7 * Output station info in various formats
8 * K. Stammler, 13-Feb-2003
9 */
10
11
12/*
13 *
14 *  SeismicHandler, seismic analysis software
15 *  Copyright (C) 1996,  Klaus Stammler, Federal Institute for Geosciences
16 *                                       and Natural Resources (BGR), Germany
17 *
18 *  This program is free software; you can redistribute it and/or modify
19 *  it under the terms of the GNU General Public License as published by
20 *  the Free Software Foundation; either version 2 of the License, or
21 *  (at your option) any later version.
22 *
23 *  This program is distributed in the hope that it will be useful,
24 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
25 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26 *  GNU General Public License for more details.
27 *
28 *  You should have received a copy of the GNU General Public License
29 *  along with this program; if not, write to the Free Software
30 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
31 *
32 */
33
34
35#include <stdio.h>
36#include <string.h>
37#include <math.h>
38#include "basecnst.h"
39#ifdef BC_INC_STDLIB
40#include BC_INC_STDLIB
41#endif
42#include "sysbase.h"
43#include "cpar.h"
44#include "glusrdef.h"
45
46
47int main( int argc, char *argv[] )
48{
49        /* local variables */
50        char     station[cBcLineLth+1];       /* station name */
51        char     *inputs;                     /* pointer to environment */
52        char     str[cBcLineLth+1];           /* scratch string */
53        int      i;                           /* counter */
54        int      slth;                        /* string length */
55        GLT_STATINF   statinf;                /* station info */
56        STATLOC  tmp;                         /* scratch */
57        TSyStatus     status;                 /* return status */
58        int      lat_deg, lat_min, lon_deg, lon_min;  /* location values */
59        float    lat_sec, lon_sec;                    /* location values */
60        char     lat_sign, lon_sign;          /* signs */
61        float    elev;                        /* elevation */
62
63        /* executable code */
64
65        pa_init( argc, argv );
66        if  (pa_pnumber() != 1)  {
67                fprintf( stderr,
68                        "Usage: %s <station>\n", pa_progname() );
69                return 1;
70        } /*endif*/
71
72        strcpy( station, pa_pvalue(1) );
73        slth = strlen( station );
74        for  (i=0; i<slth; i++)  station[i] = Cap( station[i] );
75
76        inputs = (char *)getenv( "SH_INPUTS" );
77        if  (inputs == NULL)  {
78                fprintf( stderr, "%s: environment SH_INPUTS not set\n", pa_progname() );
79                return 1;
80        } /*endif*/
81        /* station location file */
82        strcpy( str, inputs );
83        strcat( str, "/" );
84        strcat( str, "STATINF.DAT" );
85        gl_locfile_name( str );
86
87        status = cBcNoError;
88        gl_statinf( station, &statinf, &status );
89        if  (SySevere(&status))  {
90                fprintf( stderr, "%s: problem %d on station %s\n", pa_progname(), status,
91                        station );
92                return 1;
93        } /*endif*/
94
95        if  (gl_valid_number(statinf.elevation))  {
96                elev = statinf.elevation;
97        } else {
98                elev = 0.0;
99        } /*endif*/
100
101        if  (pa_qspecified("-hyposat"))  {
102
103                tmp = statinf.lat;
104                lat_sign = (tmp < 0 ? 'S' : 'N');
105                tmp = fabs( tmp );
106                lat_deg = (int)(tmp);
107                tmp -= (STATLOC)lat_deg;
108                tmp *= 60.0;
109                lat_min = (int)(tmp);
110                tmp -= (STATLOC)lat_min;
111                lat_sec = (float)(tmp*60);
112
113                tmp = statinf.lon;
114                lon_sign = (tmp < 0 ? 'W' : 'E');
115                tmp = fabs( tmp );
116                lon_deg = (int)(tmp);
117                tmp -= (STATLOC)lon_deg;
118                tmp *= 60.0;
119                lon_min = (int)(tmp);
120                tmp -= (STATLOC)lon_min;
121                lon_sec = (float)(tmp*60);
122
123                printf( "%-5s %02d%02d%04.1f%c%3d%02d%04.1f%c %6.1f%s\n", station,
124                        lat_deg, lat_min, lat_sec, lat_sign,
125                        lon_deg, lon_min, lon_sec, lon_sign, elev, statinf.name );
126
127        } else if  (pa_qspecified("-hypo71"))  {
128
129                tmp = statinf.lat;
130                lat_sign = (tmp < 0 ? 'S' : 'N');
131                tmp = fabs( tmp );
132                lat_deg = (int)(tmp);
133                tmp -= (STATLOC)lat_deg;
134                lat_sec = tmp * 60.0;
135
136                tmp = statinf.lon;
137                lon_sign = (tmp < 0 ? 'W' : 'E');
138                tmp = fabs( tmp );
139                lon_deg = (int)(tmp);
140                tmp -= (STATLOC)lon_deg;
141                lon_sec = tmp * 60.0;
142
143                printf( "%-6s%02d%5.2f%c%03d%5.2f%c%4.0f  0.00\n", station,
144                        lat_deg, lat_sec, lat_sign,
145                        lon_deg, lon_sec, lon_sign, elev );
146
147        } else if  (pa_qspecified("-hypocenter"))  {
148
149                tmp = statinf.lat;
150                lat_sign = (tmp < 0 ? 'S' : 'N');
151                tmp = fabs( tmp );
152                lat_deg = (int)(tmp);
153                tmp -= (STATLOC)lat_deg;
154                lat_sec = tmp * 60.0;
155
156                tmp = statinf.lon;
157                lon_sign = (tmp < 0 ? 'W' : 'E');
158                tmp = fabs( tmp );
159                lon_deg = (int)(tmp);
160                tmp -= (STATLOC)lon_deg;
161                lon_sec = tmp * 60.0;
162
163                printf( "  %-4s%02d%5.2f%c%03d%5.2f%c%4.0f  0.00   0.\n", station,
164                        lat_deg, lat_sec, lat_sign,
165                        lon_deg, lon_sec, lon_sign, elev );
166
167        } else if  (pa_qspecified("-gemini"))  {
168
169                printf( "      03 %4s      GR         %8.4f     %8.4f      %5.1f   %s\n",
170                        station, statinf.lat, statinf.lon, statinf.elevation, statinf.name );
171
172        } else {
173
174                printf( "%s %10.7lf %10.7lf", station, statinf.lat, statinf.lon );
175                if  (gl_valid_number(statinf.elevation))
176                        printf( "  elev: %6.1f", statinf.elevation );
177                printf( "\n" );
178
179        } /*endif*/
180
181} /* end of main */
Note: See TracBrowser for help on using the repository browser.