Using the Measure Tool, I know how to measure lines, area, etc., but how can i measure the angle in a feature. For example a power line running north turns west at a pole. What is the angle of that turn?

- I just came across this same problem today... Trying to measure angles of powerlines. I can't believe that ESRI hasn't come up with a quick tool to measure an angle. All of our poles are now GPS'd and it would be very helpful to verify the angles of the turns in the line to make sure all of the structures are built correctly for the angles that they actually have.

If there is anyone out there that has a way to measure the angles please let us know.

ESRI, is there something in the works within the measure tool that could measure angles? - 2 people found this helpfulActually, there is a built-in tool to perform this task. However, it is only available at the ArcEditor and ArcInfo levels.

It is located on the COGO toolbar and called COGO Report.

See the help file here: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Reporting_COGO_descriptions/001t000000p5000000/

Goog luck,

Frank - 2 people found this helpful
I know you're looking for a tool to do this one at a time, but this script will calculate all turn angles along all lines (in a feature layer called "line" below), in a newly created in_memory point feature class (called "points" below), in a field called, "Angle":

>>> import math ... sr = arcpy.Describe("line").spatialReference ... arcpy.CreateFeatureclass_management('in_memory','points',"POINT",spatial_reference=sr) ... arcpy.AddField_management('points','Angle',"DOUBLE") ... insCur = arcpy.da.InsertCursor("points",('SHAPE@','Angle')) ... with arcpy.da.SearchCursor("line",["SHAPE@"]) as cursor: ... for row in cursor: ... for part in row[0]: ... pt_count = 1 ... for pnt in part: ... pnt = arcpy.PointGeometry(pnt,sr) ... if pt_count > 1: ... if pt_count >2: ... distAB = oneBack.distanceTo(twoBack) ... distBC = pnt.distanceTo(oneBack) ... distAC = pnt.distanceTo(twoBack) ... angB = math.degrees(math.acos((((distAB*distAB)+(distBC*distBC))-(distAC*distAC))/(2*distAB*distBC))) ... insCur.insertRow((oneBack,angB)) ... twoBack = oneBack ... oneBack = pnt ... pt_count += 1 ... del insCur

Greetings Darren,

Thank you very much for sharing this script to calculate the deflection angles of a line. I am inexperienced with arcpy, but have been expanding my understanding daily. Finally, in the past week, my understanding of the integration of Python in ArcGIS allowed me to understand your script. After some manipulation to meet my needs, it works! Thanks again.

Chris

Hello Darren,

This script appears to very close to what I need for results which is comparing vertices on a line (transmission line with transmission poles being the nodes) and measuring the angle between each line segment (vertex) and if greater that 30 degrees, label that line segment (vertex).

Is this something you could spin up?

Many thanks in advance!

Jim Fritz

Perhaps someone out there knows womething I don't know.

Best of luck.