jueves, 13 de agosto de 2015

QGIS: herramienta Buffer.

Seguimos este mes de agosto analizando algunas de las herramientas de geoprocesamiento que QGIS nos ofrece para trabajar con datos vectoriales. Hoy le toca el turno a la herramienta Buffer, a la que también se le llama zona de influencia. Y es que esta herramienta nos crea un área determinada alrededor de un elemento vectorial (punto, linea o polígono), área que a su vez es también un polígono vectorial. Para ahorrarnos la explicación teórica y las principales características de esta herramienta lo mejor es que os leáis este artículo de ayuda de QGIS que es un fantástico resumen. Así nosotros nos centramos en el proceso de elaboración y no se hace tan pesada la entrada.
Seguimos utilizando los vectoriales de la BTN100 para realizar unos cuentos ejemplos variados.

En un primer ejemplo sencillo haremos un buffer de 5 kms de radio sobre un núcleo de población, con el simple fin de saber qué otros núcleos de población vecinos se encuentran dentro de dicho radio. Cargamos en QGIS la capa vectorial BTN100_0501S_NUC_POB.shp, nos situamos en la zona que nos interesa y seleccionamos el núcleo de población objeto de nuestro buffer. Abrimos la herramienta Buffer(s) desde el menú Vectorial.
Nuestro núcleo de población seleccionado (por tanto en amarillo). Lo más importante en este sencillo caso es el campo Distancia de buffer, ya que determina el tamaño del mismo. Las unidades de medida se corresponden con la proyección de la capa, por lo que o transformamos a una proyección en metros o probamos hasta dar con la medida que queremos. En este caso 1 serían 100 kilómetros, con lo que 0.05 serían 5 kms que es lo que buscamos.
Lo cierto es que es muy posible que sin transformar a una proyección métrica las medidas sólo sean aproximadas, pero ahora se trata de ver el proceso. Tras rellenar los clásicos campos de nombre y ubicación de nuestra nueva capa buffer y marcar que la añada al proyecto tenemos el resultado.
Capa buffer con la distancia requerida sobre el núcleo de población elegido. La tabla de atributos de la capa contiene un elemento (sólo hemos hecho un buffer) con los mismos atributos que la capa BTN100_0501S_NUC_POB.shp.
Un segundo ejemplo podría ser elaborar varios buffers al tiempo. Simplemente seleccionamos cuatro núcleos de población, y ponemos una distancia de 1 km (0.01 en las opciones). El resultado, aplicada un poco de transparencia para que se aprecie mejor, es este:
En la ventana de opciones del buffer también tenemos la posibilidad de seleccionar Disolver resultados de buffer, con lo que los bordes de cada buffer quedarían unidos formando un sólo elemento. Esto nos impediría ver las zonas de solapamiento entre buffers individuales como en la imagen superior, pero puede ser útil en otros casos.
Los buffers pueden hacerse como hemos dicho sobre cualquier elemento vectorial (punto, linea o polígono); en la siguiente imagen tenemos un buffer de 500 metros hecho sobre dos líneas (dos ríos) y con la opción disolver resultados de buffer activada (al disolverse diferentes buffers en uno lógicamente su tabla de atributos pierde la información de la capa "buffeada", aunque mantiene su estructura).
También podríamos usar la pestaña Campo de distancia de buffer para realizar buffers de distintos tamaños según un atributo de la tabla, por ejemplo ríos o carreteras de distinta categoría tendrían buffers más anchos o estrechos. Pero para ello nuestra tabla debe contener una columna con los valores precisos sobre los que generar el buffer.

Un tercer ejemplo serían los buffer con múltiples zonas. Esto puede hacerse manualmente elaborando varias capas buffer con la distancia en cada una que queramos (Ventaja: controlamos las distancias individuales de cada buffer. Inconveniente: es un proceso más laborioso), o con un complemento automatizado que lo haga por nosotros como Multi Ring Buffer (Ventaja: proceso rápido que nos genera un único vectorial con anillos individuales en la tabla de atributos. Inconveniente: sólo permite anillos de igual distancia, aunque esto se suple con imaginación). Una vez instalado el complemento desde el repositorio de QGIS nos hace un icono y se coloca también en el menú Vectorial.
Buffer múltiple de 5 anillos cada 500 metros (0.005) y categorizado por rampa de color según distancia de la tabla de atributos generada.
Ejemplo de Multi Ring Buffer con 5 anillos sobre 6 puntos seleccionados y bordes disueltos.
Como último ejemplo de la aplicación de esta herramienta a la práctica nos hemos inventado un caso de la vida diaria: un centro comercial quiere cubrir sus instalaciones con una zona wifi para los clientes, de forma que necesita saber la ubicación de las antenas a instalar para proporcionar cobertura al área deseada. Con un poco de trabajo en QGIS, una tabla de atributos apropiada, y un manejo adecuado de la herramienta buffer, podremos presentar algo parecido a esto:
En un próximo artículo desarrollaremos la elaboración de este mapa como un caso práctico de QGIS en el que podrán repasarse, entre otros aspectos, la creación de capas vectoriales shape, la elaboración de una tabla de atributos adecuada, y el manejo de las distintas opciones de la herramienta buffer. Saludos!!

8 comentarios:

  1. Un verdadero placer contar con estos artículos que me son de una ayuda tremenda. Gracias.

    ResponderEliminar
    Respuestas
    1. Gracias Ivan; me alegra enormemente que te sean de utilidad. Saludos.

      Eliminar
  2. Te hago una consulta. tengo una capa de puntos, cuando hago el buffer, me genera una nueva capa, pero con una sola fila. Sabes a que puede deberse?
    Cuando utilizo el sextante de Gvsig, me mantiene las filas.
    Gracias

    ResponderEliminar
    Respuestas
    1. A qué te refieres con una sola fila?? Una sola fila en la tabla de atributos o que te hace un solo anillo de buffer??

      Eliminar
  3. buen dia quisiera saber los siguiente tengo un poligono y quiero generar un buffer a 41 km pero que no sea lineal sino que tenga encuenta las curvas de nivel (modelo digital de terreno)

    ResponderEliminar
    Respuestas
    1. No creo que la herramienta buffer te sirva, pues hace el buffer a una distancia igual desde cada punto del polígono... Para que ese buffer vaya coincidiendo con curvas de nivel ya no sería un buffer y tendrías que tener algún parámetro que rija la condición de por dónde debe ir el polígono...

      Eliminar
    2. Javier Muchas gracias, si efectivamente toca de cada uno de los puntos que conforman el poligono

      Eliminar
  4. Hola! Se que esta publicación no tiene mucho que ver con mi consulta, pero tengo una serie de errores en QGis y debo resolverlo lo antes posible. Paso a explicar: tengo una capa hecha en google earth pro, y guardada como kml que la abri en QGIS y la guarde como .shp, a esta capa (que la llamo rios) le quiero eliminar el area que esta superpuesta con un buffer creado para ciudades, pueblos y caminos. Para esto, utilizo la herramienta geometrica "Deferencia", que supongo que es diferencia. Cuando pongo Run me salta:

    Algoritmo Difference comenzando...

    1006 See log for more details

    Estan en las mismas coordenadas y creo que esta todo igual, como puedo solucionarlo??

    Tambien intento unir ambas capas y me da:

    Algoritmo Union comenzando...

    -2147483645 See log for more details

    o tambien me da:


    Algoritmo Union comenzando...

    'NoneType' object has no attribute 'isGeosEmpty' See log for more details

    cual será mi problema???

    Cualquier cosa que me pueda guiar es bienvenido!!

    Gracias

    ResponderEliminar