#! /usr/sbin/perl # ======================================================================== # MakePointFiles - make individual html pages for the points # ======================================================================== # History: # -------------------------------------------------------------------- # 03202000 aew Initial coding - stolen from R-arcticnet # -------------------------------------------------------------------- # set up a hash for the datatypes # -------------------------------------------------------------------- %dtypes = ( "ca" => "Air Temperature (C)", "ua" => "Air Temperature (C)", "up" => "Precipitation (mm)", "cp" => "Precipitation (mm)", "ud" => "Stream Discharge (cms)", "cd" => "Stream Discharge (cms)", "us" => "Snowfall (mm)" ); # -------------------------------------------------------------------- # read the ClosePoints.txt file into memory for fast access.... # -------------------------------------------------------------------- $FILENAME = "ClosePoints.txt"; $ok = open(CP,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } $|=1; print "Processing - Reading ClosePoints.txt: "; # get all the close points while ($inline = ) { $inline = ; chop($inline); @points=split(/,/,$inline); $nopoints=@points; if ($nopoints>1) { for ($x=0;$x<$nopoints;$x++) { $temp=@points[$x]; @points[$x]=@points[0]; @points[0]=$temp; for ($y=1;$y<$nopoints;$y++) { if (@points[$y]) { $ClosePoints{@points[0]}.=(@points[$y].","); } } } } } close(CP); # force each point list to be a unique set foreach $key (keys %ClosePoints) { # print "Before: ".$point."\n"; @pointentry=split(/,/,$ClosePoints{$key}); for($i=0;$i<$#pointentry;$i++) { for($j=$i+1;$j<=$#pointentry;$j++) { if ($pointentry[$i] eq $pointentry[$j]) { $pointentry[$j]=""; } } } $point=""; foreach $pe (@pointentry) { if ($pe ne "") { $point .= $pe . ","; } } $ClosePoints{$key}=substr($point,0,-1); # print "After: ".$ClosePoints{$key}."\n"; } print "Done\n"; # -------------------------------------------------------------------- # read the pointmap.txt file into memory for fast access.... # -------------------------------------------------------------------- print "Processing - Reading pointmap.txt: "; $FILENAME = "stations/point.txt"; $ok = open(PM,$FILENAME); if (! $ok) { print "\nError 2 - Unable to open file ".$FILENAME." for reading!\n\n"; exit; } $pmlines=0; while ($inline = ) { (@PIDs[$pmlines],$row,$col) = split(',',$inline); chomp(@PIDs[$pmlines]); chomp($row); chomp($col); @TILEs[$pmlines]=$row."_".$col; $pmlines++; } close(PM); print "Done\n"; # -------------------------------------------------------------------- # filename for sites.txt # -------------------------------------------------------------------- $FILENAME = "stations/station.txt"; $ok = open(IN,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } # read header away $inline = ; # -------------------------------------------------------------------- # read the 4 timeseries files into memory for fast access.... # -------------------------------------------------------------------- $FILENAME = "timeseries/GOM_US_ATemp_TS.txt"; print "Processing - Reading ".$FILENAME.": "; $ok = open(TS,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } $ua_dataheader = ; $ua_nlines=0; while ($inline = ) { @ua_Lines[$ua_nlines]=$inline; chop($inline); $inline =~ s/\ +//g; (@ua_StationId[$ua_nlines],@ua_Year[$ua_nlines],@ua_Jan[$ua_nlines],@ua_Feb[$ua_nlines],@ua_Mar[$ua_nlines],@ua_Apr[$ua_nlines],@ua_May[$ua_nlines],@ua_Jun[$ua_nlines],@ua_Jul[$ua_nlines],@ua_Aug[$ua_nlines],@ua_Sep[$ua_nlines],@ua_Oct[$ua_nlines],@ua_Nov[$ua_nlines],@ua_Dec[$ua_nlines]) = split('\t',$inline); @ua_StationId[$ua_nlines] =~ s/\ +//g; @ua_StationId[$ua_nlines] =~ s/"//g; @ua_Year[$ua_nlines] =~ s/"//g; $ua_nlines++; } close(TS); print "Done\n"; #################### $FILENAME = "timeseries/GOM_US_Discharge_TS.txt"; print "Processing - Reading ".$FILENAME.": "; $ok = open(TS,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } $ud_dataheader = ; $ud_nlines=0; while ($inline = ) { @ud_Lines[$ud_nlines]=$inline; chop($inline); $inline =~ s/\ +//g; (@ud_StationId[$ud_nlines],@ud_Year[$ud_nlines],@ud_Jan[$ud_nlines],@ud_Feb[$ud_nlines],@ud_Mar[$ud_nlines],@ud_Apr[$ud_nlines],@ud_May[$ud_nlines],@ud_Jun[$ud_nlines],@ud_Jul[$ud_nlines],@ud_Aug[$ud_nlines],@ud_Sep[$ud_nlines],@ud_Oct[$ud_nlines],@ud_Nov[$ud_nlines],@ud_Dec[$ud_nlines]) = split('\t',$inline); @ud_StationId[$ud_nlines] =~ s/\ +//g; @ud_StationId[$ud_nlines] =~ s/"//g; @ud_Year[$ud_nlines] =~ s/"//g; $ud_nlines++; } close(TS); print "Done\n"; #################### $FILENAME = "timeseries/GOM_US_Precip_TS.txt"; print "Processing - Reading ".$FILENAME.": "; $ok = open(TS,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } $up_dataheader = ; $up_nlines=0; while ($inline = ) { @up_Lines[$up_nlines]=$inline; chop($inline); $inline =~ s/\ +//g; (@up_StationId[$up_nlines],@up_Year[$up_nlines],@up_Jan[$up_nlines],@up_Feb[$up_nlines],@up_Mar[$up_nlines],@up_Apr[$up_nlines],@up_May[$up_nlines],@up_Jun[$up_nlines],@up_Jul[$up_nlines],@up_Aug[$up_nlines],@up_Sep[$up_nlines],@up_Oct[$up_nlines],@up_Nov[$up_nlines],@up_Dec[$up_nlines]) = split('\t',$inline); @up_StationId[$up_nlines] =~ s/\ +//g; @up_StationId[$up_nlines] =~ s/"//g; @up_Year[$up_nlines] =~ s/"//g; $up_nlines++; } close(TS); print "Done\n"; #################### $FILENAME = "timeseries/GOM_US_Snowfall_TS.txt"; print "Processing - Reading ".$FILENAME.": "; $ok = open(TS,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } $us_dataheader = ; $us_nlines=0; while ($inline = ) { @us_Lines[$us_nlines]=$inline; chop($inline); $inline =~ s/\ +//g; (@us_StationId[$us_nlines],@us_Year[$us_nlines],@us_Jan[$us_nlines],@us_Feb[$us_nlines],@us_Mar[$us_nlines],@us_Apr[$us_nlines],@us_May[$us_nlines],@us_Jun[$us_nlines],@us_Jul[$us_nlines],@us_Aug[$us_nlines],@us_Sep[$us_nlines],@us_Oct[$us_nlines],@us_Nov[$us_nlines],@us_Dec[$us_nlines]) = split('\t',$inline); @us_StationId[$us_nlines] =~ s/\ +//g; @us_StationId[$us_nlines] =~ s/"//g; @us_Year[$us_nlines] =~ s/"//g; $us_nlines++; } close(TS); print "Done\n"; $|=1; print "Processing - Creating Point Files: "; # -------------------------------------------------------------------- # loop through all the points, process one at a time..... # -------------------------------------------------------------------- while ($inline = ) { chop($inline); ($PointID,$Id,$Name,$SymbolFLD,$Stat_id,$Country,$GOM_ID,$DataType,$DataSource,$StateProv,$Lat,$Lon,$Elevation,$BegYr,$EndYr,$Rest) = split('\t',$inline); # -------------------------------------------------------------------- # clean the variables, remove spaces, quotes, print the Ticker ..... # -------------------------------------------------------------------- $PointID =~ s/"//g; $Name=~ s/"//g; $Stat_id=~ s/"//g; $Country=~ s/"//g; $GOM_ID=~ s/"//g; $DataType=~ s/"//g; $DataSource=~ s/"//g; $StateProv=~ s/"//g; $|=1; printf "%s%-11s","\b\b\b\b\b\b\b\b\b\b\b",$PointID; # -------------------------------------------------------------------- # create the Site Descriptor page.... # -------------------------------------------------------------------- # open the output HTML file $outname = ">Points/Des_".$PointID.".txt"; $ok = open(OUT,$outname); if (! $ok) { print "Unable to open file ".$outname." for writing\n\n"; exit; } # print copyright if necessary # if ($Source eq "Hydat") { # print OUT $copyright; # } # dump the data with labels print OUT "Station ID: " . substr($PointID,2) . "\n"; print OUT "Name: " . $Name . "\n"; print OUT "DataType: " . $dtypes{substr($PointID,0,2)} . "\n"; print OUT "DataSource: " . $DataSource . "\n"; print OUT "StateProv: " . $StateProv . "\n"; print OUT "Lat: " . $Lat . "\n"; print OUT "Lon: " . $Lon . "\n"; print OUT "Elevation: " . $Elevation . "\n"; print OUT "BegYr: " . $BegYr . "\n"; print OUT "EndYr: " . $EndYr . "\n"; # Close file so we can re-use the file handle close (OUT); # -------------------------------------------------------------------- # create the main page.... # -------------------------------------------------------------------- # open the output HTML file $outname = ">Points/".$PointID.".html"; $ok = open(OUT,$outname); if (! $ok) { print "Unable to open file ".$outname." for writing\n\n"; exit; } # print the header print OUT "\n\n"; print OUT $Name; print OUT "\n\n\n"; print OUT "
"; print OUT $Name; print OUT "\n"; print OUT "
\n
\n"; # -------------------------------------------------------------------- # print out the thumbnail images # -------------------------------------------------------------------- print OUT "
\n"; print OUT ""; for($pm=0;$pm<=$pmlines;$pm++) { if ($PIDs[$pm] eq $PointID) { # print $PIDs[$pm] . " " . $PointID . "\n"; $tileno = $TILEs[$pm]; } } if ($tileno eq "") { print "\nPointID # ".$PointID." Not found in pointmap file!\n"; } print OUT "\n"; # Image map for continent view based on Index image print OUT "\n"; print OUT < header # -------------------------------------------------------------------- # Add some flags to the right hand side # -------------------------------------------------------------------- print OUT "

