Routino SVN Repository Browser

Check out the latest version of Routino: svn co http://routino.org/svn/trunk routino

ViewVC logotype

Contents of /trunk/web/www/routino/visualiser.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1002 - (show annotations) (download)
Tue Jun 5 13:17:42 2012 UTC (12 years, 9 months ago) by amb
File size: 2964 byte(s)
Add an option to the visualiser to display segments accessible to each of the
transport types.

1 #!/usr/bin/perl
2 #
3 # Routino data visualiser CGI
4 #
5 # Part of the Routino routing software.
6 #
7 # This file Copyright 2008-2012 Andrew M. Bishop
8 #
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU Affero General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU Affero General Public License for more details.
18 #
19 # You should have received a copy of the GNU Affero General Public License
20 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #
22
23 # Use the directory paths script
24 require "paths.pl";
25
26 # Use the perl CGI module
27 use CGI ':cgi';
28
29 # Create the query and get the parameters
30
31 $query=new CGI;
32
33 @rawparams=$query->param;
34
35 # Legal CGI parameters with regexp validity check
36
37 %legalparams=(
38 "latmin" => "[-0-9.]+",
39 "latmax" => "[-0-9.]+",
40 "lonmin" => "[-0-9.]+",
41 "lonmax" => "[-0-9.]+",
42 "data" => "(junctions|super|oneway|transport-.*|turns|speed|weight|height|width|length)"
43 );
44
45 # Validate the CGI parameters, ignore invalid ones
46
47 foreach $key (@rawparams)
48 {
49 foreach $test (keys (%legalparams))
50 {
51 if($key =~ m%^$test$%)
52 {
53 $value=$query->param($key);
54
55 if($value =~ m%^$legalparams{$test}$%)
56 {
57 $cgiparams{$key}=$value;
58 last;
59 }
60 }
61 }
62 }
63
64 # Parameters to limit range selected
65
66 %limits=(
67 "junctions" => 0.1,
68 "speed" => 0.2,
69 "super" => 0.2,
70 "oneway" => 0.2,
71 "transport" => 0.2,
72 "turns" => 0.3,
73 "weight" => 0.3,
74 "height" => 0.3,
75 "width" => 0.3,
76 "length" => 0.3
77 );
78
79 # Check the parameters
80
81 $latmin=$cgiparams{"latmin"};
82 $latmax=$cgiparams{"latmax"};
83 $lonmin=$cgiparams{"lonmin"};
84 $lonmax=$cgiparams{"lonmax"};
85 $data =$cgiparams{"data"};
86
87 if($latmin eq "" || $latmax eq "" || $lonmin eq "" || $lonmax eq "" || $data eq "")
88 {
89 print header(-status => '500 Invalid CGI parameters');
90 exit;
91 }
92
93 $subdata=$data;
94 $subdata="transport" if($data =~ m%transport-%);
95
96 if(($latmax-$latmin)>$limits{$subdata} || ($lonmax-$lonmin)>$limits{$subdata})
97 {
98 print header(-status => '500 Selected area too large');
99 exit;
100 }
101
102 # Print the output
103
104 print header('text/plain');
105
106 print "$latmin $lonmin $latmax $lonmax\n";
107
108 # Run the filedumper
109
110 $params.=" --dir=$data_dir" if($data_dir);
111 $params.=" --prefix=$data_prefix" if($data_prefix);
112 $params.=" --visualiser --data=$data";
113 $params.=" --latmin=$latmin --latmax=$latmax --lonmin=$lonmin --lonmax=$lonmax";
114
115 system "$bin_dir/$filedumper_exe $params 2>&1";

Properties

Name Value
svn:executable *