Usando ArcGIS for Desktop Advanced 10.1 (con todas las extensiones)
Estoy construyendo una red de líneas centrales que será utilizada por un programa de MapObjects para enrutamiento basado en "giros en cualquier vértice" (en lugar de giros solo en puntos finales...) Lo que estoy tratando de hacer es identificar los pasos superiores/pasos inferiores que tienen un vértice compartido con la carretera que lo cruza (pero no se considera una intersección) Si hay un vértice compartido, entonces el programa de mapeo hará (incorrectamente) un giro donde físicamente no es posible. Hasta el momento he construido una topología utilizando la regla "No debe intersectar (Línea)". Exporto los errores a una clase de entidad, y ahora tengo un montón de puntos en intersecciones que necesito verificar. Lo que me pregunto es si hay una manera de recorrer cada punto y verificar si existe un vértice donde la línea central intersecta el punto. Esto es lo que he desarrollado hasta ahora...
import arcpy
fcPoints = "C:/MiCapaDePuntos..."
fcCenterlines = "C:/MiCapaDeLineasCentrales..."
rows = arcpy.UpdateCursor(fcPoints)
for row in rows:
# Para cada punto, seleccionar las líneas centrales que tocan (intersecan) ese punto
arcpy.SelectLayerByAttribute_management(fcPoints, "NEW_SELECTION", "\"OBJECTID\" = " + str(row.getValue("OBJECTID")))
arcpy.SelectLayerByLocation_management(fcCenterlines, "INTERSECT", fcPoints)
# Necesito código aquí para recorrer cada línea central seleccionada y determinar si existe un vértice en la ubicación SHAPE@XY del punto?
#PSEUDO CÓDIGO:
for each line in selection:
vertexExists = False
for each vertex in line:
if vertex.xy == point.xy:
vertexExists = True
# Si hay un vértice coincidente, entonces actualizar un campo en la capa de puntos para "FLAG"earlo...
if vertexExists == True:
row.setValue("FLAG", "VERIFICAR ESTA INTERSECCIÓN")
cursor.updateRow(row)
¿O.... hay una manera más sencilla...? Estaría revisando alrededor de 2000 puntos...