0

I need to create one parallel line for each of my 800 line segments and used this method (code below) to successfully create two parallels. The answer mentions the need to separate them into separate parts but doesn't explain how. How can I convert these into one single parallel for each original polyline?

import arcpy, math
infc=r'..\SCRARCH\clone.shp'

def CopyParallel(plyP,sLength): part=plyP.getPart(0) lArray=arcpy.Array();rArray=arcpy.Array() for ptX in part: dL=plyP.measureOnLine(ptX) ptX0=plyP.positionAlongLine (dL-0.01).firstPoint ptX1=plyP.positionAlongLine (dL+0.01).firstPoint dX=float(ptX1.X)-float(ptX0.X) dY=float(ptX1.Y)-float(ptX0.Y) lenV=math.hypot(dX,dY) sX=-dYsLength/lenV;sY=dXsLength/lenV leftP=arcpy.Point(ptX.X+sX,ptX.Y+sY) lArray.add(leftP) rightP=arcpy.Point(ptX.X-sX, ptX.Y-sY) rArray.add(rightP) array = arcpy.Array([lArray, rArray]) section=arcpy.Polyline(array) return section

with arcpy.da.UpdateCursor(infc,("Shape@","Width")) as cursor: for shp,w in cursor: twoLines=CopyParallel(shp,w) cursor.updateRow((twoLines,w))

Edited to show a screenshot of what I'm working with. Black is original lines and purple are the offset parallels. enter image description here

ElizaC
  • 93
  • 5

1 Answers1

1

remove from the script the part that creates ones of the parallels and you are done.

I will start working removing this:

rightP=arcpy.Point(ptX.X-sX, ptX.Y-sY)
        rArray.add(rightP)

to prevent the creation of the "right parallel"

PolyGeo
  • 65,136
  • 29
  • 109
  • 338
gino
  • 136
  • 1