Calcular la pendiente de una línea sobre una superficie es sencillo usando la herramienta Add Surface Information en ArcGIS Pro. Esta herramienta superpone la entidad línea con una superficie, como un conjunto de datos LAS o ráster, para extraer los valores de elevación y calcular el valor de la pendiente.<\/P>
¿Pero qué hacer cuando no se tiene una capa de superficie para el cálculo?<\/STRONG><\/EM><\/P>Cómo calcular la pendiente<\/H2>Primero desglosaremos el cálculo de la pendiente para entender mejor las necesidades específicas de tus datos. La pendiente se calcula dividiendo el cambio de elevación por la distancia horizontal cubierta. Esto a veces se llama "rise over run". El valor resultante de este cálculo puede multiplicarse por 100 para obtener un valor porcentual.<\/P>
<\/span><\/P>Cuando no hay una capa de superficie disponible para calcular valores de elevación, debes usar ya sea valores de atributos o valores Z de la entidad línea. El cambio de elevación puede calcularse restando la elevación inicial de la elevación final, y el valor de distancia puede obtenerse a partir de la longitud de la forma.<\/P>Una vez que hayas determinado los valores disponibles, puedes usar Arcade para calcular el valor de la pendiente.<\/P>Caso de uso para calcular pendiente usando valores z<\/H2>Imagina que estás usando un dispositivo móvil para realizar un levantamiento del paisaje. Uno de los puntos de datos que recoges es el drenaje de la propiedad. Esto se hace recogiendo dos puntos para formar una línea de drenaje. Usualmente, los datos se recogen y luego son accedidos por un editor que calcula manualmente la pendiente de la línea e ingresa ese valor en un campo atributo.<\/P>Después de aprender un poco sobre ArcGIS Arcade, descubres que puedes usar una regla de atributo y Arcade para calcular la pendiente durante la recolección de datos. Las reglas de cálculo pueden ejecutar la expresión de pendiente inmediatamente después de recoger la entidad. Esto se calcula basándose en los valores z del vértice inicial y final de la línea. El valor retornado se escribe luego en el campo SLOPE en la tabla atributo.
Aquí hay un ejemplo de una expresión que usa valores z para calcular la pendiente:<\/P> <\/P> <\/P>\/\/ Si la geometría está vacía o tiene longitud cero, devuelve el valor original de pendiente.
if (IsEmpty(Geometry($feature)) || Length(Geometry($feature)) == 0)
{
return $feature.SLOPE;
}
\/\/ Obtén el camino de la línea.
var paths = Geometry($feature)['paths'];
\/\/ Obtén el primer y último vértice, y selecciona el más bajo.
var down_elevation = min(paths[0][0]['z'], paths[-1][-1]['z'])
\/\/ Obtén el primer y último vértice, y selecciona el más alto.
var up_elevation = max(paths[0][0]['z'], paths[-1][-1]['z'])
\/\/ Calcula la pendiente usando las tres variables.
return ABS((up_elevation - down_elevation)\/Length(Geometry($feature))) <\/code><\/pre> <\/P> <\/P>Nota: Al usar esta expresión, actualiza los campos para que coincidan con tus datos.<\/EM><\/P>Caso de uso para calcular pendiente usando campos<\/H2>Imagina que has recibido una clase entidad pipeline y te han pedido agregar un nuevo campo y calcular la pendiente para cada entidad. Las entidades línea no tienen habilitado z ni tienen valores de elevación para cada vértice. Después de revisar la tabla atributo, encuentras dos campos que contienen valores de elevación para el inicio y fin del pipeline.<\/P>Decides calcular el campo SLOPE usando una expresión Arcade. La expresión usa los valores de los campos atributo UPELEV y DOWNELEV para calcular el cambio en elevación de la línea. La distancia de cada pipeline se calcula usando una función geometría. Estos tres valores son las entradas para el cálculo de pendiente y el valor retornado se asigna al campo SLOPE. <\/P>Aquí hay un ejemplo de una expresión que usa valores campo para calcular pendiente:<\/P> <\/P> <\/P>\/\/ Si alguno campo no está poblado, devuelve el valor original de pendiente.
if (IsEmpty($feature.UPELEV) || IsEmpty($feature.DOWNELEV))
{
return $feature.SLOPE;
}
\/\/ Si la geometría está vacía o tiene longitud cero, devuelve el valor original de pendiente.
if (IsEmpty(Geometry($feature)) || Length(Geometry($feature)) == 0)
{
return $feature.SLOPE;
}
\/\/ Calcula pendiente usando los dos campos y función geometría.
return ABS(($feature.UPELEV - $feature.DOWNELEV)\/Length(Geometry($feature))); <\/code><\/pre> <\/P> <\/P>Nota: Al usar esta expresión, actualiza los campos para que coincidan con tus datos.<\/EM><\/P>ArcGIS Arcade es un lenguaje expresivo usado para formatear y manipular datos en ArcGIS. Estos casos para calcular pendientes en reglas atributo y cálculos campo son solo dos ejemplos Arcade. Estas expresiones pueden usarse en otras aplicaciones para devolver valores pendientes, como etiquetado, ventanas emergentes y formularios. Puedes reutilizar y modificar estas expresiones ejemplo para satisfacer las necesidades específicas de tu proyecto. <\/P>Para más capacitación sobre el lenguaje expresivo Arcade, consulta Get Started with ArcGIS Arcade de Esri: <\/SPAN>https://go.esri.com/arcade-course<\/SPAN><\/SPAN><\/A> <\/SPAN><\/P>