4 votos

Ruta de menor costo con costo único para mayor elevación

Estoy tratando de escribir un script para calcular el camino de menor coste entre dos celdas en un raster. Estoy bastante familiarizado con los enfoques utilizados por herramientas como r.cost de GRASS GIS y CostDistance de ArcGIS. Sin embargo, hay una restricción que no puedo incluir:

El camino representa la ruta de un oleoducto que transporta agua. Un aumento en la elevación incurre en un costo (debido a la bomba requerida). Sin embargo, para una elevación dada, este es un costo único. Es decir, el costo de la bomba solo está relacionado con la altura de la fuente y la elevación más alta única por la que pasa el camino. Si el camino pasa por una celda a 5m de elevación, no cuesta nada viajar a través de cualquier otra celda a esa elevación.

¿Cómo podría incorporar esta restricción en mi análisis? Estoy abierto a cualquier solución, pero preferiblemente una que pueda ser escrita en forma de script (¡y puntos extra por ser gratuita/código abierto!).

2voto

Fitzcarraldo Puntos 423

He encontrado una solución a esto, pero requiere cierta fuerza bruta.

  1. Encuentra la ruta más rentable en costes, ignorando el coste asociado a la ganancia de elevación.
  2. Encuentra la elevación máxima de la ruta inicial.
  3. Para cada elevación X entre la elevación de origen y la elevación máxima:

    • Asigna un coste infinito a las celdas por encima de la elevación X
    • Encuentra la ruta más rentable a través de la nueva matriz
    • Calcula el coste total de esta ruta
  4. Encuentra la ruta con el coste total mínimo.

El gráfico a continuación muestra un ejemplo de esto. En este caso, la ruta que no alcanza más de 240 metros es el mejor equilibrio entre distancia (y otros factores) y ganancia de elevación.

elevación máxima permitida vs coste total

Esta solución no es ideal ya que requiere ejecutar el algoritmo de búsqueda de camino lento varias veces. Sin embargo, produce los resultados que necesitaba.

Dejaré esta pregunta "sin respuesta" por un poco más de tiempo, ya que quiero ver algunas otras soluciones.

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