Tengo dos shapefiles, Point y Polyline. Estoy tratando de llenar mi capa de polilínea con el ID de datos de punto (systemID) donde las líneas comienzan donde terminan; p.ej. crear dos columnas (desde y hasta). Las líneas ya tienen asignada la dirección del flujo. Estoy usando las herramientas de ArcHydro pero Arcpy también está bien.
En ArcHydro, he intentado usar Herramientas de atributo> Generar nodos de / a para líneas, pero crea valores para To y From que no son de mis datos de puntos. Mi otra alternativa era usar Feature to Vertices y unir el resultado a mi tabla de datos de puntos para obtener el ID del sistema. Pero entonces también tendría que actualizar la capa de polilínea. Estoy seguro de que hay una manera más fácil de hacerlo.
Nota: no todas las líneas tienen puntos en los vértices, los valores en blanco están bien para ellos.
fuente
Respuestas:
A veces es mejor no usar una solución lista para usar. Por eso sugiero
Ir a 2, pero usar el último punto para asignar TO nodeID
fuente
Hice lo mismo hace unos meses. Utilicé arcpy pero el guión es demasiado largo para publicarlo aquí, así que te daré un resumen de lo que hice.
Utilicé una unión espacial para detectar qué puntos / nodos estaban dentro de una entidad de línea particular.
Debido a que la unión espacial no tiene en cuenta la dirección del flujo, utilicé arcpy para determinar cuál era el punto inicial y cuál era el punto final. Pude hacer esto usando la función de descripción arcpy para extraer información de coordenadas para los vértices de inicio / fin de la entidad de línea y los comparé con los valores de coordenadas de los puntos conectados.
Finalmente, una vez que resolví cuáles de los puntos para / desde los cuales usé la función setValue para llenar los campos para / desde en el conjunto de datos de polilínea original.
Obviamente, hay un poco más que esto, pero he esbozado los puntos principales.
fuente
Me inspiré en @FelixIP, pero quería escribir una solución sin combinaciones o la creación de archivos adicionales, ya que mi red es bastante grande con 400K + tuberías y 500K + nodos.
La construcción de la red geométrica obliga a que X, Y de los nodos y los extremos de la tubería coincidan. Puede acceder a estas ubicaciones con los tokens de forma en cursores de arco y combinarlos. Los tokens de forma para líneas devuelven una matriz de vértices en el orden en que fueron dibujados. En mi red, el orden de extracción de las tuberías está fuertemente controlado por calidad porque lo usamos para establecer las direcciones de flujo. Entonces, el primer vértice es el comienzo de la tubería, y el último vértice es el final de la tubería.
Referencia: ASSETID = identificación de la tubería, UNITID = identificación del nodo al inicio de la tubería, UNITID2 = identificación del nodo al final de la tubería.
fuente