source: subversion/applications/utils/gary68/errorsDB.pl @ 34714

Last change on this file since 34714 was 24865, checked in by gary68, 9 years ago

new DB programs

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