source: subversion/applications/rendering/restguide/restgpoi.pl @ 29674

Last change on this file since 29674 was 13180, checked in by blarson, 11 years ago

Show all shops. Turn on grid.
Extract cuisine for poi

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];
10
11open OSM,"<",$filename or die "Could not open $filename: $!";
12
13my ($id, $lat, $lon, %tv, $tv);
14my (@places);
15while ($_ = <OSM>) {
16    if (/^\s*\<node\s/) {
17      %tv = ();
18      unless (/\/\>\s*$/) {
19        while (! /\<\/node\>/s) {
20          $tv = <OSM>;
21          $_ .= $tv;
22          if ($tv =~ /\<tag\s+k\=\"([^\"]*)\"\s+v\=\"([^\"]*)\"/) {
23              my $tag = $1;
24              my $val = $2;
25              $tv{$tag} = $val;
26          } elsif ($tv =~ /\<tag\s+k\=\'([^\']*)\'\s+v\=\'([^\']*)\'/) {
27              my $tag = $1;
28              my $val = $2;
29              $tv{$tag} = $val;
30          }
31        }
32      }
33#      print "Node: $_";
34      ($id) = /\sid\=[\"\']?(\d+)[\"\']?\b/;
35      ($lat) = /\slat\=[\"\']?(-?\d+(?:\.\d+)?)[\"\']?\b/;
36      ($lon) = /\slon\=[\"\']?(-?\d+(?:\.\d+)?)[\"\']?\b/;
37      if (($tv{'amenity'} && ($tv{'amenity'} =~
38                  /^(?:restaurant|fast_food|cafe|hotel|motel|pharmacy|hospital|bank|atm)$/))
39          || ($tv{'tourism'} &&
40              ($tv{'tourism'} =~ /^(?:hotel|motel)$/))
41          || $tv{'shop'} ) {
42        push @places, [$id, $lat, $lon,
43                       $tv{'amenity'} || $tv{'tourism'} || $tv{'shop'},
44                       $tv{'cuisine'}, $tv{'name'} || ''];
45      }
46
47    }
48}
49
50close OSM;
51
52my $pf = $filename;
53$pf =~ s/\.osm$//;
54$pf .= ".poi";
55
56open POI,">",$pf or die "Could not open $pf: $!";
57my $n = 0;
58foreach my $poi (sort { ${$b}[1] <=> ${$a}[1] || ${$a}[2] <=> ${$b}[2] } @places) {
59  my @poi = @$poi;
60  $n++;
61  $poi[5] =~ s/\&amp;/\&/g;
62  print POI join("\t",$n,@poi)."\n";
63}
64
Note: See TracBrowser for help on using the repository browser.