--- mk-kml.perl 2023/12/26 01:23:11 3.2 +++ mk-kml.perl 2025/05/18 05:02:15 3.4 @@ -1,45 +1,44 @@ #! /usr/bin/perl -w -use XML::Simple; +use JSON; use strict; # Spit out a simple KML version of OmLand.xml -open KML, "> SI.kml" or die "Couldn't write SI.kml: $!\n"; +open KML, "> OmLand.kml" or die "Couldn't write OmLand.kml: $!\n"; print KML q{ South Island Landouts }; +my $json = JSON->new; + +open my $fh, '<', OmLand.geojson or die "error opening OmLand.geojson $!\n"; +my $text = do { local $/; <$fh> }; +close $fh; + +my $geojson = $json->decode( $text ); -my $strips = XMLin('OmLand.xml', KeyAttr => {strip => 'id'}); my $gobook = ""; my $alt = ""; -foreach my $stripnum ( sort keys %{$strips->{strip}} ){ - 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; +foreach my $feature ( @{$geojson->{'features'}} ){ my $placemark = sprintf(q{ %s %s absolute> - %3.6f,-%2.6f,%4.1f + %3.6f,%2.6f,%4.1f }, - $stripnum, - $strips->{strip}->{$stripnum}->{name}, - $lng, - $lat, - $strips->{strip}->{$stripnum}->{elev} / 3.28); - if ( $strips->{strip}->{$stripnum}->{gobook} eq "yes" ){ + $feature->{'id'}, + $feature->{'properties'}->{'name'}, + $feature->{'geometry'}->{'coordinates'}->[0], + $feature->{'geometry'}->{'coordinates'}->[1], + $feature->{'geometry'}->{'coordinates'}->[2]); + + if ( defined $feature->{'properties'}->{'gobook'} and + $feature->{'properties'}->{'gobook'} eq "yes" ){ $gobook .= $placemark; } else{