# segp2lin.ak # script takes a segp file and creates a series of lineaments #NOTE: add one to the last lineament number to get the last one #### April 18, 2005 # corrected bugs when segp files have headers with each seismic line. # added parsing to colour code different seismic line names. # Eric Keyser BEGIN {#FS = "," # comma deliminated files line = ""; flag = "false"; printf("# Photon Systems ASCII Format v1.0\n") printf("\n") printf("struct CultureLayer { Name }\n") printf("\n") printf("struct Text { ColorName X Y Height Justification Text }\n") printf("\n") printf("struct Polyline {\n") printf(" ColorName LineWidth FillPattern Smooth Closed\n") printf(" Points[ N ] { X Y }\n") printf("}\n") printf("\n") colour = "None" Width = 1 # while ( getline ==1 && substr($0,3,4) != "LINE"); # while ( getline ==1 && substr($0,3,4) != "LINE"); # printf("%s\n",$0) i = 1 # Outer loop while ( getline == 1 ) { if (substr($0,1,1) == " ") { X[i] = substr($0,46,8) Y[i] = substr($0,54,8) line = $1 Oldline = line # Collect all the points for a closed segment while ( Oldline == line && getline == 1) { if (substr($0,1,1) == " ") { ++i Oldline = line X[i] = substr($0,46,8) Y[i] = substr($0,54,8) line = $1 } } # while Numlines = i # printf("Line num %12.0f\n",Oldline) colour = "Black" ######################### Change code if you want lines colour coded by a common character sequence in the line name ########################## if ( index(Oldline,"BAF") > 0 ) colour="Red" if ( index(Oldline,"AZQ") > 0 ) colour="Dark Green" if ( index(Oldline,"1A33") > 0 ) colour="Magenta" ############################################################################### # if ( Oldline > 10000 ) colour="Dark Green" # if ( Oldline > 20000 ) colour="Red" # if ( Oldline > 30000 ) colour="Green" # if ( Oldline > 40000 ) colour="Cyan" # if ( Oldline > 50000 ) colour="Blue" # if ( Oldline > 60000 ) colour="Magenta" # if ( Oldline > 70000 ) colour="Yellow" # if ( Oldline > 80000 ) colour="Purple" # if ( Oldline > 90000 ) colour="Orange" # colour = "Red" # if ( oldcolour != colour) printf("CultureLayer \"%d0_%s\"\n", (Oldline / 10000), colour) # only one permit if ( oldcolour != colour) printf("CultureLayer \"Seismic %s\"\n", colour) # only one permit oldcolour = colour #Print the attributes of the line segment, colour, Width, number of points printf("Polyline \"%s\" %s None False False\n", colour, Width); printf("%d\n",Numlines - 1) for ( i = 1; i <= (Numlines -1); i++ ) printf("%12.2f %12.2f\n",X[i]/10.0,Y[i]/10.0) i = 1 X[i] = X[Numlines]; Y[i] = Y[Numlines]; ++i } } # while ( getline = 1) #Print the very last line last index out by one printf("%12.2f %12.2f\n",X[Numlines]/10.0,Y[Numlines]/10.0) } #Middle { } END { }