Check out the latest version of Routino: svn co http://routino.org/svn/trunk routino
Contents of /trunk/web/www/routino/visualiser.cgi
Parent Directory
|
Revision Log
Revision 676 -
(show annotations)
(download)
Fri Apr 22 14:07:33 2011 UTC (13 years, 10 months ago) by amb
File size: 2850 byte(s)
Fri Apr 22 14:07:33 2011 UTC (13 years, 10 months ago) by amb
File size: 2850 byte(s)
Another change related to turn restrictions (missed in last checkin).
1 | #!/usr/bin/perl |
2 | # |
3 | # Routino data visualiser CGI |
4 | # |
5 | # Part of the Routino routing software. |
6 | # |
7 | # This file Copyright 2008-2011 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|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 | "turns" => 0.3, |
72 | "weight" => 0.3, |
73 | "height" => 0.3, |
74 | "width" => 0.3, |
75 | "length" => 0.3 |
76 | ); |
77 | |
78 | # Check the parameters |
79 | |
80 | $latmin=$cgiparams{"latmin"}; |
81 | $latmax=$cgiparams{"latmax"}; |
82 | $lonmin=$cgiparams{"lonmin"}; |
83 | $lonmax=$cgiparams{"lonmax"}; |
84 | $data =$cgiparams{"data"}; |
85 | |
86 | if($latmin eq "" || $latmax eq "" || $lonmin eq "" || $lonmax eq "" || $data eq "") |
87 | { |
88 | print header(-status => '500 Invalid CGI parameters'); |
89 | exit; |
90 | } |
91 | |
92 | if(($latmax-$latmin)>$limits{$data} || ($lonmax-$lonmin)>$limits{$data}) |
93 | { |
94 | print header(-status => '500 Selected area too large'); |
95 | exit; |
96 | } |
97 | |
98 | # Print the output |
99 | |
100 | print header('text/plain'); |
101 | |
102 | print "$latmin $lonmin $latmax $lonmax\n"; |
103 | |
104 | # Run the filedumper |
105 | |
106 | $params.=" --dir=$data_dir" if($data_dir); |
107 | $params.=" --prefix=$data_prefix" if($data_prefix); |
108 | $params.=" --visualiser --data=$data"; |
109 | $params.=" --latmin=$latmin --latmax=$latmax --lonmin=$lonmin --lonmax=$lonmax"; |
110 | |
111 | system "$bin_dir/$filedumper_exe $params 2>&1"; |
Properties
Name | Value |
---|---|
svn:executable | * |