|
|
| version 3.1, 2019/08/02 04:45:36 | version 3.2, 2023/12/26 01:23:11 |
|---|---|
| Line 2 | Line 2 |
| use XML::Simple; | use XML::Simple; |
| use strict; | use strict; |
| # Spit out a simple KML version of OmLand.gpx. | # Spit out a simple KML version of OmLand.xml |
| open KML, "> OmLand.kml" or die "Couldn't write OmLand.kml: $!\n"; | open KML, "> SI.kml" or die "Couldn't write SI.kml: $!\n"; |
| print KML q{<?xml version="1.0" encoding="UTF-8"?> | print KML q{<?xml version="1.0" encoding="UTF-8"?> |
| <kml xmlns="http://www.opengis.net/kml/2.2"> | <kml xmlns="http://www.opengis.net/kml/2.2"> |
| <Document> | <Document> |
| <name>NZ Landouts</name> | <name>South Island Landouts</name> |
| }; | }; |
| my $strips = XMLin('OmLand.gpx'); | my $strips = XMLin('OmLand.xml', KeyAttr => {strip => 'id'}); |
| my $gobook = ""; | my $gobook = ""; |
| my $alt = ""; | my $alt = ""; |
| foreach my $stripnum ( sort keys %{$strips->{'wpt'}} ){ | foreach my $stripnum ( sort keys %{$strips->{strip}} ){ |
| my $placemark = sprintf(q{ <Placemark> | my $lat; |
| my $lng; | |
| my $min; | |
| ($lat,$min) = split /\:/,$strips->{strip}->{$stripnum}->{lat}; | |
| $min = (substr($min,0,6)) / 60; | |
| $lat += $min; | |
| ($lng,$min) = split /\:/,$strips->{strip}->{$stripnum}->{lng}; | |
| $min = (substr($min,0,6)) / 60; | |
| $lng += $min; | |
| my $placemark = sprintf(q{ <Placemark> | |
| <name>%s</name> | <name>%s</name> |
| <description>%s</description> | <description>%s</description> |
| <Point> | <Point> |
| <altitudeMode>absolute></altitudeMode> | <altitudeMode>absolute></altitudeMode> |
| <coordinates>%3.6f,%2.6f,%4.1f</coordinates> | <coordinates>%3.6f,-%2.6f,%4.1f</coordinates> |
| </Point> | </Point> |
| </Placemark> | </Placemark> |
| }, | }, |
| $stripnum, | $stripnum, |
| $strips->{'wpt'}->{$stripnum}->{'desc'}, | $strips->{strip}->{$stripnum}->{name}, |
| $strips->{'wpt'}->{$stripnum}->{'lon'}, | $lng, |
| $strips->{'wpt'}->{$stripnum}->{'lat'}, | $lat, |
| $strips->{'wpt'}->{$stripnum}->{'ele'}); | $strips->{strip}->{$stripnum}->{elev} / 3.28); |
| if ( defined $strips->{'wpt'}->{$stripnum}->{'extensions'}->{gobook} and $strips->{'wpt'}->{$stripnum}->{'extensions'}->{gobook} eq "yes" ){ | if ( $strips->{strip}->{$stripnum}->{gobook} eq "yes" ){ |
| $gobook .= $placemark; | $gobook .= $placemark; |
| } | } |
| else{ | else{ |
| Line 39 foreach my $stripnum ( sort keys %{$stri | Line 47 foreach my $stripnum ( sort keys %{$stri |
| } | } |
| } | } |
| print KML q{ <Folder> | print KML q{ <Folder> |
| <name>Glide Omarama Landouts</name> | <name>Omarama Landouts</name> |
| <description>Glide Omarama recommended soaring area landouts</description> | <description>Omarama recommended soaring area landouts</description> |
| }; | }; |
| print KML $gobook; | print KML $gobook; |
| print KML q{ </Folder> | print KML q{ </Folder> |