Necesito poder medir distancias entre puntos, sin embargo, la distancia debe calcularse en relación con la elevación. Los puntos son hogares de narradores del siglo XIX y los lugares que se mencionan en sus historias. Por lo tanto, la distancia debe ser "distancia a pie". Un camino a lo largo de un valle probablemente será más corto que un camino sobre una montaña a pesar de que la distancia recta real es más corta. Adjunto hay una captura de pantalla que ilustra mi pensamiento. En la imagen, las rutas A y C, por lo tanto, se calcularían más cortas que la ruta B.
Los puntos son de un archivo CSV pero también tengo una capa ráster con los datos de elevación.
Respuestas:
Alcanzar este objetivo es una tarea básica en SIG, sin embargo, el método en QGIS podría no ser trivial. Su mejor oportunidad es usar la
r.walk
función de GRASS , que crea una superficie de costo anisotrópico (dem + pendiente + otros factores).Primero, debe crear una superficie de fricción como entrada para
r.walk
. En su caso, puede ser un ráster de un solo valor (1.0) que coincida con la extensión de su DEM. Puede crearlor.mapcalculator
con la fórmula:A*0+1
donde A es su DEM.A continuación, debe seleccionar un conjunto de puntos de partida de su CSV. Estos son los puntos, a partir de los cuales se calculará la superficie del costo acumulado. Debe crear una superficie de costo individual desde cada punto de partida. Puede ser inteligente definir los puntos finales asociados con cada punto de partida en este paso (en capas individuales fuera de curso). Después, puede ejecutar
r.walk
con las entradas creadas. Los puntos de partida pueden estar en una sola capa, puede recorrerlos con la flecha verde en el cuadro de diálogo.Ahora, en un caso ideal, tiene las superficies de costo y los puntos finales para cada superficie de costo. En teoría, podría encontrar las rutas de menor costo
r.drain
, pero para mí, terminó en un error (Python no pudo importar la biblioteca QgisRaster). Si ejecuta el mismo problema, puede utilizar el algoritmo "Rutas de menor costo" de SAGA. Creará un punto y una capa de línea para cada punto final con la superficie de costo (use el botón de iteración nuevamente). Una vez que tenga todas las líneas, puede fusionarlas en un solo archivo de forma con la herramienta "Combinar capas de formas" de SAGA.Este método puede ser muy lento con el incremento de puntos, por lo que si tiene muchos de ellos, puede intentar automatizar el método con python. Todavía será mucho tiempo para calcular (especialmente las superficies de costo), pero no tiene que crear toneladas de capas de punto final manualmente.
fuente
r.walk
. Puede usar el mapa de fricción para configurar las celdas intransitables. Reclasifique su DEM conr.reclass
reglas como1 thru 2000 = 1
2000 thru * = 9999
en un archivo de reglas (si su umbral es de 2000 m). De esta manera, el algoritmo no pasará celdas con altos valores de fricción, será menos costoso darle la vuelta.