After running the script below the "point" layer that is created does not have any features and of course no angles calculated. Any ideas on why this might be would be appreciated.
import math 02.... sr = arcpy.Describe("Z77").spatialReference 03.... arcpy.CreateFeatureclass_management('in_memory','points',"POINT",spatial_reference=sr) 04.... arcpy.AddField_management('points','Angle',"DOUBLE") 05.... insCur = arcpy.da.InsertCursor("points",('SHAPE@','Angle')) 06.... with arcpy.da.SearchCursor("Z77",["SHAPE@"]) as cursor: 07.... for row in cursor: 08.... for part in row: 09.... pt_count = 1 10.... for pnt in part: 11.... pnt = arcpy.PointGeometry(pnt,sr) 12.... if pt_count > 1: 13.... if pt_count >2: 14.... distAB = oneBack.distanceTo(twoBack) 15.... distBC = pnt.distanceTo(oneBack) 16.... distAC = pnt.distanceTo(twoBack) 17.... angB = math.degrees(math.acos((((distAB*distAB)+(distBC*distBC))-(distAC*distAC))/(2*distAB*distBC))) 18.... insCur.insertRow((oneBack,angB)) 19.... twoBack = oneBack 20.... oneBack = pnt 21.... pt_count += 1 22.... del insCur
Solved! Go to Solution.
Add some print statements, particularly before you try to insert, to ensure the values are what you expect. If not, or if the print never executes, back up and figure out where it's failing.
Hmm, just noticed that prior to running script there was attribute field called "angle" and populated from some earlier tinkering. I just deleted it so I will re-run the script.
I really appreciate the help! I see that the script does work so just have to keep plugging away at it. I don't have much more time today but will pick up again tomorrow.
For some reason, your print statements aren't printing because the code never gets to them, so you need to back-track to figure out where the problem is. See which prints get executed. If nothing, there would seem to be a problem in the feature class itself.
with arcpy.da.SearchCursor("Z77",["SHAPE@"]) as cursor: for row in cursor: print('this is a feature') for part in row: print('this is a part in the feature') pt_count = 1 for pnt in part: print('this is a point in the part in the feature') ...
I used the code above and as you can see above nothing is printed. The feature class appears normal (a polyline) with 111 segments. Not sure what is going on here.