# ssfltrt1.qry # This is a sample script to draw a right-lateral strike slip # fault line symbol (solid) with solid half-arrows. # Modified for legend samples August 2002. # Modified to declare all variables, October 2005 # Version Dec. 2007 # Requires TNTmips 2007:73 or later. # Modified to adjust scale based on georeference map units and to # place displacement symbols only at the center of the lines numeric red, green, blue; numeric scale, widthMap, width, arrowLengthMap, arrowSize; numeric flipSize, angle, headBase, offset; class RVC_GEOREFERENCE vGeoref; class SR_COORDREFSYS vectCRS; class STRING coordUnit$; ###################### Set Parameters ############################## # Red, green, blue variables define the color of the line red = 255; green = 0; blue = 0; # This variable defines the denominator of the intended map scale. # It is used as the basis for defining line width and symbol size # and spacing. # Example: for 1:24,000 map scale, Scale = 24000 scale = 24000; # This variable controls the width of the lines. # WidthMap is the desired map width in mm, assuming vector # coordinates are in meters. widthMap = 0.3; # These variables control the length of the arrows # ArrowLengthMap is the desired arrow length in mm, assuming vector # coordinates are in meters: arrowLengthMap = 5; # Check if vector has geographic coordinates (units of degrees instead of meters) # and if so adjust scale factor to draw symbols of appropriate size. Vect.GetDefaultGeoref(vGeoref); vectCRS = vGeoref.GetCoordRefSys(); if (vectCRS.IsProjected() <> 1) { if (vectCRS.IsLocal() <> 1) { scale = scale * 0.000009; } } else { # CRS is projected; check coordinate units to adjust scale # get coordinate unit from the first axis of the planar coordinate system coordUnit$ = vectCRS.Coordsys.GetAxis(1).Unit.GetSymbol(); scale = scale * GetUnitConvDist("m", coordUnit$); } # set final dimensions for drawing if (DrawingLegendView == 1) { # set dimensions for LegendView based on sample size width = 0.1 * SampleRect.GetHeight(); arrowSize = 0.7 * SampleRect.GetWidth(); } else { # set dimensions for drawing elements in view scale = scale / 1000; # conversion from meters to millimeters width = widthMap * scale; arrowSize = arrowLengthMap * scale; } # This variable controls the length of the arrow head flipSize = 0.4 * arrowSize; # This variable controls the sweep angle of the arrow in degrees angle = 30; # 30 degree angle headBase = flipSize * sind(angle); # This variable controls how far from the base line to draw arrows offset = 0.2 * arrowSize; ######################## Process ########################### # Set line color, width, and draw fault line. LineStyleSetColor(red,green,blue); LineStyleSetLineWidth(width); LineStyleDrawLine(); # Draw arrows LineStyleSetPosition(0.5); # move to center of line LineStyleRoll(-(arrowSize * 0.5)); # roll back half arrow length to center arrows # Draw first half-arrow LineStyleMoveTo(90, offset); LineStyleRecordPolygon(1); # start recording vertices for arrow head polygon LineStyleLineTo(0, arrowSize); # draw arrow shaft forward parallel to line LineStyleDropAnchor(1); LineStyleMoveTo(180 - angle, flipSize); # arrowhead side LineStyleMoveTo(-90, headBase); # arrowhead base LineStyleDrawPolygon(1); # draw and fill polygon # draw the other half-arrow LineStyleMoveToAnchor(1); LineStyleMoveTo(-90, 2 * offset); # offset to other side of line LineStyleRecordPolygon(1); LineStyleLineTo(180, arrowSize); # draw arrow shaft backward parallel to line LineStyleMoveTo(-angle, flipSize); LineStyleMoveTo(90, headBase); LineStyleDrawPolygon(1);