El análisis de cuenca visual o visibilidad del terreno es una potente herramienta de geoproceso, habitual en los Sistemas de Información Geográfica como QGIS, que implica múltiples condicionantes geométricos y formatos de archivo tanto vectoriales como ráster.
Se trata de un procedimiento común y de aplicación especialmente relevante en ámbitos como la Geografía, el Medio Ambiente, la Ingeniería o la Arquitectura, el Paisajismo y el Urbanismo entre otros.
Aunque la ejecución de este procedimiento en un GIS de escritorio simplifica (y mucho) el proceso, el cálculo de la cuenca visual se trata de un análisis relativamente complejo geométricamente hablando.
¿Qué es el análisis de cuenca visual?
El concepto de cuenca visual hace referencia al conjunto de superficies visibles desde un determinado punto de observación. El punto de observación se encuentra localizado en el espacio y estará dotado de cierta elevación.
La herramienta de análisis de cuenca visual o análisis de visibilidad del terreno evalúa la condición de visibilidad del espacia desde uno o múltiples puntos, tomando en cuenta la elevación de dichos puntos y la morfología del terreno. De hecho, esta herramienta podría incluirse dentro del grupo de geoprocesos de análisis del terreno.

Imagen de Jörg Peter en Pixabay
El resultado del análisis de cuenca visual es un archivo ráster que expresa dicha característica de visibilidad u ocultación del espacio desde los puntos de observación.
De este modo, todos los puntos del terreno situados dentro del área visible serán, en efecto, visibles desde el punto de observación y viceversa, mientras que los no visibles quedarán ocultos debido a los impedimentos físicos del propio terreno.
Como veremos más adelante, el plugin de análisis de cuenca visual de QGIS también permite incluir otros aspectos que puedan influir en el análisis.
Entre ellos se encuentran la distancia máxima asignada de visibilidad, la curvatura terrestre o la refracción de la luz solar en la atmósfera. Se trata de tres condiciones opcionales que permiten dotar de mayor exactitud al modelo de visibilidad evaluado mediante esta herramienta.
Análisis de cuenca visual en QGIS
Instalar el plugin Visibility Analysis en QGIS
El core de QGIS no incluye ninguna herramienta específica de análisis de cuenca visual. No obstante, el plugin Visibility Analysis implementa las funcionalidades necesarias para llevarlo a cabo. Este plugin, desarrollado por Zoran Čučković, puede descargarse e instalarse rápidamente desde el gestor de complementos de QGIS.
El plugin Visibility Analysis incluye todos los algoritmos necesarios para realizar un análisis de cuenca visual en QGIS con éxito. De hecho, como veremos, el procedimiento está bastante guiado por las herramientas que incluye el plugin, cosa que garantiza el éxito del análisis de nuestra cuenca visual.
Cómo funciona el plugin de Análisis de Cuenca Visual
El plugin Visibility Analysis incluye 4 herramientas ejecutables:
- Create viewpoints. Permite estandarizar la capa de puntos de observación para que el algoritmo de análisis de cuenca visual lea correctamente la información y pueda realizar el cálculo de manera efectiva, sin devolver errores.
- Viewshed. Es el algoritmo principal de análisis de cuenca visual. Recibe un ráster MDT y una capa de puntos como elementos de entrada junto una serie de parámetros para el análisis. Devuelve como resultado un ráster con la frecuencia de visibilidad de cada celda.
- Intervisibilty network. Permite evaluar el rayo visual entre dos capas de puntos distintas, devolviendo como resultado una red de intervisibilidad entre puntos de una y otra capa.
- Depth below horizon. Hace referencia a la altura (profundidad) que existe entre la línea de horizonte y la superficie del terreno oculto. El resultado será también un ráster con los valores de profundidad de cada celda.

