--- cup-aerodromes.perl 2013/11/23 00:32:39 1.1 +++ cup-aerodromes.perl 2013/12/21 00:40:30 1.2 @@ -1,5 +1,5 @@ #! /usr/bin/perl -w -# $Id: cup-aerodromes.perl,v 1.1 2013/11/23 00:32:39 philip Exp $ +# $Id: cup-aerodromes.perl,v 1.2 2013/12/21 00:40:30 philip Exp $ use XML::Simple; use Data::Dumper; use strict; @@ -8,11 +8,13 @@ my $aerodromes; my $xml = "aerodromes.gpx"; if ( defined $xml ){ - $aerodromes = XMLin($xml); + my $xs = XML::Simple->new(); + $aerodromes = $xs->XMLin($xml, KeyAttr => { wpt => "name", 'runway' => "designation" }, ForceArray => ['runway','frequency']); } #print Dumper($aerodromes); open CUP, "> aerodromes.cup" or die "Couldn't open aerodromes.cup: $!\n"; +open TXT, "> aerodromes.txt" or die "Couldn't open aerodromes.txt: $!\n"; print CUP "name,code,country,lat,lon,elev,style,rwdir,rwlen,freq,desc,userdata,pics\n"; #"Ahuriri",0002,NZ,4414.000S,16936.000E,756.0m,1,,,,"Mouth of Canyon Creek",, @@ -21,11 +23,25 @@ foreach my $ad ( keys %{$aerodromes->{'w if ( defined $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'elev'} ){ print CUP qq{"$ad",}; print CUP qq["$aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'aip'}",NZ,]; - print CUP printlat($aerodromes->{'wpt'}->{$ad}->{lat}) . ","; - print CUP printlon($aerodromes->{'wpt'}->{$ad}->{lon}) . ","; + print CUP printlat($aerodromes->{'wpt'}->{$ad}->{lat}) . ","; + print CUP printlon($aerodromes->{'wpt'}->{$ad}->{lon}) . ","; print CUP $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'elev'} . "ft,2,,,,,,\r\n"; + print TXT qq{[$ad]\n}; + foreach my $f ( 0 .. $#{ $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'frequencies'}->{'frequency'} }){ + print TXT $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'frequencies'}->{'frequency'}->[$f]->{'frequency'}; + print TXT " "; + print TXT $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'frequencies'}->{'frequency'}->[$f]->{'desc'}; + print TXT "\n"; + } + # Some aerodromes have two runways with the same designation, e.g. Alexandra. Must find a fix ... + foreach my $rw ( $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'runways'}->{'runway'} ){ + foreach my $runway ( keys %{$rw} ){ + print TXT qq[$runway $rw->{$runway}->{'length'} x $rw->{$runway}->{'width'} $rw->{$runway}->{'surface'}\n]; + } + } } } +close TXT; close CUP; exit;