Xiaobai recurrió a Python para calcular la distancia más larga de las entidades poligonales de ArcGIS en una dirección determinada.
Leer entidades poligonales utilizando el objeto poligonal en la biblioteca arcpy.
Para calcular las coordenadas del punto inicial y final de las líneas paralelas que se van a interceptar, puedes utilizar las funciones sin y cos en la biblioteca matemática.
Crea líneas paralelas usando el objeto polilínea en la biblioteca arcpy.
Utilice la función Intersect_analysis en la biblioteca arcpy para calcular los puntos de intersección de entidades poligonales y líneas paralelas.
Utiliza la función sqrt en la biblioteca matemática para calcular la distancia desde cada intersección hasta el punto inicial.
Encuentra la distancia más larga y regresa.
Aquí hay un código de muestra:
Importar arcpyimport math
# Leer polígono = arcpy polígono(arcpy . array([arcpy . point(* coords) para coordenadas en polígono _ coords])
#Ángulo
Ángulo = 112#Coordenadas del punto inicial
start_x, start_y = polígono.centroid.x,polígono. centroid . y
#Calcular las coordenadas del punto final
End _ x = start _ x math.cos (math. radianes (ángulo)) * 1000 # 1000 es la longitud de la línea paralela. /p>
end _ y = start _ y math . sin(math . radians(angle))* 1000 #Crea líneas paralelas
line_array = arcpy array([arcpy). .point(punto inicial) x, punto inicial y), arcpy. Point(end_x, end_y)]) línea = arcpy (matriz de líneas)
#Calcular puntos de intersección = arcpy ([polígono, línea). ], arcpy.geometry())
#Calcular la distancia desde cada intersección hasta el punto inicial
distancias = [math.sqrt((point.X - start_x) ** 2 (point. Y - start_y) ** 2) Para puntos en intersect_points]
#Encontrar la distancia más larga
max_distance = max (distancia)
p>Print('Distancia máxima:', distancia máxima)
Tenga en cuenta que polygon_coords en el código anterior es una lista que contiene coordenadas de entidades poligonales. Además, es necesario instalar la biblioteca arcpy de ArcGIS en el código y configurar el entorno Python para que se ejecute normalmente.