IMPORTANTE: es indispensable que tanto los archivos ráster como vectoriales se encuentren debidamente proyectados en un Sistema de Referencia de Coordenadas métrico. De lo contrario, la ejecución del plugin devolverá error.
Cómo calcular la cuenca visual de un punto
Estandarizar la capa de puntos de observación
Comenzando por el análisis más básico, necesitaremos una capa de puntos con un único punto de observación, así como un Modelo Digital del Terreno o de Elevaciones (MDT, MDE). Como resultado, queremos conocer qué áreas de superficie del ráster son visibles desde el punto de observación.
Primeramente será necesario estandarizar la capa de puntos. Para ello, usaremos la herramienta Create Viewpoints. Como capa de entrada ofreceremos la capa con nuestro punto de observación. También indicaremos el MDT cargado en QGIS y los identificadores únicos de cada punto en caso de que sean relevantes.
Asimismo deberemos asignar un radio de análisis. Este radio será el área máxima medida en línea recta desde el punto de observación que se tendrá en cuenta en el análisis de cuenca visual. Toda superficie situada más allá de dicha distancia quedará excluida del análisis.

Este parámetro se almacenará en la capa estandarizada y se evaluará en el algoritmo Viewshed posteriormente. Por defecto se asignan 5000 metros, lo que es una distancia razonable.
También podremos variar la altura del observador (observer height). Este campo asigna una altura “extra” sobre la altitud del punto extraído del MDT. Es decir, suponiendo que el punto de observación de un mirador fuera una plataforma elevada 5 metros sobre la superficie de un terreno situado a 1750 metros de altitud, el punto de observación devuelto se encontraría a 1755 metros. La cuenca visual se evaluaría desde una altura de 1755 metros y no desde 1750 metros. Por defecto se asigna 1,60 metros, altura estándar de un humano.
Si nuestra capa de puntos incluye un campo con las alturas de cada punto (tanto si es un mismo valor como si cada punto tiene un valor de altura de observación distinto) podremos indicar el campo en el desplegable.
Lo mismo ocurre en caso de que deseemos especificar la altura de los puntos objetivo u observados, suponiendo que no deba evaluarse la superficie real del MDT. Por esa razón el campo target height se encuentra por defecto en 0,00 metros.

Finalmente daremos una ruta de almacenamiento y un nombre al archivo. Como resultado se cargará una capa con el punto de observación. Contendrá los campos ID, observ_hgt y radius con los parámetros asignados.
Realizar el análisis de visibilidad del terreno
Una vez tenemos nuestra capa de puntos de observación lista para el análisis, abriremos el cuadro de diálogo de la herramienta Viewshed. En ella deberemos introducir como localizaciones de los observadores la capa de puntos estandarizada previamente generada, así como el MDT.

El plugin nos permite escoger la refracción atmosférica (0,13 por defecto) pudiendo jugar con este valor en caso de conocerlo y desear afinar el resultado. Para grandes distancias sería interesante activar la casilla para tener en cuenta la curvatura terrestre. Un buen ejercicio sería comparar resultados para ver cómo influye esta opción en análisis de cuencas visuales a distintas distancias y en distintos escenarios de morfología del terreno.
Finalmente, daremos una ruta y un nombre al ráster de salida. Al ejecutar el algoritmo, se debería cargar en la tabla de contenidos de QGIS. Deberíamos obtener un resultado similar al siguiente.

Podemos ajustar su simbología para clasificar las celdas en valores de 0 y 1 (visible y no visible) y asignar cierta transparencia a la capa para ver el resultado sobre el MDT.
Cómo obtener la cuenca visual a partir de múltiples puntos
Un análisis de visibilidad más avanzado se basará en introducir múltiples puntos de observación. Como resultado, se obtendrá también un archivo ráster más complejo.
A diferencia del ráster anterior, este archivo ráster contendrá múltiples valores de visibilidad. Es decir, en vez de arrojar valores correspondientes a áreas visibles y no visibles, también mostrará la frecuencia de visibilidad de cada celda.
Por el concepto de intervisibilidad esto puede entenderse de 2 modos:
- cuántos puntos de observación son visibles desde dicha celda.
- desde cuántos puntos de observación se puede ver dicha celda
De hecho, el ráster es el resultado de combinar o sumar el análisis de cuenca visual individual por cada punto.

Supongamos que queremos evaluar el impacto paisajístico y visual de los molinos de un parque eólico situado sobre la cuerda de una zona montañosa. Conteniendo los puntos de localización de cada uno de los molinos generaremos, como hemos hecho anteriormente, la capa de puntos estandarizada con los parámetros deseados.

