source: subversion/applications/rendering/restguide/restgsub.pl @ 15432

Last change on this file since 15432 was 12909, checked in by blarson, 11 years ago

restguide -- create restaurant guides suitable for printing

File size: 1.5 KB
Line 
1#!/usr/bin/perl
2
3# Copyright 2008 Blars Blarson
4# Distributed under GPL version 2.0
5
6use strict;
7use warnings;
8
9my $filename = $ARGV[0];
10my $pf = $filename;
11$pf =~ s/\.osm$//;
12$pf .= ".poi";
13
14my %subs;
15open POI,"<",$pf or die "Could not open $pf: $!";
16while ($_ = <POI>) {
17  my ($n, $id) = split /\t/;
18  $subs{$id} = $n;
19}
20close POI;
21
22open OSM,"<",$filename or die "Could not open $filename: $!";
23my $sf = $filename;
24$sf =~ s/\.osm$//;
25$sf .= ".sub.osm";
26open SUB,">",$sf or die "Could not open $sf: $!";
27
28my ($id);
29while ($_ = <OSM>) {
30    if (/^\s*\<node\s/) {
31      ($id) = /\sid\=[\"\']?(-?\d+)[\"\']?\b/;
32      if (exists $subs{$id} && ! (/\/\>\s*$/)) {
33        my $found = 0;
34        print SUB $_;
35        while (! /\<\/node\>/) {
36          $_ = <OSM>;
37          if (/\<tag\s+k\=\"([^\"]*)\"\s+v\=\"([^\"]*)\"/) {
38              my $tag = $1;
39              if ($tag eq 'name') {
40                print SUB "  <tag k=\"name\" v=\"$subs{$id}\" />\n";
41                $found = 1;
42              } else {
43                print SUB $_;
44              }
45          } elsif (/\<tag\s+k\=\'([^\']*)\'\s+v\=\'([^\']*)\'/) {
46              my $tag = $1;
47              if ($tag eq 'name') {
48                print SUB "  <tag k=\"name\" v=\"$subs{$id}\" />\n";
49                $found = 1;
50              } else {
51                print SUB $_;
52              }
53          } elsif (/\<\/node\>/) {
54              if (!$found) {
55                  print SUB "  <tag k=\"name\" v=\"$subs{$id}\" />\n";
56              }
57              print SUB $_;
58              last;
59          } else {
60            print SUB $_;
61          }
62        }
63      } else {
64        print SUB $_;
65      }
66    } else {
67      print SUB $_;
68    }
69}
70
71close OSM;
Note: See TracBrowser for help on using the repository browser.