source: subversion/applications/utils/gary68/errors.pl @ 24893

Last change on this file since 24893 was 24649, checked in by gary68, 9 years ago

new errors.pl version, output html now

  • Property svn:executable set to *
File size: 4.3 KB
Line 
1
2
3
4# errors.pl
5
6
7use strict ;
8use warnings ;
9
10use OSM::osm ;
11
12my $version = 1.3 ;
13
14my @allowedREF = qw (motorway motorway_link trunk trunk_link primary primary_link secondary secondary_link tertiary unclassified) ;
15my %allowedREFHash = () ;
16foreach my $a (@allowedREF) { $allowedREFHash{$a} = 1 ; }
17
18my %users  ;
19
20
21#$users{""} = 1 ;
22
23
24my $fileName ;
25my $txtFileName ;
26
27
28# read data from file
29my $wayId ;
30my $wayUser ;
31my @wayNodes ;
32my @wayTags ;
33my $nodeId ;
34my $nodeUser ;
35my $nodeLat ;
36my $nodeLon ;
37my @nodeTags ;
38my $aRef1 ;
39my $aRef2 ;
40my $relationId ;
41my $relationUser ;
42my @relationTags ;
43my @relationMembers ;
44
45my $txtFile ;
46
47my $line = 0 ;
48my $problems = 0 ;
49
50$fileName = shift ;
51$txtFileName = shift ;
52
53my $html ;
54my $htmlName ;
55
56
57open ($txtFile, ">", $txtFileName) or die ("ERROR: couldn't open outfile $txtFileName\n") ;
58
59$htmlName = $txtFileName ;
60$htmlName =~ s/\.txt/\.htm/i ;
61
62open ($html, ">", $htmlName)  or die ("ERROR: couldn't open outfile $htmlName\n");
63printHTMLiFrameHeader ($html, "errors by Gary68") ;
64
65print $html "<H1>Errors by Gary68</H1>\n" ;
66print $html "<p>Version ", $version, "</p>\n" ;
67print $html "<H2>Statistics</H2>\n" ;
68print $html "<p>", stringFileInfo ($fileName), "</p>\n" ;
69
70print $html "<H2>Data</H2>\n" ;
71print $html "<table border=\"1\">\n";
72print $html "<tr>\n" ;
73print $html "<th>Line</th>\n" ;
74print $html "<th>Object</th>\n" ;
75print $html "<th>OSM link</th>\n" ;
76print $html "<th>History link</th>\n" ;
77print $html "<th>User</th>\n" ;
78print $html "<th>Comment</th>\n" ;
79print $html "</tr>\n" ;
80
81
82print "reading osm file...\n" ;
83print "  - nodes\n" ;
84
85openOsmFile ($fileName) ;
86
87skipNodes() ;
88
89
90
91print "  - ways\n" ;
92
93($wayId, $wayUser, $aRef1, $aRef2) = getWay2 () ;
94if ($wayId != -1) {
95        @wayNodes = @$aRef1 ;
96        @wayTags = @$aRef2 ;
97}
98while ($wayId != -1) {
99
100        if (! defined $wayUser) {
101                print "user undefined\n" ;
102                $wayUser = "unknown" ;
103        }
104
105        if ($wayUser eq "") {
106                print "user empty\n" ;
107                $wayUser = "unknown" ;
108        }
109
110#       if (defined $users{$wayUser}) {
111
112                my $ref ; my $refPresent = 0 ; my $refUsed = "" ; my $highway = 0 ; my $invalidRefPresent = 0 ;
113                foreach my $t (@wayTags) {
114                        if ( ($t->[0] eq "highway") and (defined $allowedREFHash{$t->[1]}) ) { $highway = 1 ; }
115                        if ($t->[0] eq "ref") {
116                                $refPresent = 1 ;
117                                $refUsed = $t->[1] ;
118                                $refUsed =~ s/neu//ig ;
119                                $refUsed =~ s/alt//ig ;
120                                my @refs ;
121                                if (grep /;/, $refUsed) { 
122                                        @refs = split /;/, $refUsed ; 
123                                }
124                                else {
125                                        if (grep /,/, $refUsed) { @refs = split /,/, $refUsed ; }
126                                        else {
127                                                if (grep /\//, $refUsed) { @refs = split /\//, $refUsed ; }
128                                                else {
129                                                        @refs = ($refUsed) ;
130                                                }
131
132                                        }
133                                }
134                                foreach my $r (@refs) {
135                                        ($ref) = ( $r =~ /^(\s*[a-zäöüÄÖÜ]+\s*[0-9]+\s*[a-z]?\s*)$/i ) ;
136                                        if (!defined $ref) { $invalidRefPresent = 1 ; }
137                                }
138                        }
139                }
140                if ($refPresent and ($invalidRefPresent) and $highway) {
141                        $problems++ ;
142                        writeFiles ("way", $wayId, $wayUser, "UNCOMMON REF: $refUsed", $problems) ;
143                }
144
145#       }
146       
147        ($wayId, $wayUser, $aRef1, $aRef2) = getWay2 () ;
148        if ($wayId != -1) {
149                @wayNodes = @$aRef1 ;
150                @wayTags = @$aRef2 ;
151        }
152}
153
154closeOsmFile () ;
155
156print $html "</table>\n" ;
157
158
159print "problems found: $problems\n" ;
160
161print $html "<P>problems found: $problems</P>\n" ;
162
163
164printHTMLFoot ($html) ;
165
166
167close ($txtFile) ;
168close ($html) ;
169
170
171# -----------------------------------------------------
172
173sub writeFiles {
174        my ($object, $id, $user, $comment, $line) = @_ ;
175        # print $txtFile "$object,$id,$user,$comment,$line\n" ;
176
177        my $text = sprintf "%s,%d,%s," , $object,$id,$user ;
178        # printf $txtFile "%s,%d,%s, %-80s %-5d\n", $object,$id,$user,$comment,$line ;
179        printf $txtFile "%-50s %-80s %-5d\n", $text, $comment,$line ;
180
181        print $html "<tr>\n" ;
182        print $html "<td>$line</td>\n" ;
183        print $html "<td>$object</td>\n" ;
184        print $html "<td>", objectLink($object, $id) , "</td>\n" ;
185        print $html "<td>", historyLink ($object, $id), "</td>\n" ;
186        print $html "<td>$user</td>\n" ;
187        print $html "<td>$comment</td>\n" ;
188        print $html "</tr>\n" ;
189
190}
191
192# ----------------------------------------------------------------
193
194sub objectLink {
195        my $obj = shift ;
196        my $id = shift ;
197
198        my $link = "<A HREF=\"http://www.openstreetmap.org/?$obj=$id\">$id</A>" ;
199
200        return $link ;
201}
Note: See TracBrowser for help on using the repository browser.