Posteriormente realizaremos el análisis de cuenca visual en base a la capa de puntos estandarizada y el MDT. Como resultado obtendremos un ráster con valores comprendidos entre 0 y “n”, siendo “n” la frecuencia máxima de observación. El valor de “n” dependerá del número de puntos, del tipo de terreno, del radio de análisis y del resto de parámetros implicados en el geoproceso.
Podemos re-clasificar o simbolizar en clases nuestro ráster para ordenar la frecuencia. Aplicando una correcta rampa de color y cierta transparencia podremos interpretar mejor el análisis de cuenca visual obtenido.

Del resultado obtenido podremos extraer las áreas no visibles (valor 0, transparentes) y diferenciar la frecuencia de visualización del terreno sí visible desde, por lo menos, uno de los puntos de observación.
Del mismo modo, podremos analizar el resultado sabiendo que el ráster nos informa de:
- cuántos molinos son visibles desde dicho punto del paisaje o territorio.
- desde cuántos molinos se puede ver dicho punto del paisaje o el territorio.
Obtener una red de intervisibilidad
Por último, la herramienta Intervisibilty Network evalúa el concepto de intervisibilidad entre distintos puntos a partir del conocido como rayo visual o simplemente “la visual”.
Por visual se entiende la recta imaginaria trazada del punto de observación al punto observado. Permite conocer, evaluando la morfología del terreno mediante el MDT, si el uno es visible desde el otro.
La ejecución de esta herramienta requiere de dos capas de puntos estandarizadas (puntos de observación y puntos objetivo), un MDT y otros parámetros opcionales ya vistos como la curvatura terrestre o el valor de refracción atmosférica, ajustables según conveniencia del usuario.

Como resultado se obtendrá una capa vectorial de líneas. Cada elemento línea contendrá dos atributos clave: ID del punto de observación e ID del punto objetivo.
En caso de que exista intervisibilidad entre el punto X de la capa A y el punto Y de la capa B, se creará una línea. Por defecto, en caso de que no exista intervisibilidad, no se creará ninguna línea. Si deseamos obtener también en la capa de salida las líneas donde no existe intervisibilidad, deberá activarse la casilla “save negative links”.

