source: subversion/applications/utils/gary68/mwNodes.pm @ 26424

Last change on this file since 26424 was 26404, checked in by gary68, 8 years ago

new mapweaver version. directory exclusions

File size: 5.1 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 mwNodes ; 
20
21use strict ;
22use warnings ;
23
24use mwConfig ;
25use mwFile ;
26use mwRules ;
27use mwMap ;
28use mwMisc ;
29use mwLabel ;
30
31use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
32
33require Exporter ;
34
35@ISA = qw ( Exporter AutoLoader ) ;
36
37@EXPORT = qw (  processNodes
38                        createPoiDirectory
39                 ) ;
40
41
42sub processNodes {
43
44        print "drawing nodes...\n" ;
45
46        my $lonRef; my $latRef; my $tagRef ;
47        ($lonRef, $latRef, $tagRef) = getNodePointers () ;
48
49        foreach my $nodeId (keys %$lonRef) {
50                my @tags = @{ $$tagRef{$nodeId} } ;
51                my $tagsString = "" ;
52
53                my $ruleRef = getNodeRule (\@tags) ;
54                if (defined $ruleRef) {
55                        # foreach my $t (@tags) { $tagsString .= $t->[0] . "=" . $t->[1] . " " ; }
56                        # print "$nodeId $tagsString\n" ;
57                        # print "rule found\n" ;
58                        # foreach my $prop (keys %$ruleRef) {
59                        #       print "$prop=$$ruleRef{$prop}\n" ;
60                        # }
61                        # print "\n" ;
62
63                        # draw disc first !
64                        if (grep /yes/, $$ruleRef{'disc'})  {
65                                my $svgString = "" ;
66                                if ( $$ruleRef{'discsvgstring'} ne "" ) {
67                                        $svgString = $$ruleRef{'discsvgstring'} ;
68                                }
69                                else {
70                                        $svgString = "fill=\"$$ruleRef{'disccolor'}\" stroke=\"none\" fill-opacity=\"$$ruleRef{'discopacity'}\"" ;
71                                }
72                                drawCircle ($$lonRef{$nodeId}, $$latRef{$nodeId}, 1, $$ruleRef{'discradius'}, 1, $svgString, 'nodes') ;
73                        }
74
75                        if (grep /yes/, $$ruleRef{'circle'})  {
76                                my $svgString = "" ;
77                                if ( $$ruleRef{'circlesvgstring'} ne "" ) {
78                                        $svgString = $$ruleRef{'circlesvgstring'} ;
79                                }
80                                else {
81                                        $svgString = "fill=\"none\" stroke=\"$$ruleRef{'circlecolor'}\" stroke-width=\"$$ruleRef{'circlethickness'}\"" ;
82                                }
83                                drawCircle ($$lonRef{$nodeId}, $$latRef{$nodeId}, 1, $$ruleRef{'circleradius'}, 1, $svgString, 'nodes') ;
84                        }
85
86                        if ( ($$ruleRef{'size'} > 0) and ($$ruleRef{'icon'} eq "none") )  {
87                                my $svgString = "" ;
88                                if ( $$ruleRef{'svgstring'} ne "" ) {
89                                        $svgString = $$ruleRef{'svgstring'} ;
90                                }
91                                else {
92                                        $svgString = "fill=\"$$ruleRef{'color'}\"" ;
93                                }
94
95                                if ( $$ruleRef{'shape'} eq "circle") {
96                                        drawCircle ($$lonRef{$nodeId}, $$latRef{$nodeId}, 1, $$ruleRef{'size'}, 0, $svgString, 'nodes') ;
97                                }
98                                elsif ( $$ruleRef{'shape'} eq "square") {
99                                        drawSquare ($$lonRef{$nodeId}, $$latRef{$nodeId}, 1, $$ruleRef{'size'}, 0, $svgString, 'nodes') ;
100                                }
101                                elsif ( $$ruleRef{'shape'} eq "triangle") {
102                                        drawTriangle ($$lonRef{$nodeId}, $$latRef{$nodeId}, 1, $$ruleRef{'size'}, 0, $svgString, 'nodes') ;
103                                }
104                                elsif ( $$ruleRef{'shape'} eq "diamond") {
105                                        drawDiamond ($$lonRef{$nodeId}, $$latRef{$nodeId}, 1, $$ruleRef{'size'}, 0, $svgString, 'nodes') ;
106                                }
107                        }
108
109                        if ( ($$ruleRef{'label'} ne "none") or ($$ruleRef{'icon'} ne "none") ) {
110                                my ($labelText, $ref) = createLabel (\@tags, $$ruleRef{'label'}, $$lonRef{$nodeId}, $$latRef{$nodeId}) ;
111                                my $labelSize = $$ruleRef{'labelsize'} ;
112                                my $icon = $$ruleRef{'icon'} ;
113                                my $iconSize = $$ruleRef{'iconsize'} ;
114                                my $svgText = "font-size=\"$labelSize\"" ;
115
116                                placeLabelAndIcon($$lonRef{$nodeId}, $$latRef{$nodeId}, 0, $$ruleRef{'size'}, $labelText, $svgText, $icon, $iconSize, $iconSize, "nodes") ;
117                        }
118
119                        # fill poi directory
120
121                        my $thing0 = $$ruleRef{'keyvalue'} ;
122                        my ($thing) = ( $thing0 =~ /.+=(.+)/ ) ;
123
124                        my $dirName = getValue ("name", $$tagRef{$nodeId} ) ;
125                        if (    ( cv('poi') eq "1" ) and 
126                                ( defined $dirName ) and 
127                                ( $$ruleRef{'direxclude'} eq "no") 
128                        ) {
129                                $dirName .=  " ($thing)" ;
130                                if ( cv('grid') > 0) {
131                                        my $sq = gridSquare($$lonRef{$nodeId}, $$latRef{$nodeId}, cv('grid')) ;
132                                        if (defined $sq) {
133                                                addToPoiHash ($dirName, $sq) ;
134                                        }
135                                }
136                                else {
137                                        # $poiHash{$dirName} = 1 ;
138                                        addToPoiHash ($dirName, undef) ;
139                                }
140                        }
141                       
142
143                } # defined ruleref
144        }
145
146}
147
148# ------------------------------------------------------------------------------------
149
150sub createPoiDirectory {
151        my $poiName ;
152        my $poiFile ;
153        $poiName = cv ('out')  ;
154        $poiName =~ s/\.svg/\_pois.txt/ ;
155        setConfigValue("poiname", $poiName) ;
156        print "creating poi file $poiName ...\n" ;
157        open ($poiFile, ">", $poiName) or die ("can't open poi file $poiName\n") ;
158
159        my $ref = getPoiHash() ;
160        my %poiHash = %$ref ;
161
162        if ( cv('grid') eq "0") {
163                foreach my $poi (sort keys %poiHash) {
164                        print $poiFile "$poi\n" ;
165                }
166        }
167        else {
168                foreach my $poi (sort keys %poiHash) {
169                        print $poiFile "$poi\t" ;
170                        foreach my $square (sort keys %{$poiHash{$poi}}) {
171                                print $poiFile "$square " ;
172                        }
173                        print $poiFile "\n" ;
174                }
175        }
176        close ($poiFile) ;
177}
178
1791 ;
180
181
Note: See TracBrowser for help on using the repository browser.