Me parece que no puede encontrar.
Respuestas
¿Demasiados anuncios?En ArcGIS 10.1 y posteriores, hay una herramienta llamada COGO - situado en la Barra de herramientas del Editor/Más Herramientas de Edición/COGO. En la barra de herramientas hay un botón llamado de Informes COGO descripciones. La herramienta de informes tiene una característica llamada "Ángulo entre dos líneas" que indica el ángulo entre 3 puntos en una línea.
Esta secuencia de comandos de Python herramienta hará el truco. Para usarlo, agregar como una herramienta de secuencia de comandos, establezca el parámetro a la Función de Fijar y establecer su esquema a una clase de entidad de línea. Este script debe trabajar con 10.0 y más tarde.
# calculate an azimuth angle from a interactively entered
# line (feature set)
#
# Curtis Price, cprice@usgs.gov, 9/18/2013 11:51:10 AM
import math
import arcpy
# read line (This parameter should be a line feature set)
line = arcpy.GetParameterAsText(0)
# to see how this is used, see the help:
# http://resources.arcgis.com/en/help/main/10.1/index.html#//001500000028000000
# http://resources.arcgis.com/en/help/main/10.1/index.html#//002w00000023000000
def get_angle(xy1, xy2):
"""Calculate azimuth angle from two points. (Zero is north.)"""
import math
try:
# ArcPy point objects
x1, y1, x2, y2 = xy1.X, xy1.Y, xy2.X, xy2.Y
except:
# xy strings, e.g. "0 0"
x1, y1 = [float(x) for x in xy1.split()]
x2, y2 = [float(x) for x in xy2.split()]
dx, dy = (x2 - x1, y2 - y1)
return 90 - math.degrees(math.atan2(dy, dx))
try:
# get first and last point of a line
SHAPE = arcpy.Describe(line).shapeFieldName
Rows = arcpy.SearchCursor(line,"","",SHAPE)
feat = Rows.next().getValue(SHAPE)
pt1 = feat.firstPoint
pt2 = feat.lastPoint
angle = get_angle(pt1, pt2)
msg1 = " First point: {0:.1f}, {0:.1f}".format(pt1.X, pt1.Y)
msg2 = " Last point: {0:.1f}, {0:.1f}".format(pt2.X, pt2.Y)
msg3 = " Azimuth angle (in degrees): {0:.1f}".format(angle)
arcpy.AddMessage("{0}\n{1}\n{2}".format(msg1, msg2, msg3))
except:
raise Exception, "Invalid line input"