5 votos

Automatizar la denominación de la red de aguas pluviales (red geométrica)

Tenemos una red geométrica que representa nuestra red de aguas pluviales. Para quien no esté familiarizado con las redes de drenaje de aguas pluviales, éstas se componen de tuberías y fosos (simplificados para esta pregunta). Los pozos son necesarios siempre que se unen dos tuberías o se requiere un cambio de dirección. Por lo tanto, en la red geométrica, los pozos son cruces y las tuberías son bordes.

Las clases de rasgos dentro de la red geométrica son un Rasgo de Punto para las fosas y un Rasgo de Polilínea para las tuberías.

Mi tarea es atribuir a cada tubería y fosa un nombre único de acuerdo con nuestra política de nombres. El nombre de la tubería o arqueta depende de su ubicación en la red. La política de nomenclatura simplificada es la siguiente:

Las fosas reciben un número que empieza por el 1 en la salida (la más alejada de la corriente) Las tuberías reciben el número de su fosa aguas arriba

Me gustaría automatizar este proceso de nombramiento. Tengo poca experiencia en Arcgis y Python, pero tengo experiencia en Java. ¿Alguien tiene algún consejo sobre cómo lograr esto? Nombrar manualmente los pozos/tubos me llevará entre 4 y 8 semanas. Preferiría dedicar 8 semanas a aprender ArcObjects, etc. Supongo que tengo que representar la red como un gráfico en Java, a partir de ahí el proceso de nombramiento sería fácil.

¿Cómo extraer las relaciones geométricas de la red en un gráfico?

2voto

Christian Lescuyer Puntos 8656

Podría ser sólo mi perspectiva como un jinete de ArcGIS, pero el manejo de las relaciones de características en su propio código suena más difícil. Si aprovechas la capacidad de ArcGIS para hacerlo, creo que es más sencillo. ¿Qué te parece dedicar parte de tus 8 semanas a aprender ArcGIS y Python? :) No sé si hay una forma mejor de recorrer una red, pero al menos puedes arrastrarte utilizando repetidamente "seleccionar por ubicación" en ArcMap. Es de suponer que podría hacer lo mismo en ArcObjects. Pero si yo estuviera haciendo esto, escribiría un script en python que recorriera usando "select by location". Asumiremos que el usuario seleccionará el pozo #1 de forma interactiva, almacenará su nombre en la tabla de atributos y luego iniciará el script. La lógica del script se ve así:

  1. Usa arcpy.MakeFeatureLayer_management para hacer una capa de características de todas las tuberías, y otra capa de características de todas las fosas. Los llamaré AllPipes y AllPits

  2. Usa arcpy.MakeFeatureLayer_management con una consulta SQL para hacer una capa de características que contenga (sólo) la fosa #1, llamada OnePit.

  3. arcpy.SelectLayerByLocation_management con la operación intersect seleccionará las características en AllPipes que tocan OnePit. Luego usa un cursor de edición para ir a través de ellos y aplicar lo que sean las reglas de negocio para asignarles nombres basados en lo que vas a nombrar sus pozos aguas arriba en el siguiente paso. Escriba el nombre en la característica de la tubería dentro del bucle del cursor utilizando el método setValue para el objeto de la fila.

  4. Luego, para cada tubería que hayas seleccionado, usa arcpy.SelectLayerByLocation_management de nuevo para seleccionar todo en AllPits que intersecte esa tubería. (Puede ser necesario hacer una capa de características de cada tubería usando una consulta SQL que la seleccione basada en su nombre). Esto le dará dos pozos (aguas arriba y aguas abajo), pero uno de ellos ya tiene un nombre. Asigna el nombre a la que no lo tiene.

  5. Ahora tienes uno o más pares de tuberías/pozos a los que has puesto nombre. Vuelve a hacer OnePit, utilizando cada uno de los pozos a los que acabas de dar nombre por turnos, enjabona, aclara y repite.

Una desventaja de esto es que para una red gigante, hacer la selección por ubicación de manera iterativa va a ser lento. El uso de un espacio de trabajo en memoria ayudaría mucho con eso.

2voto

Geog Puntos 1604

Puede utilizar Trazar la red geométrica gp tool and accumulate in_edge_along_digitized_weight {Peso de la arista que se utiliza como coste para atravesar una arista a lo largo de la dirección digitalizada de dicha arista. El peso debe estar ya definido para la red geométrica dada} - y - FIND_UPSTREAM_ACCUMULATION. utilizar el valor acumulado para el índice

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