diff --git a/noinfo/make-indxal4.pl b/noinfo/make-indxal4.pl new file mode 100755 index 000000000..8f6c8add1 --- /dev/null +++ b/noinfo/make-indxal4.pl @@ -0,0 +1,543 @@ +#!/usr/bin/perl -w +use strict; + +# no file made for 1996-01 (e.g.) Fix it. +# 136 ents are in 161. why? +# no_info col is redundant + +((my $progname = $0) =~ s/^.*(\/|\\)//ig); # basename $0 + +unless ($ARGV[0]) { + print "Specify a CSV file name as the first argument (e.g. CAVETAB2.CSV)\n"; + die $!; +} + +open (CSV, "< $ARGV[0]"); + +my $verbose_progress = 1; +if ($ARGV[1]) { + if ($ARGV[1] eq "-q") { + $verbose_progress = undef; + } +} + +# Start writing index file +open IDXALL, ">..\/indxal.htm" or die $!; +print IDXALL << "END"; + + + + + +Loser Plateau area : Cave description index + + + + +

Kataster Gruppe 1623:
Loser Augst-Eck - INDEX

+ + + +END + +; # starting to read in csv file, eat header line + +# Read in pos file to @pos now rather than later so we don't repeat it n times +open INPUT2, "< all.pos" or print "Could not find all.pos in the current directory\n" and die $!; +my @pos = ; +close INPUT2; + +# Go down a directory +chdir ".."; + +# While loop which reads in each line of csv file +while () { + chomp; + do_this_line($_, "cave"); +} + +print IDXALL << "END"; +
+ +
+ + +> +Back to CUCC Home page
+> +Back to Expedition Intro page
+ +> +Main Indices:
+ +---> +Index to Expo information pages
+---> +Description of CUCC's area and split to subareas
+---> +List of (links to) published reports and logbooks
+ +> +Pictures:
+ +---> +Text only Index
+---> +Index pages (with thumbnails)
+ +> +Other info:
+ +---> +Table of members of CUCC expeditions 1976-99
+---> +Other groups who have worked in the area.
+---> +Adjacent area 1626 + + + +END + +close IDXALL; +print "Information: Done\n"; + +sub do_this_line { + # Split single line into all the fields + my ($kat_num, $kat_status, $ents, $other_number, $mult_ents, $file, $linkfile, $name, $unofficial_name, $comment, $area, $no_info, $explorers, $u_description, $equipment, $qmlist, $katstatus, $references, $u_centre_line, $u_drawn_survey, $survex_file, $length, $depth, $extent, $header, $footer, $notes, $ent_name, $tag_punkt, $other_punkt, $desc_other_punkt, $exact_punkt, $fix_type, $gpspresa, $gpspostsa, $northing, $easting, $altitude, $bearings, $map, $location, $approach, $ent_desc, $ent_photo, $marking) = &parse_csv($_[0]); + + if ($_[2] and ! $kat_num) { + $kat_num = $_[2]; + } + if ($_[3] and ! $other_number) { + $other_number = $_[3]; + } + + # Generate $number variable to hold kataster no. or other no. if no kataster no. present + my $number = $kat_num; + my $other_number_no_brackets = $other_number; + if ($kat_num and $other_number) { + $other_number = "($other_number)"; # wrap it in brackets, so it doesn't appear to be official + } elsif ($other_number and ! $kat_num) { + $number = $other_number; + } + + # Determine the number of directorys deep the caves main page is at in order to link to area descriptions and indxal + my $toroot = 'Q'; # hey; it's magic + my $counter = ($file =~ tr/\///); + while ($counter) { + $toroot = join('', $toroot, "/.."); + $counter--; + } + $toroot =~ s/Q\///; + + if ($_[1] eq "cave") { + my $e = $ents; + $e =~ s/ +/ /g; + print IDXALL "$kat_num $other_number"; + if ($e) { + print IDXALL " - $e"; + } + print IDXALL ""; + if ($file) { + print IDXALL ""; + } elsif ($linkfile) { + print IDXALL ""; + } + if ($name) { + print IDXALL $name; + } else { + print IDXALL "?"; + } + if ($unofficial_name) { + print IDXALL " ($unofficial_name)"; + } + if ($file or $linkfile) { + print IDXALL ""; + } + if ($comment) { + print IDXALL " - $comment"; + } + print IDXALL "\n"; + } + + unless ($file) { # this IS necessary + if ($mult_ents eq "yes") { + my $e_mult_ents; + do { + my $e = ; + chomp; + my (undef, undef, undef, undef, $emult_ents) = &parse_csv($e); + $e_mult_ents = $emult_ents; + } while ($e_mult_ents ne "last entrance"); + } + return; + } + + if ($verbose_progress) { + print "Progress: $file\n"; + } + + $number =~ s/\//-/g; + $number =~ s/\?/q/; + open FILE, "> $file" or die $!; + + print FILE << "END"; + + + + + +END + + if ($kat_num) { + print FILE "1623:$kat_num"; + } else { + print FILE "<title>$number"; + } + + print FILE << "END"; + + + + + +
+END + + if ($header) { + print FILE "$header\n"; + } + + print FILE "\n"; + print FILE ""; + print FILE ""; + if ($kat_status) { + print FILE ""; + } + print FILE "\n
"; + if ($kat_num) { + print FILE "$kat_num"; + } + if ($ents) { + print FILE " - $ents"; + } + if ($other_number) { + print FILE " $other_number"; + } + print FILE "$name"; + if ($unofficial_name) { + print FILE " ($unofficial_name)"; + } + print FILE "$kat_status
\n
"; + + if ($length or $depth or $extent) { + print FILE "\n\n

"; + } + if ($length) { + print FILE "Length: $length "; + } + if ($depth) { + print FILE "Depth: $depth "; + } + if ($extent) { + print FILE "Extent: $extent "; + } + + # Entrance specific bit + + unless ($mult_ents eq "yes") { + # If there is only one entrance + if ($tag_punkt or $other_punkt or $exact_punkt or $gpspostsa or $gpspresa or $easting or $northing or $altitude or $fix_type or $desc_other_punkt or $ent_name) { + print FILE "\n\n

"; + unless ($ent_name) { + print FILE "Entrance:\n
\n"; + } + } + do_ent($tag_punkt,$other_punkt,$exact_punkt,$gpspostsa,$gpspresa,$easting,$northing,$altitude,$ent_name,$fix_type,$desc_other_punkt); + + } else { + # If there are multiple entrances + multi_ents($file, $kat_num, $other_number, $other_number_no_brackets, $toroot); + } + + # Cave general bit + if ($location) { + print FILE "\n\n

Location: $location"; + } + if ($bearings) { + print FILE "\n\n

Bearings: $bearings"; + } + if ($approach) { + print FILE "\n\n

Approach: $approach"; + } + if ($map) { + print FILE "\n\n

Map: $map"; + } + if ($ent_desc) { + print FILE "\n\n

Entrance Description: $ent_desc"; + } + if ($ent_photo) { + print FILE "\n\n

Entrance Photo: $ent_photo"; + } + if ($marking and $marking ne "\r" and $marking ne "\r\n") { # bodgelicious. + print FILE "\n\n

Marking: $marking"; + } + if ($references) { + print FILE "\n\n

References: $references"; + } + if ($u_description) { + print FILE "\n\n

Underground Description: $u_description"; + } + if ($equipment) { + print FILE "\n\n

Equipment: $equipment"; + } + if ($qmlist) { + print FILE "\n\n

QM list: $qmlist"; + } + if ($u_drawn_survey) { + print FILE "\n\n

Survey: $u_drawn_survey"; + } + if ($notes) { + print FILE "\n\n

Notes: $notes"; + } + if ($explorers) { + print FILE "\n\n

Explorers: $explorers"; + } + if ($katstatus) { + print FILE "\n\n

Kataster Status: $katstatus"; + } + if ($u_centre_line) { + print FILE "\n\n

Centre Line: $u_centre_line"; + } + if ($survex_file) { + print FILE "\n\n

Survex file: $survex_file"; + } + + print FILE "\n


\n\n"; + + if ($footer) { + print FILE "\n

$footer"; + } + + if ($area =~ /(1a|1b|1c|1d)/) { + print FILE "\n\">\""; + print FILE "\nPlateau area index and description
"; + } + if ($area =~ /(2a|2b)/) { + # we repeat this each time due to cave 39 + print FILE "\n\">\""; + print FILE "\nSchwarzmooskogel ridge area index and description
"; + } + if ($area =~ /3/) { + print FILE "\n\">\""; + print FILE "\nBräuning Alm area index and description
"; + } + if ($area =~ /4/) { + print FILE "\n\">\""; + print FILE "\nKratzer valley index and description
"; + } + if ($area =~ /5/) { + print FILE "\n\">\""; + print FILE "\nSchwarzmoos-Wildensee area index and description
"; + } + if ($area =~ /6/) { + print FILE "\n\">\""; + print FILE "\nFar plateau area index and description
"; + } + if ($area =~ /7/) { + print FILE "\n\">\""; + print FILE "\nEgglgrube area index and description
"; + } + if ($area =~ /(8a|8b|8c|8d)/) { + print FILE "\n\">\""; + print FILE "\nLoser/Augst See area index and description
"; + } + if ($area =~ /9/) { + print FILE "\n\">\""; + print FILE "\nGschwandt area index and description
"; + } + if ($area =~ /10/) { + print FILE "\n\">\""; + print FILE "\nN & NE shore of Altauseer See
"; + } + if ($area =~ /11/) { + print FILE "\n\">\""; + print FILE "\nAugstbach area index and description
"; + } + unless ($area) { + print FILE "\n\">\""; + print FILE "\nGo Back (Javascript)
"; + } + + print FILE << "END"; +> +Full Index
+> +Other Areas
+> +Back to Expedition Intro page + + + +END + + close FILE; +} + +sub parse_csv { + my $line = $_[0]; + my @parsedline = (); + my $field = ''; + + while ($line =~ m{ \G(?:^|,) + (?: "((?> [^"]*) (?> "" [^"]*)*)" | ([^",]*)) }gx) { + if ($2) { + $field = $2; + } elsif ($1) { + $field = $1; + $field =~ s/""/"/g; + } else { + $field = ''; + } + + push(@parsedline, $field); + } + + return(@parsedline); +} + +sub do_ent { + my $punkt; + my $calc_easting; + my $calc_northing; + my $calc_altitude; + my $desc; + my $tag_punkt = $_[0]; + my $other_punkt = $_[1]; + my $exact_punkt = $_[2]; + my $gpspostsa = $_[3]; + my $gpspresa = $_[4]; + my $easting = $_[5]; + my $northing = $_[6]; + my $altitude = $_[7]; + my $ent_name = $_[8]; + my $fix_type = $_[9]; + my $desc_other_punkt = $_[10]; + + # Write out info for entrance + if ($ent_name) { + print FILE "Entrance Name: $ent_name\n\n

"; + } + if ($altitude) { + print FILE "Recorded Alt: $altitude "; + } + if ($northing) { + print FILE "Recorded as N$northing "; + } + if ($easting) { + print FILE "Recorded as E$easting "; + } + if ($fix_type) { + print FILE "Fix type: $fix_type "; + } + if ($tag_punkt) { + print FILE "Tag point: $tag_punkt "; + } + if ($other_punkt) { + print FILE "Point: $other_punkt "; + if ($desc_other_punkt) { + print FILE "Point description: $desc_other_punkt "; + } else { + print FILE "Point description: none "; + } + } + if ($exact_punkt) { + print FILE "Exact entrance: $exact_punkt "; + } + if ($gpspresa) { + print FILE "GPS pre sa: $gpspresa "; + } + if ($gpspostsa) { + print FILE "GPS post sa: $gpspostsa "; + } + + # Decide which punkt to lookup + if ($tag_punkt) { + $punkt=$tag_punkt; + $desc = "tag point"; + } elsif ($other_punkt) { + $punkt = $other_punkt; + $desc = "point"; + } elsif ($exact_punkt) { + $punkt = $exact_punkt; + $desc = "exact point"; + } elsif ($gpspostsa) { + $punkt = $gpspostsa; + $desc = "GPS (pre SA)"; + } elsif ($gpspresa) { + $punkt = $gpspresa; + $desc = "GPS (post SA)"; + } + + # Find the position of that punkt + if ($punkt) { + for my $surveypoint (@pos) { + if ($surveypoint =~ m/\( *([0-9\.\-]*), *([0-9\.\-]*), *([0-9\.\-]*) \) $punkt(\r\n|\n|\r)/){ + $calc_easting=$1; + $calc_northing=$2; + $calc_altitude=$3; + } + } + if ($calc_easting) { + print FILE "
Lookup values for $desc data: "; + print FILE "Alt: $calc_altitude "; + print FILE "N$calc_northing "; + print FILE "E$calc_easting "; + } else + { print "Warning: Lookup point for $desc data not found: $punkt\n"; } + } +} + +sub multi_ents { + my $file = $_[0]; + my $kat_num = $_[1]; + my $other_number = $_[2]; + my $other_number_no_brackets = $_[3]; + my $toroot = $_[4]; + + print FILE "\n\n

"; + print FILE "\n

Entrances:\n
"; + my $e_mult_ents; + + do { + my $e = ; + chomp; + + my ($ekat_num, undef, $eents, $eother_number, $emult_ents, $efile, $elinkfile, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, $eent_name, $etag_punkt, $eother_punkt, $edesc_other_punkt, $eexact_punkt, $efix_type, $egpspresa, $egpspostsa, $enorthing, $eeasting, $ealtitude) = &parse_csv($e); + + if ($eother_number) { + $eother_number = "($eother_number)"; # wrap it in brackets, so it doesn't appear to be official + } + + print FILE "\n\n

  • "; + + if ($elinkfile) { + print FILE "$eents $eother_number "; + do_this_line($e, "entrance", $kat_num, $other_number_no_brackets); + } elsif ($efile) { + print FILE "$eents $eother_number "; + close FILE; # perl filehandles are not recursively safe (when hacking at 4 in the morning). thus do this. + + do_this_line($e, "entrance", $kat_num, $other_number_no_brackets); + open FILE, ">> $file" or die $!; + } else { + print FILE "$eents $eother_number"; + } + + do_ent($etag_punkt,$eother_punkt,$eexact_punkt,$egpspostsa,$egpspresa,$eeasting,$enorthing,$ealtitude,$eent_name,$efix_type,$edesc_other_punkt); + $e_mult_ents = $emult_ents; + } while ($e_mult_ents ne "last entrance"); + + print FILE "\n\n
  • "; +}