source: Sophya/trunk/Poubelle/archTOI.old/asigps.cc@ 359

Last change on this file since 359 was 359, checked in by ansari, 26 years ago

gps aux

File size: 1.2 KB
RevLine 
[358]1#include "asigps.h"
2#include <fstream.h>
3
4ASIGPS::ASIGPS(string const& filename) {
5 readFile(filename);
6}
7
8void ASIGPS::readFile(string const& filename) {
9 ifstream f(filename.c_str());
[359]10 double omjd=0;
[358]11 while (f) {
12 char line[200];
13 f.getline(line,200);
14 if (!f) break;
15 char*p = line;
16 double mjd, lat, lon, alt;
17 if (*p != '3' && *p != '2') continue;
18 p++;
19 if (*p != 'D' && *p != 'd') continue;
20 p+=3;
21 if (strncmp(p,"99/jul/1",8)) continue;
22 p+=8;
23 if (*p == '7') mjd = 1376.5;
24 else if (*p == '8') mjd = 1377.5;
25 else continue;
26 p++;p++;
27 int h,m,s;
28 sscanf(p,"%2d:%2d:%2d",&h,&m,&s);
29 mjd += (h+m/60.+s/3600.)/24.;
30 p += 9;
31 if (*p == 'N') s = 1;
32 else if (*p == 'S') s = -1;
33 else continue;
34 p++;
35 int d,fm;
36 sscanf(p,"%2d.%2d,%3d",&d,&m,&fm);
37 lat = s*(d + m/60. + fm/60000.);
38 p+=10;
39 if (*p == 'E') s = 1;
40 else if (*p == 'W') s = -1;
41 else continue;
42 p++;
43 sscanf(p,"%3d.%2d,%3d",&d,&m,&fm);
44 lon = s*(d + m/60. + fm/60000.);
45 p+=11;
46 sscanf(p,"%5d",&d);
47 alt = d;
48 p+=5;
49 if (*p != 'm') continue;
[359]50 if (mjd < omjd) continue;
51 omjd = mjd;
[358]52 AddValue(mjd, lat, lon, alt);
53 }
[359]54}
Note: See TracBrowser for help on using the repository browser.