--- cup-aerodromes.perl 2013/11/23 00:32:39 1.1 +++ cup-aerodromes.perl 2013/12/22 01:18:25 1.3 @@ -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.3 2013/12/22 01:18:25 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" }, 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,29 @@ 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"; + } + foreach my $rw ( 0 .. $#{ $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'runways'}->{'runway'} }){ + print TXT $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'runways'}->{'runway'}->[$rw]->{'designation'}; + print TXT " "; + print TXT $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'runways'}->{'runway'}->[$rw]->{'length'}; + print TXT " x "; + print TXT $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'runways'}->{'runway'}->[$rw]->{'width'}; + print TXT " "; + print TXT $aerodromes->{'wpt'}->{$ad}->{'extensions'}->{'aerodrome'}->{'runways'}->{'runway'}->[$rw]->{'surface'}; + print TXT "\n"; + } } } +close TXT; close CUP; exit;