Podemos simbolizar el resultado para interpretarlo mejor con una categorización según el punto de observación o el punto objetivo.
La importancia del análisis de visibilidad del terreno
Con este tipo de análisis de visibilidad podemos llegar a responder preguntas como: ¿Qué puntos de interés turístico son visibles desde este mirador? ¿Son visibles los bloques de edificios de la nueva urbanización desde este paraje natural? ¿Qué torres eléctricas de 10m de altura quedan ocultas desde esta parcela? ¿Cuántos y qué molinos eólicos se ven exactamente desde esta localidad?
Utilizando la herramienta de profundidad bajo el horizonte (Depth below horizon) podríamos llegar a extender aún más el análisis y calcular qué altura máxima podría tener un edificio de nueva construcción para quedar oculto tras un monte, por ejemplo, y evitar así un impacto visual negativo sobre el paisaje.
Todo este conjunto de herramientas de análisis de cuenca visual permite obtener resultados interesantes que deben tenerse muy en cuenta en múltiples estudios.
Son especialmente relevantes a la hora de evaluar el impacto ambiental y paisajístico de una obra de ingeniería, una instalación o tendido eléctrico, la construcción de un edificio, etc. Incluso, puede resultar de gran interés a la hora de realizar rutas y establecer miradores turísticos o planificar puntos de vigilancia de incendios sobre el territorio.
Hola, el análisis visual supone de enorme interés para mi campo de estudio (arqueología), pero me encuentro estancado en el primero de los condicionantes que das en el post. ¿Cómo puedo otorgar sistema métrico a una imagen raster (un mdt) que he descargado del CNIG? Muchísimas gracias.
Hola Enrique,
como comentamos en el artículo, las capas deben estar debidamente proyectadas y tener un SRC métrico asignado.
Puedes asignar al MDT el sistema ETRS89 de la zona donde se encuentre localizado. Esta opción es accesible desde las propiedades de capa. En el menú «Fuente» abre el desplegable y busca el SRC adecuado. Cuando esté seleccionado pulsa aplicar. Posteriormente, si te diriges a «Información» para ver los metadatos de la capa, debería aparecer el SRC asignado.
Alternativamente, puedes realizar un geoproceso desde el menú ráster de QGIS > Proyecciones > Asignar Proyección.
Finalmente, pulsa en aceptar y prueba a lanzar el geoproceso. Recuerda que los puntos implicados en el geoproceso de análisis de cuenca visual deben estar estandarizados mediante la herramienta «create viewpoints» previamente.
Saludos,
Muchas gracias por la rapidez de tu respuesta, Raúl. Por el momento he seguido la primera de tus indicaciones y he asignado al ráster el sistema ETRS89 UTM Zone 30N, pero lo único que he conseguido es que la imagen desaparezca. Literalmente. Con el segundo de tus métodos (el de asignar proyección) no obtengo ningún resultado.
Perdona mi torpeza, tal vez debería haber empezado por un conocimiento más básico de QGIS antes de pasar al análisis de las cuencas visuales.
Vale, sólo debía hacer zoom a la capa para volver a encontrarla tras haberle adjudicado el nuevo sistema. Me ha funcionado perfecto y me ha resultado muy útil a la hora de ver el área de visión desde un yacimiento. Muchas gracias de nuevo.
Por cierto, ¿existe algún límite para el radio de análisis? Entiendo que desde una colina la visión llega más allá de los 5 o los 10 km.
Hola de nuevo Enrique,
me alegro que hayas encontrado la forma. Sí, al asignar una nueva proyección a la capa ésta se desplaza, haciendo zoom a la misma debería ser visible.
Respecto al límite… lo desconozco, sinceramente. Técnicamente el análisis debería verse limitado a la extensión del ráster, pero al final los parámetros deben ser coherentes con el tipo de análisis y las características del terreno que deseamos evaluar.
Saludos y espero que haya resultado útil.
Hola
Primero, gracias por el tutorial.
Lo intento seguir pero ya al principio me resulta imposible… no tengo o no encuentro la herramienta Create Viewpoints… tengo mi MDT y creo un punto, le doy coordenadas.
Entonces abro viewshed, donde el cuadro de diálogo tampoco se parece en nada al tuyo… elijo mdt, punto, archivo de salida, radio… y me da error de phyton….
Hola Diego,
gracias por tu comentario. Desconozco dónde puede encontrarse el error en base a los detalles que comentas. ¿Qué versión de QGIS y del plugin estás utilizando para el análisis? ¿Has instalado correctamente el plugin y las capas están debidamente proyectadas? El error de Python es probable que aparezca debido a algún problema vinculado a las capas involucradas en el geoproceso. ¿Qué detalles del error de Python arroja QGIS? Los errores detallados de Python puedes encontrarlos en el «log» o historial de errores de QGIS. Allí podrías encontrar más información acerca del origen del error…
Saludos!
Hola.
Pues probé con dos versiones de QGis, una 3.0 y una 2.18
la aplicación es la 0.5.4
Tengo un Qguis más rciente y una aplicación viewshied más reciente pero aunque me aparece en complementos como instalada, no la localizo en el programa
y el error de phyton te lo pongo aquí por si te suena…:
2019-09-11T12:50:14 1 Traceback (most recent call last):
File «C:/Users/Diego/.qgis2/python/plugins\ViewshedAnalysis\viewshedanalysis.py», line 161, in run
outPath = ViewshedAnalysisDialog.returnOutputFile(self.dlg)
File «C:/Users/Diego/.qgis2/python/plugins\ViewshedAnalysis\viewshedanalysisdialog.py», line 60, in returnOutputFile
return str(l)
UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xed’ in position 34: ordinal not in range(128)
Hola de nuevo Diego,
puedes acceder a las herramientas que ofrece el plugin activando el panel «Caja de herramientas de procesos», haciendo clic con el botón derecho sobre la cabecera de QGIS. Una vez activado y desplegado, en ese panel haz una búsqueda de la herramienta que deseas ejecutar. Si aún así no consigues ver la herramienta es probable que esté desactivada como proveedor de geoprocesos. Para solucionarlo, ve a Configuración > Procesos > Proveedores y allí asegúrate de tener activas todas las librerías y plugins necesarios para lanzar tus tareas.
En cuanto al error que apuntas, parece un problema de codificación de cierto carácter (creo que corresponde a una «i» con acento gráfico) probablemente involucrado en la ruta o el nombre de cierto archivo utilizado en el análisis. Revisa que no aparezca ese carácter que podría interrumpir la ejecución del código Python de la herramienta. Intenta también evitar espacios, nombres demasiado largos, caracteres especiales como eñes o signos de puntuación, etc.
Espero que sirva de ayuda.
Saludos!
Buenos dias. Mi nombre es Manuel, enhorabuena por tu blog.Me surge una consulta. Seria posible calcular el tamaño relativo al que se verian los molinos en este caso desde una distancia dada? Por ejemplo si un molino mide 80 mde altura, a una distancia de 2 km este se vera como un objeto de 30 metro de altura ( los datos los estoy suponiendo para que entiendas a que me refiero) Gracias
Hola Manuel,
gracias por tu aporte. La duda que planteas es, bajo mi punto de vista, un problema matemático que podría resolverse mediante trigonometría. Con QGIS desconozco si existe algún plugin para este tipo de problemas geométricos. Piensa que un Sistema de Información Geográfica y la gran mayoría de sus geoprocesos (algoritmos de cálculo) trabajan con capas geométricas bidimensionales (X e Y) y este es claramente un cálculo tridimensional basado en la componente Z (la altura de los molinos). El «producto» que permite generar el geoproceso de análisis de cuenca visual es también una superficie bidimensional, devolviendo un valor de visibilidad, no de perspectiva. Saludos!
Hola, Raúl.
Muchas gracias por el artículo ¡es muy interesante!
Me surge una duda realizando el análisis de intervisibilidad. Te comento, partiendo del mismo ejemplo que planteas, para hacer el análisis de intervisibilidad de los aerogeneradores desde una serie de puntos de observación, se haría lo siguiente:
1) Estandarizar los puntos de observación con la herramienta «create viewpoints». En este caso, entiendo que se mantiene la altura de observación media de una persona, 1,60 m o la que se considere y como altura del target habría que poner la del aerogenerador, por ejemplo 150 ¿es así?
2) Estandarizar los puntos objetivo o target que son los aerogeneradores. En esta estandarización ¿das algún valor a los campos de altura de observador y altura de observado? ¿es suficiente con haber dado este dato al estandarizar los puntos de observación? No sé qué hace el algoritmo y no sé si al estandarizar los puntos objetivos hay que volver a indicar los datos de altura de observador y altura de target o no es necesario.
¡¡Muchas gracias!!
Hola buenos días. Una cuestión en el caso concreto de los parques eólicos. No tengo claro si la altura del molino hay que meterla en algún momento en el algoritmo. El caso en este análisis lo veo a la inversa al mirador o miradores. No se trata de que puntos del territorio vamos a ver desde el mirador, si no qué molinos se van a ver desde el territorio. Y luego la cantidad de km. en este caso para hacer el análisis. Si ponemos 5 km o 10 km. Si se tiene en cuenta la capacidad de alcance de la vista humana etc.
Saludos
Hola Concepción,
entiendo a lo que te refieres. Respondiendo a tu primera pregunta: creo que podrías deducir que la visibilidad es mutua: dada una extensión de territorio visible desde un punto, seguramente implique que dicho punto también sea visible desde el área de territorio obtenida. Espero explicarme…
La altura de los elementos puede indicarse en el parámetro «target height» o «altura del elemento objetivo», en el caso de molinos eólicos tiene bastante lógica indicar esa altura.
Otra opción es realizar un doble análisis: uno que considere la base de los molinos (target height = 0m) y otra que considere la altura máxima de los molinos (target height = N metros).
Combinando ambas capas resultantes podrás determinar el área mínima y máxima de visibilidad desde y hacia la instalación.
Respecto la visibilidad: no, el algoritmo no valora esa medida dado que influyen muchos valores como el estado atmosférico, incidencia solar, etc…
Saludos!
Buenas,
Gracias por este post, muy ilustrativo. Tengo una pequeña duda. A la hora de calcular la visibilidad, si el punto en cuestión del cual queremos saber su visiblidad, este se encuentra sobre un montículo, supongamos que de unos 100 m, entiendo que el programa tiene en cuenta la altura donde se encuentra sobre el terreno en base al MDT. ¿Es así o debemos indicar la altura a la que se encuentra?
Perdón si la pregunta es obvia, ya que aún soy bastante novato con el QGIS.
Gracias, un saludo