new tickets from slaven
[andk-cpan-tools.git] / bin / quidi-convert-osm-mwiese-gpx.pl
blob8500e9a506c7a5396ca3c6f6f52e56434e9112a0
1 #!/usr/bin/perl
3 # use 5.010;
4 use strict;
5 use warnings;
7 =head1 NAME
11 =head1 SYNOPSIS
15 =head1 OPTIONS
17 =over 8
19 =cut
21 my @opt = <<'=back' =~ /B<--(\S+)>/g;
23 =item B<--help|h!>
25 This help
27 =back
29 =head1 DESCRIPTION
33 =cut
36 use FindBin;
37 use lib "$FindBin::Bin/../lib";
38 BEGIN {
39 push @INC, qw( );
42 use Dumpvalue;
43 use File::Basename qw(dirname);
44 use File::Path qw(mkpath);
45 use File::Spec;
46 use File::Temp;
47 use Getopt::Long;
48 use Pod::Usage;
49 use Hash::Util qw(lock_keys);
51 our %Opt;
52 lock_keys %Opt, map { /([^=|!]+)/ } @opt;
53 GetOptions(\%Opt,
54 @opt,
55 ) or pod2usage(1);
56 if ($Opt{help}) {
57 pod2usage(0);
60 use XML::LibXML;
61 my $xml = do { open my $fh, 'mwiese141117.osm' or die; local $/; <$fh> };
62 my $dom = XML::LibXML->load_xml(string => $xml);
63 print <<EOIntro;
64 <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
65 <gpx xmlns="http://www.topografix.com/GPX/1/1" creator="" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
66 <trk>
67 <name>ACTIVE LOG221114</name>
68 EOIntro
69 my(%N);
70 for my $e ($dom->findnodes('/osm/node')) {
71 my $id = $e->getAttribute('id');
72 $N{$id}{lat} = $e->getAttribute('lat');
73 $N{$id}{lon} = $e->getAttribute('lon');
75 for my $e ($dom->findnodes('/osm/way')) {
76 my $w = $e->getAttribute('id');
77 print "<trkseg>\n";
78 for my $e2 ($e->findnodes('nd')) {
79 my $ref = $e2->getAttribute('ref');
80 printf qq{<trkpt lat="%s" lon="%s"/>\n}, $N{$ref}{lat}, $N{$ref}{lon};
82 print "</trkseg>\n";
84 print "</trk></gpx>\n";
85 # Local Variables:
86 # mode: cperl
87 # cperl-indent-level: 4
88 # End: