About us | Join us | Hire us | Contact us | Google Group

root/geoutils/columbus.pl

Revision 368, 2.1 kB (checked in by wangchun, 13 months ago)

geoutils:

  • propset svn:executable
  • updated googlewms.py for the latest google maps
  • fixed googlewms.py compatiblity for python 2.5
  • Property svn:executable set to *
Line 
1#!/usr/bin/perl
2
3print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
4print "<gpx version=\"1.1\" xmlns=\"http://www.topografix.com/GPX/1/1\">\n";
5if ($_ = <>) {
6        s/[\x00\x0d\x0a]//g;
7        @name = split /,/;
8        print "<trk>\n";
9        print "<trkseg>\n";
10        while (<>) {
11                s/[\x0d\x0a]//g;
12                @data = split /,/;
13                %data = ();
14                for ($i = 0; $i < @name; $i++) {
15                        $data[$i] =~ s/^\x00+//;
16                        $data[$i] =~ s/\x00+$//;
17                        $data{$name[$i]} = $data[$i];
18                }
19                $hdop = $data{'HDOP'};
20                $vdop = $data{'VDOP'};
21                $pdop = $data{'PDOP'};
22                if ($hdop =~ /\x00/ || $vdop =~ /\x00/ || $pdop =~ /\x00/) {
23                        next;
24                }
25                unless ($hdop =~ /[0-9]+(?:\.[0-9]+)?/ && $hdop > 0) {
26                        next;
27                }
28                unless ($vdop =~ /[0-9]+(?:\.[0-9]+)?/ && $vdop > 0) {
29                        next;
30                }
31                unless ($pdop =~ /[0-9]+(?:\.[0-9]+)?/ && $pdop > 0) {
32                        next;
33                }
34                if ($hdop >= 20 || $vdop >= 20 || $pdop >= 20) {
35                        next;
36                }
37                $lat = $data{'LATITUDE N/S'};
38                $lat =~ s/^([0-9]+(?:\.[0-9]+)?)N$/$1/;
39                $lat =~ s/^([0-9]+(?:\.[0-9]+)?)S$/-$1/;
40                $lon = $data{'LONGITUDE E/W'};
41                $lon =~ s/^([0-9]+(?:\.[0-9]+)?)E$/$1/;
42                $lon =~ s/^([0-9]+(?:\.[0-9]+)?)W$/-$1/;
43                print "<trkpt lat=\"$lat\" lon=\"$lon\">";
44                $time = $data{'DATE'} . $data{'TIME'};
45                if ($time =~ /([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])/) {
46                        $time = "20$1-$2-$3T$4:$5:$6Z";
47                        print "<time>$time</time>";
48                }
49                $ele = $data{'HEIGHT'};
50                if ($ele =~ /-?[0-9]+(?:\.[0-9]+)?/) {
51                        print "<ele>$ele</ele>";
52                }
53                $course = $data{'HEADING'};
54                if ($course =~ /[0-9]+(?:\.[0-9]+)?/) {
55                        print "<course>$course</course>";
56                }
57                $speed = $data{'SPEED'};
58                if ($speed =~ /[0-9]+(?:\.[0-9]+)?/) {
59                        $speed = sprintf "%.3f", $speed / 3.6;
60                        print "<speed>$speed</speed>";
61                }
62                $fix1 = $data{'FIX MODE'};
63                $fix2 = $data{'VALID'};
64                if ($fix2 == "DGPS") {
65                        print "<fix>dgps</fix>";
66                } elsif ($fix1 == "2D") {
67                        print "<fix>2d</fix>";
68                } elsif ($fix1 == "3D") {
69                        print "<fix>3d</fix>";
70                }
71                print "<hdop>$hdop</hdop>";
72                print "<vdop>$vdop</vdop>";
73                print "<pdop>$pdop</pdop>";
74                print "</trkpt>\n";
75        }
76        print "</trkseg>\n";
77        print "</trk>\n";
78}
79print "</gpx>\n";
Note: See TracBrowser for help on using the browser.