3 votos

Cálculo de la altura máxima y mínima de los segmentos de la ruta con diferentes longitudes basado en el DEM en QGIS

Tengo una capa de líneas que contiene segmentos de ruta (capa de entrada). Tanto las rutas como los segmentos tienen diferentes longitudes. También tengo un DEM para la información de altura.

Ahora necesito saber la altura mínima y máxima de cada segmento para calcular la pendiente del mismo.

Lo que he probado hasta ahora:

  1. he convertido mi capa de líneas en una capa de puntos utilizando el plugin "QChainage", con la distancia fijada en 10m
  2. Utilizar la herramienta "Drape" de la caja de herramientas de procesamiento para calcular la altura (valor z)
  3. Añadida la información de la geometría utilizando "Añadir atributos de la geometría" (ahora tengo mi zcoord)
  4. "Unir atributos por más cercano" para obtener la información de la ruta y el segmento en cada punto ("Unir atributo por ubicación" no funcionó, no sé por qué)
  5. maximum("zcoord", 'segment_id') no funcionó para obtener el valor de la altura máxima de cada segmento

Lo que quiero tener como resultado: Me gustaría añadir un atributo "max" y "min" a mi capa de entrada.

¿Alguien tiene una solución sencilla y que funcione?

0voto

chhh Puntos 1154

Preparativos:

  • Asegúrese de que cada segmento es una característica en sí misma con un único id campo (utilice Explode line si no es el caso y crear un nuevo campo con la calculadora de campo y la expresión $id ).
  • Las capas rasterizadas y lineales deben estar en el mismo CRS proyectado. En caso contrario, vuelva a proyectar.

Flujo de trabajo:

  1. Ejecutar Menu Processing / Toolbox / Points along geometry con una distancia de 10 m. Los puntos resultantes contendrán el único id de su capa de línea.

  2. Crear un nuevo atributo llamado elevation con calculadora de campo en la capa de puntos resultante con esta expresión: raster_value( 'raster_dem', 1,$geometry) y reemplazar raster_dem con el nombre de su capa raster (DEM).

  3. Crear dos nuevos atributos min_elev y max_elev para los valores mínimos y máximos, agrupados por el único id que representan los segmentos a los que pertenecen los puntos: minimum( elevation, id) y maximum( elevation, id) .

  4. Vaya a la capa con los segmentos de línea y cree un nuevo atributo max para la elevación máxima de cada segmento, utilizando esta expresión (y repetirla sustituyendo max_elev con min_elev en la línea 3 para crear un atributo para la elevación mínima):

    attribute (
       get_feature('Interpolated', 'id', "id"), 
       'max_elev'
    )

    Observación: al final de la línea 3, la primera 'id' es el nombre del campo único de la capa Interpolated (la capa que contiene los puntos creados en el paso 1), la segunda "id" es el nombre del atributo (correspondiente) en la capa de la línea inicial. Normalmente deben ser los mismos (tal y como se establecen en la capa de líneas inicial).

enter image description here

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