source: subversion/applications/utils/gary68/mwGPX.pm @ 27715

Last change on this file since 27715 was 26551, checked in by gary68, 8 years ago

mapweaver: gpxcolor and gpxsize

  • Property svn:executable set to *
File size: 3.0 KB
Line 
1#
2# PERL mapweaver module by gary68
3#
4#
5#
6#
7# Copyright (C) 2011, Gerhard Schwanz
8#
9# This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
10# Free Software Foundation; either version 3 of the License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>
16#
17
18
19package mwGPX ; 
20
21use strict ;
22use warnings ;
23
24use OSM::gpx ;
25
26use mwConfig ;
27use mwMap ;
28
29use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
30
31require Exporter ;
32
33@ISA = qw ( Exporter AutoLoader ) ;
34
35@EXPORT = qw (  processGPXFile
36                 ) ;
37
38
39
40sub processGPXFile {
41
42        my ($ref1, $ref2, $ref3) = readGPXFile ( cv('gpx') ) ;
43
44        my %wptHash = %$ref1 ;
45        my %rteHash = %$ref2 ;
46        my %trkHash = %$ref3 ;
47
48        my $size = cv('gpxsize') ;
49        my $color = cv('gpxcolor') ;
50
51        foreach my $wptNr ( sort { $a <=> $b } keys %wptHash) {
52                # print "WPT $wptNr: $wptHash{$wptNr}{'lon'} $wptHash{$wptNr}{'lat'}\n" ;
53                if (defined $wptHash{$wptNr}{'name'}) { 
54                        # print "  name: $wptHash{$wptNr}{'name'}\n" ;
55                }
56                if (defined $wptHash{$wptNr}{'ele'}) { 
57                        # print "  ele: $wptHash{$wptNr}{'ele'}\n" ;
58                }
59
60
61                my $svgString = "fill=\"$color\" stroke=\"none\" " ;
62                my $lon = $wptHash{$wptNr}{'lon'} ;
63                my $lat = $wptHash{$wptNr}{'lat'} ;
64                drawCircle ($lon, $lat, 1, 3*$size, 0, $svgString, 'gpx') ;
65
66        }
67
68        foreach my $rteNr ( sort { $a <=> $b } keys %rteHash) {
69                # print "RTE $rteNr\n" ;
70
71                my @coords = () ;
72
73                foreach my $rteWptNr ( sort { $a <=> $b } keys %{$rteHash{$rteNr}}) {
74                        # print "   wpt $rteWptNr: $rteHash{$rteNr}{$rteWptNr}{'lon'} $rteHash{$rteNr}{$rteWptNr}{'lat'}\n" ;
75
76                        my $svgString = "fill=\"$color\" stroke=\"none\" " ;
77                        my $lon = $rteHash{$rteNr}{$rteWptNr}{'lon'} ;
78                        my $lat = $rteHash{$rteNr}{$rteWptNr}{'lat'} ;
79                        drawCircle ($lon, $lat, 1, 2*$size, 0, $svgString, 'gpx') ;
80
81                        my ($x, $y) = convert ($lon, $lat) ;
82                        push @coords, $x, $y ;
83                }
84
85                my $svgString = "" ;
86
87                my $lc = "round" ;
88                my $lj = "round" ;
89
90                $svgString = "stroke=\"$color\" stroke-width=\"$size\" stroke-linecap=\"$lc\" fill=\"none\" stroke-linejoin=\"$lj\" " ;
91
92                drawWay (\@coords, 0, $svgString, "gpx", undef) ;
93        }
94
95        foreach my $trkNr ( sort { $a <=> $b } keys %trkHash) {
96                # print "TRK $trkNr\n" ;
97                my %seg ;
98                %seg = %{ $trkHash{$trkNr} } ;
99
100                foreach my $segNr ( sort {$a <=> $b} keys %seg) {
101                        # print "  SEG $segNr\n" ;
102                        my %points ;
103                        %points = %{ $seg{$segNr}} ;
104                        foreach my $ptNr ( sort { $a <=> $b } keys %points) {
105                                # print "   trkpt $ptNr: $points{$ptNr}{'lon'} $points{$ptNr}{'lat'}\n" ;
106
107                                my $svgString = "fill=\"$color\" stroke=\"none\" " ;
108                                my $lon = $points{$ptNr}{'lon'} ;
109                                my $lat = $points{$ptNr}{'lat'} ;
110                                drawCircle ($lon, $lat, 1, $size, 0, $svgString, 'gpx') ;
111                        }
112                }
113        }
114
115}
116
117
118
119
120
1211 ;
122
123
Note: See TracBrowser for help on using the repository browser.