#!/usr/local/bin/perl # ngsingest.pl eats NGS datasheets on standard input, spits out a summary # of one-line records per marker. It attempts to guess at marker types # from the STATION DESCRIPTION text in the record. # # It works with records obtained from the searches at # http://www.ngs.noaa.gov/datasheet.html, and will take a file with many # datasheets concatenated together. # This script expects to find a directory directly beneath the current # directory called "records", in which it will place each individual # datasheet, in its own text file. # # Warranty: none. Use at your own risk # A. Whinery, U. Hawaii ITS, 7/7/99 #MARKER TYPES: $markertype{14} = "NAV LIGHT"; $markertype{62} = "FLAGPOLE"; $markertype{86} = "CUPOLA"; $markertype{92} = "ANT ON RF"; $markertype{DB} = "BMRK DSK"; $markertype{DD} = "SURV DSK"; $markertype{DE} = "TRVRS DSK"; $markertype{DJ} = "TIDAL DSK"; $markertype{DR} = "REFMRK DSK"; $markertype{DS} = "TRI DSK"; $markertype{W} = "UNMONUMENT"; $notes = ""; $marker = "OTHER"; while (<>) { $PID = substr($_,1,6); if (index($PID,"TU") < 0) {$PID = $apid;} chop; $rec = substr($_,9,12); $mark = substr($_,7,1); if ($mark eq '*') { if (index($rec,"NAD")>=0) { # TU0414* NAD 83(1993)- 21 17 48.29114(N) 157 49 46.26179(W) ADJUSTED $dd=substr($_,24,2); $mm=substr($_,27,2); $ss=substr($_,30,8); $n = substr($lat,39,1); if ($n eq 'S') {$sign = -1} else {$sign = 1}; $lat= $sign * $dd; $latm= int(($mm + $ss/60) * 1000)/1000; $lat = $lat." ".$latm; # TU0414* NAD 83(1993)- 21 17 48.29114(N) 157 49 46.26179(W) ADJUSTED $dd=substr($_,45,3); $mm=substr($_,49,2); $ss=substr($_,52,8); $n = substr($_,61,1); if ($n eq 'W') {$sign = -1} else {$sign = 1}; $lon= $sign * $dd; $lonm= int(($mm + $ss/60) * 1000)/1000; $lon = $lon." ".$lonm; $datum = substr($_,9,12); } # TU0414* LOCAL TIDAL - 5.256 (meters) 17.24 (feet) ADJ UNCH if (index($rec,"LOCAL TIDAL")>=0) { $elev = substr($_,28,8); } }#if else { # TU0414 DESIGNATION - 2 6 if (index($rec,"DESIGNATION")>=0) { $des = substr($_,24); if (index($des,"LIGHT")>=0) {$marker = "LIGHT";} if (index($des,"TOWER")>=0) {$marker = "TOWER";} if (index($des,"SPIRE")>=0) {$marker = "SPIRE";} if (index($des,"POLE")>=0) {$marker = "POLE";} if (index($des,"FLAGPOLE")>=0) {$marker = "FLAGPOLE";} $apid = $PID; } # TU0414 PID - TU0414 # TU0414 STATE/COUNTY- HI/HONOLULU if (index($rec,"STATE/COUNTY")>=0) { $stco = substr($_,24); } # TU0311_MARKER: DD = SURVEY DISK if (index($rec,"ARKER")>=0) { $marker = $markertype{substr($_,16,2)}; } if ((index($_,"THE STATION IS")>=0) && ($marker == "OTHER")) { if (index($_,"LIGHT")>=0) {$marker = "LIGHT";} if (index($_,"TOWER")>=0) {$marker = "TOWER";} if (index($_,"SPIRE")>=0) {$marker = "SPIRE";} if (index($_,"POLE")>=0) {$marker = "POLE";} if (index($_,"FLAGPOLE")>=0) {$marker = "FLAGPOLE";} if (index($_,"DISK")>=0) {$marker = "DISK";} } if ((index($_,"THE STATION MARK IS")>=0) && ($marker == "OTHER")) { if (index($_,"LIGHT")>=0) {$marker = "LIGHT";} if (index($_,"TOWER")>=0) {$marker = "TOWER";} if (index($_,"SPIRE")>=0) {$marker = "SPIRE";} if (index($_,"POLE")>=0) {$marker = "POLE";} if (index($_,"FLAGPOLE")>=0) {$marker = "FLAGPOLE";} if (index($_,"DISK")>=0) {$marker = "DISK";} } # TU0414 USGS QUAD - HONOLULU (1986) if (index($rec,"USGS QUAD")>=0) { $quad = substr($_,24); } }#else if ($PID ne $apid) { print "$apid\t$des\t$lat\t$lon\t$elev\t$quad\t$marker\t$datum\n"; if (!open (NOTES,">records/$apid.txt")) {die "Can't open notes file";} print NOTES $notes; $notes = ""; $marker = "OTHER"; } else {$notes = $notes.$_."\n";} } #while print "$apid:$des:$lat:$lon:$elev:$quad:$marker:$datum:\n"; if (!open (NOTES,">$apid.txt")) {die "Can't open notes file";} print NOTES $notes;