awkhold:
BEGIN { FS = "," } { FS = "," ARGC = 2 depth = -9999 temp = -9999 if ($1=="$GPRMC") { utctime = $2 utcdate = $10 latdeg = substr($4,1,2) latmin = substr($4,3,6) declat = latdeg + (latmin/60) londeg = substr($6,1,3) lonmin = substr($6,4,6) declon = -1 * (londeg + (lonmin/60)) if (NR==1) { holddepth = -9999 holdtemp = -9999 } else { printf("%s, %s, %9.6f, %9.6f, %5.1f, %5.1f, %s\n", holdutctime, holdutcdate, holddeclon, holddeclat, holddepth, holdtemp, ARGV[2]) } holdutctime = utctime holdutcdate = utcdate holddeclon = declon holddeclat = declat holddepth = -9999 holdtemp = -9999 } if ($1=="$SDDPT") { depthreal = $2 holddepth = depthreal } if ($1=="$SDMTW") { tempreal = $2 holdtemp = tempreal } } END { printf("%s, %s, %9.6f, %9.6f, %5.1f, %5.1f, %s\n", holdutctime, holdutcdate, holddeclon, holddeclat, holddepth, holdtemp, ARGV[2]) }This file was executed by a shell script to effectively batch process all the files in a single folder with the extension gps. The batch processor was dohold.
dohold:
files=`ls *.gps | cut -d. -f1 | tr "[A-Z"] ["a-z"]` for file in $files do awk -f awkhold $file.gps $file > $file.holds doneUnder Cygwin, all of the *.holds files were concatenated into a single comma-delimited text file and a header line added to the file. The header line added to the text file was: gpstime, gpsdate, longitude, latitude, depth_m, temp_c, line. Using ArcMap 9.2 - Tools - Add XY Data, the comma-delimited text file was added as an event theme to ArcMap. No erroneous points were detected.
awknewgps:
BEGIN { FS="," } { FS="," alltime=$1 alldate=$2 tempc=$5 depth=$7 outfile=$6 "_newgps.gps" declon=$3 * -1 londeg=int(declon) lonmin=(declon-londeg)*60 declat=$4 latdeg=int(declat) latmin=(declat-latdeg)*60 printf("$GPRMC,%06d,A,%02d%06.3f,N,%03d%06.3f,W,000.0,0,%06d,0,W*73\n",alltime,latdeg,latmin,londeg,lonmin,alldate) >> outfile printf("$SDDPT,%s,0.0*56\n",depth) >> outfile if (tempc != -9999) { printf("$SDMTW,%s,C*01\n",tempc) >> outfile } }Effectively what this script does is not only format the GPS file, but also output the information to the appropriate filename (which is based on the line name).