source: subversion/applications/rendering/restguide/restguide

Last change on this file was 12917, checked in by blarson, 12 years ago

Rename osm-blars.xml to osm-restguide.xml

File size: 2.8 KB
Line 
1#!/usr/bin/perl
2
3# Create restauraunt maps from openstreetmap
4# Copyright 2008 Blars Blarson
5# Distributed under GPL version 2.0
6
7# Usage:  restguide [options] name lat lon
8
9# Example, for Loscon at the LAX Mariot:
10#    restguide --lats 0.024 --lons 0.04 --dpi 1800 loscon 33.950 -118.380
11
12# version 0.2   add --poi and --sub options
13
14# version 0.3   update for current orp and more recent stylesheet
15
16use strict;
17use warnings;
18
19# xml file to use
20my $XML="osm-restguide.xml";
21
22my $download = 0;
23my $name="cf4";
24my $lat = 33.681;
25my $lon = -117.844;
26my $lats = 0.027;
27my $lons = 0.038;
28my $dpi = 1800;
29my $res = 300;
30my $poi;
31my $sub;
32
33while ($ARGV[0] =~ /^--/){
34   $_ = shift @ARGV;
35   if (/^--download$/) {
36     $download = 1;
37   } elsif (/^--dpi$/) {
38     $dpi = shift @ARGV;
39   } elsif (/^--res$/) {
40     $res = shift @ARGV;
41   } elsif (/^--lats$/) {
42     $lats = shift @ARGV;
43   } elsif (/^--lons$/) {
44     $lons = shift @ARGV;
45   } elsif (/^--poi$/) {
46     $poi = 1;
47   } elsif (/^--sub$/) {
48     $sub = 1;
49   }
50}
51if (@ARGV) {
52  $name = shift @ARGV;
53}
54if (@ARGV) {
55  $lat = shift @ARGV;
56}
57if (@ARGV) {
58  $lon = shift @ARGV;
59}
60
61#
62
63my $OSM="${name}.osm";
64my $SVG="${name}.svg";
65my $PNG="${name}.png";
66
67if ($download || ! -f $OSM) {
68  my $MINLAT=$lat - $lats;
69  my $MAXLAT=$lat + $lats;
70  my $MINLON=$lon - $lons;
71  my $MAXLON=$lon + $lons;
72  my $wget="wget -O ${OSM} http://api.openstreetmap.org/api/0.5/map?bbox=$MINLON,$MINLAT,$MAXLON,$MAXLAT";
73  print "$wget\n";
74  system($wget);
75}
76
77my $MINLAT=$lat - $lats/2;
78my $MAXLAT=$lat + $lats/2;
79my $MINLON=$lon - $lons/2;
80my $MAXLON=$lon + $lons/2;
81
82# AddBounds($XML, "${XML}.tmp", $MINLON, $MINLAT, $MAXLON, $MAXLAT);
83
84my $pf = "${name}.poi";
85if ($poi || ! -f $pf) {
86    system("restgpoi.pl $OSM");
87}
88if ($sub && -f $pf) {
89  system("restgsub.pl $OSM");
90  $OSM = $name.".sub.osm";
91  $SVG = $name.".sub.svg";
92}
93
94my $orp="orp --bbox=$MINLAT,$MINLON,$MAXLAT,$MAXLON -r ${XML} $OSM";
95print "$orp\n";
96system($orp);
97system("inkscape -D -d $dpi -e ${PNG}.tmp $SVG");
98system("pngcrush -res $res ${PNG}.tmp $PNG");
99
100
101#-----------------------------------------------------------------------------
102# Add bounding-box information to an osm-map-features file
103#-----------------------------------------------------------------------------
104sub AddBounds 
105{
106    my ($FileIn, $FileOut, $W,$S,$E,$N) = @_;
107   
108    # Read the old file
109    open(my $fpIn, "<", "$FileIn");
110    my $Data = join("",<$fpIn>);
111    close $fpIn;
112    die("no such $FileIn") if(! -f $FileIn);
113   
114    # Change some stuff
115    my $BoundsInfo = sprintf(
116      "<bounds minlat=\"%f\" minlon=\"%f\" maxlat=\"%f\" maxlon=\"%f\" />",
117      $S, $W, $N, $E);
118   
119    $Data =~ s/(<!--bounds_mkr1-->).*(<!--bounds_mkr2-->)/$1\n<!-- Inserted by restguide -->\n$BoundsInfo\n$2/s;
120   
121    # Save back to the same location
122    open(my $fpOut, ">$FileOut");
123    print $fpOut $Data;
124    close $fpOut;
125}
Note: See TracBrowser for help on using the repository browser.