Qué son las capas virtuales o «virtual layers», y cómo se trabaja con ellas
Desde la versión 2.14 de QGIS hemos visto que se ha añadido esta funcionalidad (evidentemente en las nuevas versiones 3.x también está…), que puede ser muy útil si sabemos cómo utilizarla, aunque la verdad sigue siendo una funcionalidad que no es muy conocida para los usuarios de QGIS.
En este artículo voy a explicar un poco su función y para qué nos puede ser útil, sin entrar en aspectos técnicos de funcionamiento.
Debemos saber que las capas virtuales de QGIS, como su nombre indica, no son más que una representación diferente de los datos que tenemos cargados en nuestro proyecto. Es decir, que cuando trabajemos con ellas, debemos saber que no estamos creando nuevos datasets, ni duplicando información. También tenemos que saber que vamos a usar lenguaje SQL (lenguaje estructurado de consultas), por lo que el usuario debe estar familiarizado con este lenguaje, aunque voy a tratar de explicar lo más básico.
Para acceder a ellas lo haremos desde el botón que abrirá el promt de capas vituales, y es aquí donde escribiremos nuestra consulta. Así de sencillo.

¿Pero, qué es una consulta en SQL?
Muy sencillo, gracias a las capas virtuales puedo hacer una consulta de los datos que tengo cargados, a través del uso del lenguaje SQL. Esto es, puedo seleccionar solo los aeropuertos que tengan el código ‘MAD’, o los 20 primeros aeropuertos ordenados por orden alfabético.
También debemos destacar que podemos acceder a las geometrías de la capa, no solo a sus datos alfanuméricos. Esto lo conseguiremos con el campo «geometry».
Gracias a esta funcionalidad, también por ejemplo también podremos seleccionar las carreteras más largas, o los hoteles que estén a menos de cinco Km. de la costa.
¿Qué diferencia hay con el filtrado de capas de QGIS?
Es cierto que todas estas cuestiones se pueden resolver de otras maneras (¿Qué no se puede hacer de diversas maneras en un SIG?) pero, en mi opinión, la principal ventaja de las capas virtuales es el uso de SQL de una manera muy sencilla. Por resumirlo de alguna manera:
- Nos permite atacar a los datos de un Shapefile con lenguaje SQL.
- Pero lo que es más importante, también nos permite usar las opciones de análisis espacial disponibles en QGIS, como buffers, etc.
Ejemplos de uso de las capas virtuales en QGIS:
Como he dicho, se pueden resolver distintos tipos de problemas usando SQL, por ejemplo:
- Seleccionar 20 primeros aeropuertos ordenados por su código:
SELECT * from aeropuertos order by codigo ASC LIMIT 20
- Si quiero mostrar solo algunos campos o hacer un buffer a estos puntos:
SELECT id, ST_BUFFER(geometry, 0.1) as buff from aeropuertos limit 20;

¿Puedo hacer join a una capa virtual en QGIS?
¡Claro! Las capas virtuales permiten el uso de joins SQL, por ejemplo, podemos obtener datos de dos capas relacionadas:
SELECT * from aeropuertos, ciudades WHERE aeropuertos.nom_ciudades = ciudad.nombre
Conclusión
Como hemos visto, me atrevería a decir que las capas virtuales en QGIS son algo poco explorado, pero en mi opinión pueden llegar a ser de extrema utilidad, pudiendo incluso llegar a mejorar considerablemente nuestra productividad en alguna tarea. Hablamos de no sobrecargar el archivo de proyecto con referencias a más capas, sino con diferentes «vistas» de la información que estemos trabajando.
CURSO AVANZADO DE QGIS
- Formato Online – Acceso 24 h.
- Carga lectiva: 90 h.
- MATRICÚLATE
- ¡No esperes más!
HOLA!
Tengo una duda con respecto al manejo de estas capas virtuales.
Una vez que hago la consulta en SQL, me genera el resultado. Pero, cuando la quiero visualizar como otra capa, se despliega en el proyecto con otro tipo de formato que no es SHP.
Quisiera saber como hacer para que la respuesta, que son puntos, se vea en formato tipo .shp en el proyecto que estoy trabajando.
Agradezco mucho la respuesta.