"; print OUT "
"; print OUT "\n"; print OUT "\n"; print OUT "
"; print OUT "\n"; print OUT "

"; print OUT "

\n"; print OUT "
\n"; print OUT "
\n"; print OUT "
\n
\n"; # -------------------------------------------------------------------- # dump the data with labels # -------------------------------------------------------------------- print OUT "
\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "
Name: " . $Name . "Lattitude: " . $Lat . "
Station ID: " . $Stat_id . "Longitude: " . $Lon . "
Data Type: " . $dtypes{substr($PointID,0,2)} . "Elevation: "; if ($Elevation) { print OUT $Elevation . " (m)"; } print OUT "
Data Source: " . $DataSource . "Beginning Year: " . $BegYr . "
State / Province: " . $StateProv . "Ending Year: " . $EndYr . "
\n
\n
\n"; # -------------------------------------------------------------------- # check for close sites and if there are some - print the table # -------------------------------------------------------------------- if ($ClosePoints{$PointID}) { @points = split(/,/,$ClosePoints{$PointID}); $FILENAME = "stations/station.txt"; $ok = open(CP,$FILENAME); if (! $ok) { print "Unable to open file ".$FILENAME." for reading!\n\n"; exit; } print OUT "
\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; $throwaway=; while ($inline2 = ) { chomp($inline2); ($PointID2,$ID2,$Name2,$rest2) = split('\t',$inline2); $PointID2 =~ s/\ +//g; $PointID2 =~ s/"//g; chomp($PointID2); foreach $point (@points) { if ($PointID2 eq $point) { $Name2=~ s/"//g; print OUT "\n\n"; } } } close(CP); print OUT "\n
Other Close Sites"; print OUT "
Data TypePointIDName
"; print OUT $dtypes{substr($PointID2,0,2)}."";; print OUT "".substr($PointID2,2).""; print OUT "".$Name2."
\n"; print OUT "
\n"; } # -------------------------------------------------------------------- # print the download table # -------------------------------------------------------------------- print OUT "
\n"; if ( $datatype eq "ca" || $datatype eq "cd" || $datatype eq "cp") { print OUT "

Due to data provider restrictions,"; print OUT " we are not able to provide tabular data for this site"; print OUT " at this time.

"; } print OUT "\n"; print OUT "\n"; print OUT "\n\n\n"; print OUT "
Download
\n"; print OUT "Site Descriptor Information\n"; print OUT " \n\n"; print OUT "Site Time Series Data\n"; print OUT "
\n

\n
\n"; # -------------------------------------------------------------------- # include the plot # -------------------------------------------------------------------- print OUT "
\n"; $gifname=$PointID.".gif"; if (-e ("HydroGraphs/".$gifname)) { print OUT ""; print OUT "\n"; print OUT "
\n"; } else { print OUT "
\n"; } # -------------------------------------------------------------------- # print the table of data AND the Data output file. # -------------------------------------------------------------------- # open the data output HTML file $outname = ">Points/Data_".$PointID.".txt"; $ok = open(DATA,$outname); if (! $ok) { print "Unable to open file ".$outname." for writing\n\n"; exit; } # print the data file header $datatype=substr($PointID,0,2); if ($datatype eq "ua") { print DATA $ua_dataheader; } elsif ($datatype eq "ud") { print DATA $ud_dataheader; } elsif ($datatype eq "up") { print DATA $up_dataheader; } elsif ($datatype eq "us") { print DATA $us_dataheader; } elsif ($datatype eq "ca") { print DATA "Due to data provider restrictions, we are not able to provide\ntabular data for this site at this time."; } elsif ($datatype eq "cd") { print DATA "Due to data provider restrictions, we are not able to provide\ntabular data for this site at this time."; } elsif ($datatype eq "cp") { print DATA "Due to data provider restrictions, we are not able to provide\ntabular data for this site at this time."; } else { print DATA "Data not available"; } # if us_ loop through the rest - if the ID matches then save line to file and # make a table entry print OUT "
\n"; print OUT "Station Data File:\n
\n"; print OUT "
\n"; if ($datatype eq "ut" || $datatype eq "ua" || $datatype eq "up" || $datatype eq "ud" || $datatype eq "us") { print OUT "\n"; print OUT ""; print OUT ""; if ($datatype eq "ua") { print OUT " "; $nlines=$ua_nlines; } elsif ($datatype eq "ud") { print OUT " "; $nlines=$ud_nlines; } elsif ($datatype eq "up") { print OUT " "; $nlines=$up_nlines; } elsif ($datatype eq "us") { print OUT " "; $nlines=$us_nlines; } print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; print OUT "\n"; for($n=0;$n<=$nlines;$n++) { if ($datatype eq "ua") { if ($ua_StationId[$n] eq substr($PointID,2)) { print DATA $ua_Lines[$n]; print OUT "\n"; print OUT ""; if ($ua_Jan[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Feb[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Mar[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Apr[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_May[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Jun[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Jul[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Aug[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Sep[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Oct[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Nov[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ua_Dec[$n]) { print OUT "\n"; } else { print OUT "\n"; } print OUT "\n"; } } elsif ($datatype eq "ud") { if ($ud_StationId[$n] eq substr($PointID,2)) { print DATA $ud_Lines[$n]; print OUT "\n"; print OUT ""; if ($ud_Jan[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Feb[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Mar[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Apr[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_May[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Jun[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Jul[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Aug[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Sep[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Oct[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Nov[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($ud_Dec[$n]) { print OUT "\n"; } else { print OUT "\n"; } print OUT "\n"; } } elsif ($datatype eq "up") { if ($up_StationId[$n] eq substr($PointID,2)) { print DATA $up_Lines[$n]; print OUT "\n"; print OUT ""; if ($up_Jan[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Feb[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Mar[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Apr[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_May[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Jun[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Jul[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Aug[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Sep[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Oct[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Nov[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($up_Dec[$n]) { print OUT "\n"; } else { print OUT "\n"; } print OUT "\n"; } } elsif ($datatype eq "us") { if ($us_StationId[$n] eq substr($PointID,2)) { print DATA $us_Lines[$n]; print OUT "\n"; print OUT ""; if ($us_Jan[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Feb[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Mar[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Apr[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_May[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Jun[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Jul[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Aug[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Sep[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Oct[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Nov[$n]) { print OUT "\n"; } else { print OUT "\n"; } if ($us_Dec[$n]) { print OUT "\n"; } else { print OUT "\n"; } print OUT "\n"; } } } print OUT "
Point IdYearAir Temperature CDischarge m3/sPPT mmSnowfall mm
JanFebMarAprMayJunJulAugSepOctNovDec
".$ua_StationId[$n]."".$ua_Year[$n]."".$ua_Jan[$n]."
".$ua_Feb[$n]."
".$ua_Mar[$n]."
".$ua_Apr[$n]."
".$ua_May[$n]."
".$ua_Jun[$n]."
".$ua_Jul[$n]."
".$ua_Aug[$n]."
".$ua_Sep[$n]."
".$ua_Oct[$n]."
".$ua_Nov[$n]."
".$ua_Dec[$n]."
".$ud_StationId[$n]."".$ud_Year[$n]."".$ud_Jan[$n]."
".$ud_Feb[$n]."
".$ud_Mar[$n]."
".$ud_Apr[$n]."
".$ud_May[$n]."
".$ud_Jun[$n]."
".$ud_Jul[$n]."
".$ud_Aug[$n]."
".$ud_Sep[$n]."
".$ud_Oct[$n]."
".$ud_Nov[$n]."
".$ud_Dec[$n]."
".$up_StationId[$n]."".$up_Year[$n]."".$up_Jan[$n]."
".$up_Feb[$n]."
".$up_Mar[$n]."
".$up_Apr[$n]."
".$up_May[$n]."
".$up_Jun[$n]."
".$up_Jul[$n]."
".$up_Aug[$n]."
".$up_Sep[$n]."
".$up_Oct[$n]."
".$up_Nov[$n]."
".$up_Dec[$n]."
".$us_StationId[$n]."".$us_Year[$n]."".$us_Jan[$n]."
".$us_Feb[$n]."
".$us_Mar[$n]."
".$us_Apr[$n]."
".$us_May[$n]."
".$us_Jun[$n]."
".$us_Jul[$n]."
".$us_Aug[$n]."
".$us_Sep[$n]."
".$us_Oct[$n]."
".$us_Nov[$n]."
".$us_Dec[$n]."
\n
\n"; close(DATA); } else { print DATA "\n"; } # print copyright if necessary # if ($Source eq "Hydat") { # print OUT "
\n"; # print OUT $cleancopy; # print OUT "\n"; # } # print navigation links print OUT "
\n"; print OUT "\n"; print OUT ""; print OUT "
\n
\n"; close (OUT); } print "\n"; end;