in reply to Re^4: Calculate aircraft headings from GPS data for google kml display
in thread Calculate aircraft headings from GPS data for google kml display
can you give a bit hint, especially the # at the end, :-)!
Same as above. (Though it was wrong for the rest of the lines, a C&P error correct below.)
push a reference to the hash constructed from teh most recent line into the array indexed by the aircraft id.
If we don't have 2 or more lines (in the array) for this aircraft, we cannot calculate a bearing yet, so skip to the next line.
A couple of corrections and a couple of tweaks:
#! perl -slw use strict; use Data::Dump qw[ pp ]; my @headers = split ' ', do{ my $raw = <DATA>; $raw =~ tr[",][ ]; $raw + }; #" my %planes; while( my $line = <DATA> ) { my @fields = split ',', $line; my %row; @row{ @headers } = @fields; my $rowid = $row{ rowid }; my $aid = $row{ aircraft_id }; push @{ $planes{ $aid } }, \%row; next unless @{ $planes{ $aid } } > 1; my $lat1 = $planes{ $aid }[ -2 ]{ latitude }; my $lat2 = $planes{ $aid }[ -1 ]{ latitude }; # print "$lat1 $lat2"; my $dlat = $lat2 - $lat1; my $lon1 = $planes{ $aid }[ -2 ]{ longitude }; my $lon2 = $planes{ $aid }[ -1 ]{ longitude }; # print "$lon1 $lon2"; my $dlon = $lon2 - $lon1; my $y = sin( $dlon /180 ) * cos( $lat2 /180 ); my $x = cos( $lat1 /180 ) * sin( $lat2 /180 ) - sin( $lat1 /180 ) +* cos( $lat2 /180 ) * cos( $dlon /180 ); printf "Aircraft: %d heading: %6.3f\n", $aid, atan2( $y, $x ) * 57 +.2957795; # <STDIN>; } __DATA__
With the extended dataset (still no course changes!), produces:
C:\test>junk53 Aircraft: 685 heading: -90.000 Aircraft: 721 heading: 0.000 Aircraft: 704 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 709 heading: 0.000 Aircraft: 721 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 709 heading: 90.000 Aircraft: 704 heading: 0.000 Aircraft: 721 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 704 heading: 0.000 Aircraft: 709 heading: 90.000 Aircraft: 721 heading: 0.000 Aircraft: 709 heading: 0.000 Aircraft: 704 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 721 heading: 0.000 Aircraft: 709 heading: 90.000 Aircraft: 704 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 721 heading: 0.000 Aircraft: 709 heading: 90.000 Aircraft: 685 heading: -90.000 Aircraft: 704 heading: 0.000 Aircraft: 721 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 704 heading: 0.000 Aircraft: 709 heading: 90.000 Aircraft: 721 heading: 0.000 Aircraft: 709 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 704 heading: 0.000 Aircraft: 721 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 704 heading: 0.000 Aircraft: 709 heading: 90.000 Aircraft: 721 heading: 0.000 Aircraft: 704 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 709 heading: 90.000 Aircraft: 721 heading: 0.000 Aircraft: 704 heading: 0.000 Aircraft: 685 heading: -90.000 Aircraft: 709 heading: 0.000 Aircraft: 721 heading: 0.000 Aircraft: 709 heading: 90.000 Aircraft: 685 heading: -90.000
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Calculate aircraft headings from GPS data for google kml display
by hujunsimon (Sexton) on Jun 11, 2014 at 00:23 UTC | |
by BrowserUk (Patriarch) on Jun 11, 2014 at 02:10 UTC | |
by hujunsimon (Sexton) on Jun 26, 2014 at 15:01 UTC |