#!/usr/bin/perl print "Content-type: text/html\n\n"; # Get Query Variables see parseform.pl for comments $buffer = $ENV{"QUERY_STRING"}; @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($nume, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; $query{$nume} = $value; } $user = $query{'user'}; $date = `date`; chomp($date); $topgraph = $query{'topgraph'}; $topstation = $query{'topstation'}; $topstationname = $query{'stationname'}; $topfrom = $query{'topfrom'}; $topto = $query{'topto'}; $topyrange = $query{'topyrange'}; $topyrangeto = $query{'topyrangeto'}; $bottomgraph = $query{'bottomoption'}; $bottomstation = $query{'bottomstation'}; $bottomstationname = $query{'bottomstationname'}; $botfrom = $query{'botfrom'}; $botto = $query{'botto'}; $botyrange = $query{'botyrange'}; $botyrangeto = $query{'botyrangeto'}; $topbmp = $query {'topbmp'}; $botbmp = $query {'botbmp'}; open (LOGFILE,">>logfile"); #log file print LOGFILE "\n\n$user viewed scatterplot at $date"; print LOGFILE "\nTop Station: $topstation $topstationname $topgraph x from $topfrom to $topto"; if($topyrange eq "" && $topyrangeto eq "") { print LOGFILE " y default"; } else { print LOGFILE " y from $topyrange to $topyrangeto"; } if($topbmp eq 1){ print LOGFILE " w/bmp"; } elsif($topbmp eq 0){ print LOGFILE " w/o bmp"; } print LOGFILE "\nBottom Station: $bottomstation $bottomstationname $bottomgraph x from $botfrom to $botto"; if($botyrange eq "" && $botyrangeto eq ""){ print LOGFILE " y default"; } else { print LOGFILE " y from $botyrange to $botyrangeto"; } if ($botbmp eq 1) { print LOGFILE " w/bmp"; } elsif ($botbmp eq 0) { print LOGFILE " w/o bmp"; } $repeat = 0; $value = $topgraph; while ($repeat <= 1){ if ($value eq 'nitrogen'){ $title = "Nitrogen_Concentration_mg/L"; } elsif ($value eq 'phosphorus'){ $title = "Phosphorus_mg/L"; } elsif ($value eq 'sediments'){ $title = "Sediments_mg/L"; } elsif ($value eq 'heavymetal'){ $title = "Heavy_Metal_mg/L"; } elsif ($value eq 'toxins'){ $title = "Toxins_mg/L"; } elsif ($value eq 'watertemp'){ $title = "Water_Temperature_Degrees_Celsius"; } elsif ($value eq 'temperature'){ $title = "Air_Temperature_Degrees_Celsius"; } elsif ($value eq 'precip'){ $title = "Precipitation_Inches"; } elsif ($value eq 'ph'){ $title = "pH"; } elsif ($value eq 'do'){ $title = "Dissolved_Oxygen_mg/L"; } elsif ($value eq 'bod'){ $title = "BOD_mg/L"; } elsif ($value eq 'saturateddo'){ $title = "Saturated_DO_mg/L"; } elsif ($value eq 'runoff'){ $title = "Runoff_Meters_Cubed"; } elsif ($value eq 'totalflow'){ $title = "Total_Flow_Meters_Cubed"; } elsif ($value eq 'groundwater'){ $title = "Groundwater_Meters_Cubed"; } else { $title = "No_Title_Available"; } if ($repeat == 0){ $topgraph = $title; } if ($repeat == 1){ $bottomoption = $title; } $value = $bottomgraph; $repeat += 1; } #foreach $dog(sort keys %query){ #print "$dog: $query{$dog}
\n"; #} $pid = $query{pid}; $process = $pid; $pid1 = $query{pid}; $pid2 = ($query{pid} + 1); $start = $botyrange; $end = $botyrangeto; $range = $topyrange; $rangeto = $topyrangeto; $region = "Top vs Bottom selections"; # print "ID's: $pid, $pid1, $pid2"; $data1 = "/var/www/html/tmpgif/riverout" . $pid1 . ".dat"; $data2 = "/var/www/html/riverbout" . $pid1 . ".dat"; $data3 = "/var/www/html/riverout" . $pid2 . ".dat"; $data4 = "/var/www/html/riverbout" . $pid2 . ".dat"; # open the first two datafiles and read into new array open (DATA1, "<$data1") || die " couldn't open file $data1: $!"; while (){ chop; if ($_ !~ /#/){ ($buffer, $index, $value) = split(/\s+/, $_); # print "buf $buffer ind $index val $value
"; # it's either going to be buffer or index # or index and value. if ($index){ # print "Adding Line: $. file 1 val $value"; push @data1, $value; } else { # print "didn't push \"$value\" in data1"; ; } } } close (DATA1); open (DATA2, "<$data3") || die " couldn't open file $data3: $!"; while (){ chop; if ($_ !~ /#/){ ($buffer, $index, $value) = split(/\s+/, $_); if ($index){ #print "Adding Line: $. file 2"; push @data2, $value; } else { #print "didn't push \"$value\" in data2"; ; } } } close (DATA2); $temp = $query{'changed'}; if ($temp eq "1"){ open (DATA3, "<$data2") || print "couldn't open file $data2: $!"; while (){ chop; if ($_ !~ /#/){ ($buffer, $index, $value) = split(/\s+/, $_); # may have to remove this because of blank spaces if ($index){ #print "$value\n"; push @data3, $value; } else { #print "didn't push \"$value\" in data3"; ; } } } close (DATA3); open (DATA4, "<$data4") || print "couldn't open file $data4: $!"; while (){ chop; if ($_ !~ /#/){ ($buffer, $index, $value) = split(/\s+/, $_); if ($index){ #print "$value\n"; push @data4, $value; } else { #print "didn't push \"$value\" in data3"; ; } } } close (DATA4); } $scatter1 = "/tmp/scatter1" . $pid . ".dat"; open (SCATTER1, ">$scatter1") || print "couldn't open file $scatter1: $!"; while ($i <= $#data1){ # print "Data: $i d1: $data1[$i] d2: $data2[$i]\n
"; if (($data2[$i]) && ($data1[$i])){ print SCATTER1 "$data2[$i] $data1[$i]\n"; } #print "SCATTER1 \"$data2[$i] $data1[$i]\n\"\n"; $i++; } close (SCATTER1); $i = 0; $scatter2 = "/tmp/scatter2" . $pid . ".dat"; open (SCATTER2, ">$scatter2") || print "couldn't open file $scatter2: $!"; while ($i <= $#data3){ # print "Data: $i $data3[$i] $data4[$i]\n
"; if (($data4[$i]) && ($data3[$i])){ print SCATTER2 "$data4[$i] $data3[$i]\n"; } #print "SCATTER2 \"$data4[$i] $data3[$i]\n\";"; $i++; } close (SCATTER2); ### DEBUG: print a line of a file # $i = 0; # open (SCATTER1, "<$scatter1") || print "couldn't open file $scatter2: $!"; # while (){ # $i++; # print $_ if $i eq 5; # } # close (SCATTER1); # $i = 0; ### # print datafile to tmp directory # if 2nd datafiles exist, # open the second two datafiles and read into new array # print 2nd datafile to tmp directory # call gnuplot # remove files in tmp $gnuplot = "/usr/local/bin/gnuplot"; #$ppmtogif = "/usr/local/bin/ppmtogif"; open (WRITEME, "| $gnuplot"); print WRITEME "set terminal png small xffffff x000000 xaa0000 x000066\n"; print WRITEME "set output \"/tmp/riverscatter$process.png\"\n"; system ("chmod 0666 /tmp/riverscatter$process.png"); print WRITEME "set size .8,.8\n"; print WRITEME "set autoscale\n"; # print WRITEME "test\n"; # print WRITEME "set nokey\n"; print WRITEME "set key below\n"; print WRITEME "set ylabel \"$topgraph\"\n"; print WRITEME "set xlabel \"$bottomoption\"\n"; print WRITEME "set timestamp top rotate\n"; print WRITEME "set xrange [$start:$end] \n"; print WRITEME "set yrange [$range:$rangeto] \n"; print WRITEME "set title \"$region\"\n"; if ($query{changed} eq "1"){ print WRITEME "plot \"$scatter1\" title \"Original\" w points lt 0 ps .6, "; print WRITEME "\"$scatter2\" title \"Best_Management\" w points lt 1 ps .6\n"; } else { print WRITEME "plot \"$scatter1\" title \"Original\" w points lt 0 ps .6\n"; } # print WRITEME #"\"$data3\" title \"Original_B\" w linespoints lt 2 ps .5,"; # print WRITEME #"\"$data4\" title \"Best_Management_B\" w l lt 6\n"; print WRITEME "exit\n"; close (WRITEME); # system ("$ppmtogif < /tmp/riverscatter$process. > /tmp/riverscatter$pid.gif"); system ("mv /tmp/riverscatter$pid.png /var/www/html/tmpgif/"); # system ("rm $scatter2"); # system ("rm /tmp/riverscatter$pid.pbm"); # system ("rm $scatter1"); $png = ("riverscatter" . $pid . ".png"); print <<"HTML"; $topgraph vs $bottomoption HTML #foreach $dog(sort keys %query){ #print "$dog: $query{$dog}
\n"; #} # print "Location: $graphic\n\n";