Español

Cómo: Agregar valores z de inicio y fin a una entidad de línea mediante un script de Python

Resumen

No hay ninguna forma directa de insertar una elevación de inicio y fin de una entidad de línea como valores de atributo. La herramienta Interpolar forma solo puede agregar valores z a la geometría de entidad y la herramienta Agregar información de superficie solo puede agregar la elevación media de una entidad definiendo la superficie de elevación. Sin embargo, es posible agregar los valores z de inicio y fin a una entidad de línea como valores de atributo combinando la herramienta Interpolar forma y un script de Python.

Procedimiento

Las instrucciones proporcionadas describen cómo agregar valores z de inicio y fin a una entidad de línea.

  1. Ejecute la herramienta Interpolar forma para agregar los vértices de valores z a las entidades de línea deseadas. Introduzca los datos de elevación en el campo Superficie de entrada y seleccione la entidad de línea deseada en el desplegable Clase de entidad de entrada.

    The image of the Interpolate Shape tool.
     
  2. Abra la tabla de atributos de la entidad de línea recién creada y agregue dos nuevos campos con el tipo de datos Flotante o Doble para los valores z de inicio y fin. Para obtener más información sobre cómo agregar campos, consulte el siguiente documento de la ayuda web: ArcGIS Desktop: Agregar campos.

    Image of newly created Z fields.
     
  3. Ejecute el siguiente script con la consola de Python (Geoprocesamiento > Python).
     
    import arcpy
    
    #Especifique el espacio de trabajo deseado.
    input_fc = r'\'
    
    #Modificar esta parte de acuerdo con los nombres de campo especificados que creó en el paso 2.
    myfield1 = "Z_Start"
    myfield2 = "Z_End"
    myshape = "SHAPE@"
    
    #Iterar entre filas disponibles en la tabla de atributos de la entidad de línea e introduzca los valores z.
    with arcpy.da.UpdateCursor(input_fc, (myshape, myfield1, myfield2)) as cursor:
        for row in cursor:
            geom = row[0]
            startpt = row[0].firstPoint
            endpt = row[0].lastPoint
            row[1] = round(startpt.Z, 2)
            row[2] = round(endpt.Z, 2)
            cursor.updateRow(row)

    The image of the sample script.
     
  4. El resultado se rellena en los dos nuevos campos creados en el paso 2.

    Image of populated Z fields.

Información relacionada