Ejecutando la prueba de abajo puedo confirmar que el intento de Intersección usando una clase de característica que contiene una polilínea auto-intersectiva resultará en una clase de característica con 0 características.
import arcpy
arcpy.CreateFeatureclass_management(
r"C:\Temp\test.gdb", "testFC", "POLYLINE")
cursor = arcpy.da.InsertCursor(
r"C:\Temp\test.gdb\testFC", ["SHAPE@"])
array = arcpy.Array([arcpy.Point(0,0),
arcpy.Point(1,1),
arcpy.Point(0,1),
arcpy.Point(1,0)])
polyline = arcpy.Polyline(array)
cursor.insertRow([polyline])
del cursor
arcpy.Intersect_analysis("C:/Temp/test.gdb/testFC #",
"C:/Temp/test.gdb/testFC2",
output_type="POINT")
numFeats = arcpy.GetCount_management("C:/Temp/test.gdb/testFC2")[0]
print("testFC2 has {0} feature(s)")
Si ejecuta la herramienta Intersect desde su diálogo de herramientas, obtendrá la siguiente advertencia:
ADVERTENCIA 000117: Advertencia de salida vacía generada.
Curiosamente, la polilínea creada arriba parece ser pasada por alto por las herramientas de Comprobar Geometría y Reparar Geometría.
@Vince lo ha confirmado:
Ese es el comportamiento correcto. La intersección requiere que el resultado sea menor que la forma de entrada (alguna parte de la forma NO debe intersecarse). La forma de determinar el par de segmentos que se cruzan es construir un matriz de segmentos de dos puntos a partir de los vértices de la cadena de líneas, la[n] utilizar un bucle anidado doble para buscar los segmentos que se cruzan (se cruzan en que los puntos finales).