2 votos

Uso de Intersect para encontrar dónde se cruza una línea en ArcGIS Desktop

¿No puedo generar características de punto donde una característica de línea se cruza a sí misma utilizando la herramienta Intersección?

Intento usarlo con una sola línea de entrada pero cuando lo ejecuto me sale un aviso diciendo que la salida generada está vacía. Hay intersecciones visibles en los datos del GPS por lo que debería producir algún tipo de salida.

Sólo estoy usando una licencia básica así que desafortunadamente no puedo usar reglas de topología para encontrar estas intersecciones.

6voto

John Kramlich Puntos 286

A menos que esté preparado para hacer un script en python o ArcObjects para procesar la geometría individual, las herramientas que podrían responder a este problema sólo están disponibles en un nivel de licencia superior. De lo contrario, tendrá que ser creativo con las herramientas que están disponibles en el nivel de licencia que tiene.

Ahora bien, en cuanto te encuentres con un problema como éste (no hay ninguna herramienta disponible en tu nivel de licencia), el primer lugar al que deberías acudir no es éste, sino Código compartido de ArcGIS Un lugar donde los amables miembros de la comunidad han subido sus herramientas. Te sugerimos que pases un buen rato explorando este...

No me costó casi nada encontrar el herramienta de dividir la línea en los vértices .

  1. Descárgalo, es un script de python empaquetado como una herramienta de geoprocesamiento.
  2. Ejecútalo para segmentar tu línea
  3. Disuelve las líneas segmentadas pero asegúrate de desmarcar la opción de crear multipartes y de marcar las líneas no segmentadas. Si no sabe lo que hacen, lea el archivo de ayuda.
  4. Ejecute la herramienta Intersección en los datos disueltos con la salida establecida en PUNTO.

Result

  1. El resultado será la acumulación de puntos. Si sólo quiere un punto en la intersección, ejecute la herramienta de disolución en la salida del paso (4) y asegúrese de desmarcar la opción multiparte.

¡Et voila!

2voto

FelixIP Puntos 4035

La disolución básica (sin multipartes) lo consigue en poco tiempo. A continuación, puede ejecutar intersect con un parámetro, para encontrar los puntos de intersección después de esto:

Example

0voto

Shawn Anderson Puntos 482

0voto

UnkwnTech Puntos 21942

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.

enter image description here

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).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X