AQGIS-Sivil3D

Modelado de corredores sobre terreno para QGIS: secciones tipo, TIN, mediciones de tierras, perfiles y planos.
Rafael Vázquez · Claude

1. Qué es y para qué sirve

Este plugin resuelve un problema concreto: extruir una sección tipo a lo largo de una directriz, cortarla contra el terreno y obtener la superficie resultante, con sus mediciones y sus planos. Es un Civil 3D reducido deliberadamente a eso.

El flujo de trabajo completo es:

1. Defines una o varias secciones tipo en el editor
2. Las aplicas a una capa de líneas (una sección por tramo si quieres)
3. El plugin las corta contra cualquier DEM y teje el TIN
4. Obtienes capas, mediciones de tierras y, si quieres, el terreno fusionado
5. Revisas el resultado en el visor de perfiles
6. Sacas los planos: planta, longitudinal, transversales y cubicaciones
7. Guardas el corredor completo en un archivo para reabrirlo cuando toque

Funciona en QGIS 3.28 y posteriores, incluida la serie 4.x.

2. Instalación y actualización

Ejecuta instalar.bat desde la carpeta del proyecto. Copia (o enlaza) el plugin en la carpeta de complementos de todos los perfiles de QGIS que encuentre. Después, en QGIS: Complementos → Administrar e instalar complementos → Instalados, y marca AQGIS-Sivil3D.

Desde la versión 1.0.0 el plugin está también en el repositorio oficial de QGIS: Complementos → Administrar e instalar complementos → Todos, se busca «Sivil3D» y se instala. Ya no hace falta activar «Mostrar también los complementos experimentales»: la 1.0.0 sale como versión estable.

Si el código está en una unidad de red, los junctions de Windows no admiten rutas UNC y el script copia los archivos en vez de enlazarlos. Eso significa que hay que volver a ejecutar instalar.bat cada vez que cambie el código, y recargar el plugin (el complemento Plugin Reloader ahorra reiniciar QGIS).

La fusión con el terreno necesita scipy, que viene en las instalaciones estándar de QGIS. Sin él todo lo demás funciona y la fusión avisa en lugar de fallar.

3. Los tres conceptos que hay que entender

3.1 La sección tipo es una cadena de reglas, no una geometría

Una sección no se dibuja: se compone. Cada elemento arranca donde acabó el anterior y produce uno o más vértices. Eso es lo que permite que la misma sección se adapte a un terreno distinto en cada PK.

Sección tipo
├─ eje          cota (terreno | Z de la directriz), desnivel, desplazamiento
├─ izquierda ─┬─ fijos[]       calzada, arcén, berma, bordillo, cuneta…
│             ├─ desmonte[]    se aplica si el terreno queda por ENCIMA
│             └─ terraplén[]   se aplica si queda por DEBAJO
└─ derecha  ──┘                rama independiente, misma estructura

Las dos ramas son completamente independientes: un talud distinto a cada lado sale gratis, sin nada que configurar.

3.2 Cada lado decide por su cuenta si excava o rellena

En cada PK y para cada lado por separado, el plugin mira el punto de enganche (el último elemento de fijos de ese lado) y compara la cota de proyecto con la del terreno:

En el punto de engancheGrupo que se aplica
proyecto por debajo del terrenodesmonte
proyecto por encima o igualterraplén

Una sección a media ladera sale con un lado en terraplén y el otro en desmonte sin tocar nada.

Si dejas la cota del eje en «terreno», el eje se apoya exactamente sobre el DEM y no hay desmonte ni terraplén global: solo lo que provoque la pendiente transversal. Para tener excavación o relleno de verdad tienes tres caminos: una directriz 3D (cota del eje = Z de la directriz), un valor constante de cota, o un desnivel del eje en el editor.

6.2.0 De dónde sale la cota del eje

OpciónQué hacePara qué
del terreno (DEM)el eje se apoya exactamente en el DEMver qué sale solo con el bombeo de la plataforma, sin excavar ni rellenar en el eje
de la Z de la directrizla cota la lleva la geometríauna rasante ya proyectada, editable vértice a vértice
valor constantela misma cota en todos los PK: plataforma horizontaluna explanada, el vaso de una balsa, una plataforma de acopio, o tantear el movimiento de tierras de una rasante antes de proyectarla
offset desde el terrenorasante paralela al terreno a la distancia indicada: positiva por encima, negativa por debajoun espesor de tierras constante: la caja de un firme, un camino excavado medio metro, un caballón o una mota

Las dos últimas se escriben en el campo que hay al lado del desplegable. El desnivel del eje que se define en el editor de secciones se suma en los cuatro casos: con offset −0.30 en el diálogo y desnivel −0.20 en la sección, la rasante queda 0.50 m bajo el terreno.

La diferencia entre «valor constante» y «offset desde el terreno» es la que hay entre una explanada y una caja de firme. Con cota constante la rasante es horizontal y el espesor de tierras cambia a lo largo del eje; con offset el espesor es constante y la rasante sube y baja con el terreno.

6.2.1 Escribir la cota en la Z de la directriz

Junto al campo hay un botón Escribir en la Z de la capa, activo con las dos opciones que llevan valor. Con valor constante pone esa cota en la Z de todos los vértices; con offset desde el terreno hace un drapeado: cada vértice toma la cota del DEM en su posición más el offset. En los dos casos deja seleccionada la opción «de la Z de la directriz». A partir de ahí la rasante vive en la geometría y se puede editar vértice a vértice con las herramientas normales de QGIS: es la forma de arrancar de una plataforma horizontal y luego darle pendientes.

Hay un límite que no se puede sortear: el tipo de geometría lo fija el proveedor de la capa. De ahí dos comportamientos:

Si la capa…Qué ocurre
ya admite Z (LineStringZ)se edita en el sitio: la Z que tuviera se reemplaza y los cambios quedan guardados
es 2D (LineString)no se toca —su proveedor descartaría la Z al guardar— y se crea una capa nueva con los mismos campos y atributos, con la Z puesta, que queda seleccionada como directriz

Con «solo los features seleccionados» marcado, la cota se escribe únicamente en esos. El diálogo avisa antes de tocar nada, y en el registro queda escrito cuántos features se han modificado.

En el drapeado, si el DEM no tiene datos en algún vértice de una directriz, esa directriz se deja sin tocar y se avisa: es mejor que meterle una cota inventada.

Si la capa ya tenía cotas, se pierden: la operación deja todos los vértices a la misma cota. Es lo que se pide, pero conviene tenerlo presente si la directriz ya llevaba una rasante trabajada.

El valor constante es el atajo para una plataforma horizontal —una explanada, el vaso de una balsa, una plataforma de acopio— y también para tantear cuánto movimiento de tierras costaría una rasante antes de tenerla proyectada: se pone una cota, se calcula y se lee el volumen. El desnivel del eje se suma en los tres casos, así que con cota constante 250 y desnivel −0.5 la rasante queda a 249.50.

3.3 Los códigos de punto son los que cosen el TIN

Cada elemento produce vértices con un código (CALZADA, TALUD_DAY…), al que se añade el prefijo I_ o D_ según el lado. Los códigos sirven para tres cosas:

  1. Coser el TIN. Entre dos secciones consecutivas la malla se teje emparejando vértices por código, no por índice, usando la subsecuencia común más larga. Por eso una sección con 2 banquetas y la siguiente con 3 se cosen sin retorcerse.
  2. Nombrar las líneas características de salida (las breaklines).
  3. Mantener la continuidad al pasar de desmonte a terraplén: usar el mismo código TALUD en los dos grupos condicionales es lo deseable, y por eso la validación no lo marca como duplicado.

El vértice donde el talud corta el terreno lleva siempre el sufijo _DAY, sea cual sea el elemento que lo generó, para que la línea de daylight sea continua.

4. Editor de secciones tipo

Vector → AQGIS-Sivil3D → Editor de secciones tipo…

A la izquierda, la librería de secciones. En el centro, las dos ramas con sus tres grupos y los botones de orden. A la derecha, los parámetros del elemento seleccionado. Abajo, la sección resuelta sobre una ladera de prueba.

4.1 El orden es la geometría

Los elementos se resuelven en el orden en que están, así que Subir y Bajar cambian el resultado. Los botones son:

BotónQué hace
Añadirmenú con los elementos válidos para cada grupo; se inserta detrás del seleccionado
Duplicarcopia el elemento seleccionado justo detrás
Quitarelimina el seleccionado
Subir / Bajarmueve el elemento una posición en la cadena
copiar al otro ladosobrescribe la rama opuesta con esta; para secciones simétricas

4.2 Previsualización

La ladera de prueba es configurable y es la forma rápida de comprobar que el talud engancha y que la banqueta cabe, sin necesidad de DEM ni de directriz:

ControlPara qué
terreno (%)pendiente transversal del terreno de prueba; con un valor alto se ve el caso de media ladera
terreno en eje (m)cota del terreno respecto a la rasante. Positivo = terreno por encima = desmonte en los dos lados
exag. Zexageración vertical del dibujo
ancho máxsemiancho máximo de búsqueda del terreno
códigosmuestra u oculta las etiquetas de los vértices

Colores: marrón el terreno, azul el proyecto, ocre el desmonte, verde el terraplén. Un círculo verde es un punto de daylight; un círculo rojo, un talud truncado que no llegó a cortar.

4.3 Librería de secciones

La librería es un archivo JSON que vive en el perfil de usuario (<perfil QGIS>/aqgis_sivil3d/secciones.json), así que no se pierde al actualizar el plugin. Se puede importar y exportar para compartirla.

4.4 Las nueve secciones que trae el pack

SecciónQué es
Carretera 1+1calzada, arcén y berma, con cuneta en desmonte y talud en terraplén
Camino 5 mun camino sencillo con cuneta a los dos lados
Plataforma en ladera (banqueada)desmonte con bermas, para media ladera
Plataforma según camposanchos y taludes leídos de la capa: una sección distinta por feature
Zanja 2 mfondo de cota impuesta y cajeros, para una zanja o un canal
Presa de hormigón de gravedadel perfil triangular de siempre: paramento de aguas arriba 0,15H:1V y de aguas abajo 0,75H:1V
Presa de escollera con pantallatalud de aguas arriba 1,25H:1V —el de la pantalla— y espaldón 1,4H:1V con bermas de 5 m cada 15 m de altura
Presa de materiales sueltostaludes 2,5H:1V a los dos lados, con bermas en el espaldón de aguas abajo
Pantalla de hormigónparamentos verticales; arranque para un muro o una pantalla

Las nueve están ya en la librería al abrirla por primera vez. El paquete completo viaja además dentro del plugin, en docs/secciones_pack.json, por si hace falta reimportarlo.

4.5 Cómo se calcula una presa

El cuerpo de una presa se levanta desde el terreno hasta la coronación, así que va entero en el grupo de terraplén: el talud arranca en el borde de coronación y baja hasta encontrar el valle. El grupo de desmonte entra solo donde el terreno queda por encima de la coronación, es decir, en los estribos.

Dos cosas se hacen distinto que en una carretera:

  1. La cota del eje tiene que ser valor constante (ver 6.2.0): la coronación es horizontal. Con la opción del DEM saldría un cuerpo que sube y baja siguiendo el terreno, que no es una presa.
  2. La directriz se dibuja a lo largo de la coronación, de estribo a estribo.
Las bermas salen solas cuando la presa da la altura: con bermas cada 15 m, una de 10 m no lleva ninguna, una de 40 m lleva dos y una de 70 m, cuatro. No hay que tocar nada.

Y para el vaso, la herramienta de curva de embalse (ver 13) da la relación cota-volumen-superficie a partir del DEM.

4.6 Avisos de validación

La franja inferior avisa de los problemas que se pueden detectar sin terreno:

AvisoQué significa
códigos repetidosdos elementos que pueden coincidir en la misma sección resuelta tienen el mismo código; el mallado no sabrá emparejarlos
grupo vacíoun lado tiene desmonte pero no terraplén (o al revés): en los PK donde toque el grupo vacío, la superficie quedará abierta
no busca el terrenoel grupo condicional no acaba en un talud que enganche
no es el últimohay elementos detrás del que busca el terreno; se ignorarán

5. Catálogo de elementos

ElementoQué haceParámetrosGrupos
offset_pendienteavanza un ancho con una pendienteancho, pendiente (%)todos
offset_cotaavanza un ancho hasta un desnivel o una cota absolutaancho, modo, valortodos
verticalsube o baja sin avanzar: bordillo, muro, escalóndesniveltodos
cunetacuneta triangular o trapecial (2 o 3 vértices)profundidad, ancho de fondo, taludes interior y exterior, desnivel de salidatodos
talud_daylighttalud continuo hasta cortar el terreno; sube en desmonte y baja en terrapléntalud, altura máximadesmonte, terraplén
talud_banquetarepite talud + banqueta hasta cortar el terrenotalud, altura y ancho de banqueta, pendiente de banqueta, máximo de banquetas, talud de la 2.ª y siguientesdesmonte, terraplén

Los dos últimos buscan el terreno y por construcción van al final de la cadena. Con talud_banqueta, el número de banquetas lo decide el terreno en cada PK, no tú.

5.1 Cómo se escriben los valores

TipoCómo se escribe
longitudesmetros: 3.5 o 3,5 (vale la coma)
pendientesen % con signo: -2, -2%. Positivo = sube al alejarse del eje, así que un bombeo del -2% baja hacia fuera en los dos lados
taludesV:H, la notación de siempre: 1:1.5 es tendido, 1:0.5 escarpado. También valen 66% y un número desnudo (1.5 = 1:1.5)
talud opcionalvacío o 0 significa «hereda el del elemento anterior»

5.2 Parámetros dinámicos

Cualquier parámetro admite además dos formas que se resuelven una vez por feature de la directriz:

FormaEjemploCuándo
referencia a campo@anchoun valor por tramo, leído de la capa de directrices
expresión QGIS=if("roca" = 1, '1:0.5', '1:1.5')lógica por tramo

En el editor, la casilla de valores de prueba permite previsualizar una sección con parámetros dinámicos: ancho=7, talud_desmonte=1:1. Lo que no se indique usa el valor por defecto del parámetro.

6. Cálculo del corredor

Vector → AQGIS-Sivil3D → Extruir sección tipo (corredor)…

6.1 Entradas

CampoQué es
Directricescapa de líneas. Cada feature es un corredor independiente, y cada parte de una multilínea también
solo los seleccionadosprocesa únicamente los features seleccionados
Terreno (DEM)cualquier ráster que lea GDAL (GeoTIFF, ASC, IMG, DEM, HGT, VRT…) o una capa de malla. Puede estar en otro sistema de referencia: se transforma
Librería de seccionesarchivo JSON; el botón abre el editor
Campo con la seccióncolumna de texto cuyo valor es el nombre exacto de la sección que se aplica a ese tramo. Vacío = sección por defecto
Sección por defectola que se usa cuando no hay campo o viene vacío
Cota del ejecuatro opciones, ver 6.2.0
El campo de sección no es un identificador numérico: es el nombre tal como aparece en la librería, y la comparación distingue mayúsculas, espacios y acentos. Para no pelearte con las erratas, usa un Mapa de valores en el formulario de la capa, o renombra las secciones a algo corto. Si el nombre no existe, el tramo se salta y el registro te dice qué nombres son válidos.

6.2 Opciones

OpciónQué hace
Paso entre PKseparación de las secciones a lo largo del eje
PK en cada vérticedéjalo activado. En un vértice la sección se coloca según la bisectriz del ángulo; sin PK ahí, la malla se abre por fuera de la curva
PK inicialvalor de PK del principio de cada tramo
Intervalo de PK rotuladoscada cuánto se rotulan los PK (100 m por defecto). Es independiente del paso de cálculo: puedes calcular cada 5 m y rotular cada 100. Con 0 no se crea la capa de PK
Paso de muestreocada cuánto se consulta el DEM al buscar el corte. 0 = automático según la resolución
Semiancho máximodistancia máxima a la que se busca el terreno. Si un talud no corta dentro, se marca como truncado

6.3 Detalles que afectan al resultado

Muestreo del DEM. Se interpola bilinealmente entre los centros de los cuatro píxeles vecinos, no se toma el valor del píxel. Con valores de píxel, la búsqueda del corte da saltos y la línea de daylight sale con dientes de sierra. La lectura va por teselas con caché, porque cada bisección son unas 40 muestras.

Curvas cerradas. Por el interior de una curva las normales convergen y a partir de cierta distancia al eje las secciones contiguas se cruzan. El plugin calcula esa distancia por PK y avisa si el ancho de la sección la supera: reduce el paso entre PK o suaviza la directriz. No lo corrige solo.

NoData. Si el eje cae en NoData, la sección se descarta. Si es el talud el que entra en NoData, se avisa y se trunca.

7. Fusión con el terreno base

Con la opción activada, el TIN de salida incluye también el terreno original alrededor del corredor, cosido a la línea de daylight, de modo que se obtiene una sola superficie continua.

Cómo funciona: se muestrea el terreno en una rejilla, se descartan los nodos que caen dentro de la huella del corredor (y los demasiado próximos al borde, que solo darían triángulos aguja), se añade la huella densificada con las cotas del corredor —esos son los nodos de la costura— y se triangula. Después se tiran los triángulos cuyo centroide cae dentro de la huella.

OpciónQué hace
Celda del terrenopaso de la rejilla. 0 = la resolución del DEM
Margen alrededorcuánto terreno se incluye más allá de la huella

Si la celda pedida daría una rejilla inmanejable, se agranda y se avisa, en vez de agotar la memoria. El resultado no tiene huecos ni solapes: en los tests, la suma de áreas de los triángulos coincide con el rectángulo completo.

8. Capas de salida

Todas salen dentro de un grupo llamado <alineación>-corredor, ordenadas para dibujar y con simbología aplicada. Cada cálculo crea un grupo nuevo (… (2), (3)…) para poder comparar alternativas.

CapaGeometríaContenido
PKPointZPK redondos con P.K. (1+250), distance y angle; etiqueta girada y separada del eje
puntosPointZtodos los vértices, con código, offset y cota
líneas característicasLineStringZuna por código, más DAYLIGHT_IZQ y DAYLIGHT_DER
seccionesLineStringZuna por PK: modo de cada lado, anchos, cota roja, áreas de desmonte y terraplén, avisos
ejeLineStringZel eje con símbolo de carretera: la línea sobre la que se rotulan los PK
huellaPolygonZcontorno en planta de cada tramo
TINPolygonZun polígono por triángulo, con zona, espesor, área, cotas y pendiente en %
medicionestablavolúmenes de tierras entre secciones
Malla 2DMarchivo .2dmse carga como capa de malla nativa: curvas de nivel, vista 3D, cálculos de malla

8.1 Colores de desmonte y terraplén

El TIN sale categorizado por el campo zona:

zonaColorQué es
desmonteocreel proyecto va por debajo del terreno: hay que excavar
terraplenverdeel proyecto va por encima: hay que rellenar
a cotagrisfranja junto al daylight, prácticamente sobre el terreno
terreno naturaltostadoterreno sin tocar, en la malla fusionada

La clasificación se hace triángulo a triángulo comparando su cota media con la del terreno bajo su centroide. El campo espesor guarda el desnivel con signo (negativo excava, positivo rellena), así que también se puede graduar el color por espesor de tierras. Son los mismos colores que la previsualización del editor.

9. Mediciones de tierras

Las áreas de desmonte y terraplén de cada sección se obtienen integrando entre la línea de proyecto y la del terreno, partiendo por los cruces: no es una estimación, es el área exacta de los polígonos que se ven sombreados.

Los volúmenes van por áreas medias:

V = (A1 + A2) / 2 · L

que es la convención de proyecto y la que hay que usar si los números tienen que cuadrar con una medición hecha a mano. Hay también método prismatoide, que amortigua el sesgo en el paso de desmonte a terraplén, donde una de las dos áreas es cero.

El diagrama de masas es el volumen neto acumulado, con coeficiente de esponjamiento configurable: 1.0 significa que un metro cúbico excavado rellena un metro cúbico; 0.9, que solo se aprovecha el 90 %.

En un tramo vertical (bordillo, muro) el perfil tiene dos cotas en la misma abscisa. Si se ignora, la integración sale de la cota de entrada al otro lado del escalón y el área se falsea. El plugin conserva las dos.

La medición sale en dos sitios: la capa secciones lleva cota_roja, area_des y area_ter por PK, y la tabla mediciones lleva, por cada tramo entre secciones consecutivas, las áreas, los volúmenes de desmonte y terraplén, el neto y el acumulado.

10. Visor de perfiles

Vector → AQGIS-Sivil3D → Perfiles del corredor

Panel acoplable con tres vistas del corredor calculado:

VistaQué muestra
Perfil longitudinalrasante contra terreno a lo largo del eje, con desmonte y terraplén sombreados y los PK marcados
Sección en el PK actualla sección transversal con sus códigos, su cota roja y sus áreas
Diagrama de masasvolumen neto acumulado

10.1 Controles

ControlQué hace
Alineacioneslista con casilla de todas las alineaciones de todos los corredores de la sesión: se marcan las que se quieren ver a la vez. Ver 10.2
◀ PK ▶navega por los PK; el desplegable permite saltar a uno concreto
exag. long.exageración vertical del longitudinal. Sin ella la rasante sería una raya horizontal
códigosetiquetas de los vértices en la sección
pinchar en el mapaactiva una herramienta que salta al PK más cercano al punto pinchado
Exportar…guarda la vista actual como PNG

La navegación está sincronizada con el mapa en los dos sentidos: al moverte por los PK se resalta la sección sobre el mapa con una banda elástica, y al pinchar en el mapa (con la casilla activada) se salta al PK más cercano. También se puede pinchar directamente sobre el perfil longitudinal para ir a ese PK.

10.2 Ver varias alineaciones a la vez

El recuadro Alineaciones es el mismo widget en el visor y en el diálogo de planos. Lista una fila por alineación (una por feature de la directriz) de cada corredor de la sesión, con un color propio y una casilla:

ConceptoQué significa
marcada (casilla)entra en el dibujo conjunto: sale en el perfil longitudinal y en el diagrama de masas, superpuesta y a trazos con su color, y sale en los planos
principal (desplegable de arriba)manda donde solo cabe una: la sección transversal, la navegación por PK y, en los planos, el trazado que define las hojas de planta. Se dibuja con línea continua y da el título

Los botones Todas / Ninguna / Solo esta son atajos. Resaltar una fila de la lista también la hace principal, y al revés. La principal no tiene que estar marcada: se puede comparar dos trazados en el longitudinal mientras se va mirando la sección de un tercero.

La principal es un desplegable y no «la fila que esté seleccionada» a propósito: de ella depende qué sale en los planos, y eso no puede quedar escondido en un detalle de la selección de una lista.
Con varias marcadas, la barra de estado da el total de desmonte y terraplén de todas y, además, el neto de cada una, que es la comparación que se busca al poner dos alternativas juntas.

En los planos el criterio es el mismo, pero cada dibujo hace lo que tiene sentido con varias alineaciones:

Lo decide el desplegable Juego de planos, que está arriba del diálogo porque manda sobre los tres dibujos (ver 11.3):

PlanoUn solo juego, el de la principal (por defecto)Un juego por alineación
Transversaleslos cortes de la principal, y solo esos. Las demás salen como traza en esos mismos planos de cortetodas las secciones en la misma lámina, con fid n delante del PK: dos PK 0+000 de ejes distintos serían indistinguibles
Longitudinalel de la principal. Las demás aparecen donde cortan su plano verticaluna tira por alineación, una tras otra, con su etiqueta en el título
Plantaun juego de hojas encajado y girado sobre la principalcada alineación genera sus propias hojas
Cubicacionesla de la principaluna tabla por alineación. Medir tramos distintos juntos inventaría un volumen entre el final de uno y el principio del siguiente

Y en los tres, con la casilla Otros marcada, los demás corredores se dibujan donde crucen o vayan cerca. Ver 11.4.

11. Planos automáticos

Vector → AQGIS-Sivil3D → Generar planos…

11.1 Cómo se hacen (y por qué así)

QGIS no tiene ningún elemento de composición que dibuje perfiles, y montar cientos de polilíneas de layout es inviable. Así que se convierte «dibujar en el plano» en «generar geometría»: una capa de dibujo en espacio papel donde X e Y son milímetros de papel y cada sección va trasladada a su celda de una retícula. El plano no es más que un mapa encuadrado sobre esa capa.

Ventajas: se simboliza con QGIS como cualquier capa, el atlas pagina solo, la exportación a DXF sale gratis y las escalas quedan explícitas.

Dos decisiones hacen que el plano sea acotable. El encuadre es 1:1: el mapa muestra tantas unidades como milímetros mide su marco, porque si se ajustara el dibujo al marco la escala rotulada dejaría de ser cierta. Y la escala es normalizada: se elige la mayor de 1:50, 1:100, 1:125, 1:200, 1:250, 1:500, 1:1000, 1:2000 en la que caben todas las secciones, una sola para toda la lámina.

11.2 Los cuatro planos

PlanoCómo se genera
Planta por hojascapa de rectángulos de hoja a lo largo del eje, usada como cobertura de atlas: una página por hoja, con el mapa girado según el campo rotacion para que el eje salga horizontal, y solape configurable entre hojas
Perfil longitudinalespacio papel a escalas H y V independientes (por defecto 1:1000 y 1:100) con la guitarra debajo: PK, cota de terreno, cota de rasante y cota roja, con los valores girados. Se pagina en tiras: se corta la hoja cuando se agota el ancho o cuando el desnivel ya no cabe en el alto
Transversalesretícula de n×m secciones por hoja. Las celdas se dimensionan para llenar el papel que elijas
Cubicacioneshoja de cierre con la tabla de volúmenes por tramo y el resumen de totales. Pagina sola si no cabe, y los totales van siempre en la última

11.3 Con varias alineaciones: qué juego de planos sale

Un plano es el de un eje: sus transversales son los cortes de su recorrido y su longitudinal es su plano vertical. Con varios trazados marcados hay que decir si se quiere un solo proyecto o varios, y de eso va el desplegable Juego de planos, arriba del diálogo junto a la lista de alineaciones:

ModoQué haceCuándo
Un solo juego, el de la alineación principaltransversales, longitudinal y hojas de planta de la principal. Las demás no traen su propio juego: salen donde cortan esos planos, a trazostrazados que van juntos: una carretera y su reposición, dos calzadas, un ramal
Un juego completo por alineacióncada una genera sus transversales, su longitudinal y sus hojas, uno tras otro y numerados de corridotrazados lejanos o que son obras distintas, que cada uno necesita su encuadre
Con dos ejes paralelos a 40 m, el modo «por alineación» genera el doble de hojas de planta, y cada pareja se solapa más del 70 %: son las mismas hojas repetidas. En los transversales sale la misma mezcla: dos juegos de cortes distintos, uno de cada eje, en la misma lámina. Por eso el modo por defecto es el de la principal.

11.4 Los demás corredores en el dibujo

Con la casilla Otros marcada (lo está de partida), en el plano de un trazado aparecen también los demás:

PlanoQué se ve
Transversalesla traza del otro corredor en ese mismo plano de corte. Se calcula cortando el plano de la sección con las líneas características del otro (borde de calzada, arcén, pie de talud…), así que es literalmente su sección ahí
Longitudinalla intersección de los demás corredores con el plano vertical que recorre la principal. Un trazado que la cruza sale solo en ese tramo —lo que mide de ancho al cruzar—, con su cota, así que se ve por dónde pasa: por encima o por debajo. Uno que va paralelo y no la corta no aparece
Plantasalen siempre, porque el mapa dibuja sus capas

Las trazas ajenas se dibujan a trazos y en morado, para que no se confundan con el proyecto que se está acotando, y se recortan al marco de la celda: un corredor que pasa a 40 m de un dibujo que abarca 15 no puede salir pintado por encima del cajetín. Si no entra, no se ve.

El corte se hace contra las dos familias de líneas de la otra superficie: las longitudinales (las características) y sus propias secciones. Hacen falta las dos: con trazados casi paralelos el plano cruza las longitudinales, y con dos que se cortan en ángulo recto pasa lo contrario —las longitudinales del otro son paralelas al plano y no lo tocan nunca—.

Esto mismo se ve en el visor de perfiles: la sección transversal dibuja las demás alineaciones marcadas que crucen su plano, cada una con su color y a trazos. Se mira hasta el triple del ancho de la sección, y nunca menos de 50 m.

11.5 Qué capas salen en la planta

El recuadro Capas del plano lista las capas del proyecto que pueden ir al mapa y deja marcar las que de verdad se quieren. De partida se marcan las salidas del corredor (TIN, huella, eje, líneas características, secciones, PK) y la directriz; el resto del proyecto —catastro, ortofotos, capas de trabajo— se queda fuera.

Los botones son Todas, Ninguna y Del corredor. Las capas de dibujo en espacio papel no se listan siquiera: sus coordenadas son milímetros y en el mapa aparecerían a cientos de kilómetros.

Antes iban todas las capas del proyecto al plano. En un proyecto de verdad eso da una hoja ilegible y una exportación lentísima.

11.6 Por qué una hoja del longitudinal no llena el papel

Las hojas del perfil longitudinal se cortan por dos motivos: porque se agota el ancho del papel o porque el desnivel ya no cabe de alto. Lo segundo es lo que descoloca: se elige A3 y salen tiras que ocupan la mitad.

Con A3 apaisado y márgenes, quedan unos 366 mm de ancho útil y 221 mm de alto de dibujo. A escala horizontal 1:1000 caben 366 m de eje por hoja; a escala vertical 1:100 caben 22 m de desnivel. Si el terreno sube más de 22 m en menos de 366 m —una pendiente por encima del 6 %—, manda el desnivel y la hoja se corta antes:

Escala verticalDesnivel que cabeAncho aprovechado
1:10022,1 m71 %
1:20044,2 m98 %

No es un fallo: si el dibujo no cabe de alto, hay que partirlo. La solución es bajar la escala vertical (1:200, 1:250) o subir la horizontal. El registro lo dice al generar, con la escala que llenaría la hoja.

11.7 Opciones del diálogo

GrupoOpciones
Qué planosalineaciones marcadas y cuál es la principal, juego de planos (11.3), casilla Otros (11.4), título y plantilla .qpt
Transversalespapel, columnas y filas de la retícula, escala (o automática) y hoja de cubicaciones
Longitudinalpapel, escalas H y V, y cada cuántas secciones se pone una columna en la guitarra
Plantapapel, escala, solape entre hojas y qué capas del proyecto llegan al mapa (11.5)
Exportarcarpeta de salida y formatos: PDF y DXF
El cajetín no se programa. Si indicas una plantilla .qpt, se carga y el plugin solo rellena sus variables (@corredor_titulo, @corredor_subtitulo, @corredor_papel), respetando su tamaño de página y usando su elemento de mapa. Así el formato corporativo lo controláis vosotros.
La casilla del ráster de fondo está apagada a propósito: un DEM en escala de grises tapa el dibujo entero. Actívala solo si lo que hay cargado es una ortofoto o un sombreado.

12. Editor de rasantes

Vector → AQGIS-Sivil3D → Editor de rasantes

Es el perfil longitudinal en modo digitalización: la rasante se dibuja con el ratón sobre el terreno, con las mismas herramientas con las que se digitaliza en planta, y al terminar se escribe en la Z de la directriz. A partir de ahí el corredor se calcula con cota del eje = Z de la directriz (ver 6.2.0), así que este editor es la pieza que faltaba para proyectar en alzado sin salir de QGIS.

12.1 Puesta en marcha

ControlQué hace
Directrizcapa de líneas sobre la que se proyecta. Al abrir se elige la capa activa, o la primera que no sea una salida del propio corredor (el eje, las secciones y las líneas características son salidas, no directrices)
Tramola feature (y la parte, si es una multilínea) que se está editando; cada tramo tiene su propia rasante
DEMráster o malla del que sale el perfil del terreno. Es opcional: sin él se puede dibujar a ciegas, pero no se ve contra qué
exag.exageración vertical de la vista. Sin ella una rasante al 3 % es una raya horizontal
Encajarvuelve a encajar la vista tras haber hecho zoom o desplazado
Del terrenoarranca una rasante pegada al terreno con el número de vértices que se indique: el punto de partida habitual
De la Z de la capalee la rasante que ya tiene la geometría, vértice a vértice. Al elegir un tramo con Z se hace solo

La vista se maneja como cualquier otro plano: rueda para hacer zoom alrededor del cursor y botón central arrastrando para desplazar.

12.2 Cómo se maneja: dos modos y unas cuantas acciones

Lo primero que hay que tener claro es que en la barra hay dos cosas distintas:

Qué sonCómo se comportan
Mover, Insertar, Borrarmodosse quedan activos hasta que se cambia de herramienta
Recta, Arco, Bézier, NURBS, + controlacciones de un solo usocambian el segmento y el mando vuelve solo a Mover, que es lo que se quiere hacer después: arrastrar los tiradores

Las acciones se pueden usar de dos maneras: con un segmento ya seleccionado (se aplican al pulsar el botón, sin más) o sin nada seleccionado (quedan armadas y se aplican al segmento que se pinche a continuación). Debajo de la barra hay un rótulo que dice en cada momento qué se espera que hagas.

12.3 Lo que se puede arrastrar

QuéAspectoQué hace
Vérticecuadrado blanco (naranja el seleccionado)se arrastra en PK y en cota; es un vértice de la rasante
Tiradorcírculo morado, unido por una línea a trazosda forma al segmento curvo. El arco tiene uno y pasa exactamente por él; la Bézier tiene dos y se acerca sin llegar; el NURBS tiene los que le añadas

Al pasar el ratón por encima, lo que se puede coger se rodea de un círculo, y el segmento bajo el cursor se marca en grueso. Si no se resalta nada, ahí no hay nada que agarrar.

12.4 Varios vértices a la vez

La rasante es una ley de cotas independiente de la planta: sus vértices no tienen nada que ver con los de la polilínea de la directriz. Aun así puede tener unos cuantos, y subir o bajar un tramo entero de uno en uno deformaría las pendientes por el camino. Por eso se pueden coger varios:

GestoQué hace
Ctrl (o Mayús) + clicañade o quita ese vértice del grupo
arrastrar desde el vacíoabre una ventana de selección; al soltar entran los vértices que hayan quedado dentro
Ctrl+A / botón Todosselecciona todos
Esc / botón Ningunodeshace la selección
arrastrar un vértice del grupomueve todos el mismo incremento, así que el tramo sube o baja sin deformarse
Suprborra todos los seleccionados (nunca deja menos de dos)

Los vértices del grupo se pintan en naranja, y arriba a la izquierda aparece cuántos hay cogidos.

12.5 Simplificar: la rasante no hereda los vértices de la planta

Una directriz puede tener cientos de vértices, y si la rasante ya está escrita en su Z estará densificada además. Leer eso vértice a vértice daría una rasante de trescientos nodos que no hay quien maneje.

Por eso, al leer la Z de la capa se simplifica con el campo tol. del pie (tolerancia en metros de cota): se queda con los vértices que de verdad definen la rasante, garantizando que en ningún punto se aparta más de esa tolerancia de la original. Con 0 se leen todos. El botón Simplificar… hace lo mismo sobre la rasante que se esté editando.

Con 0,05 m, una directriz de 250 vértices suele quedarse en 15 o 20, y el mayor desvío frente a la rasante original es de 4 cm. Al simplificar, los segmentos vuelven a ser rectas: los tiradores de una curva no sobreviven a que desaparezca uno de sus extremos.
Volver a pulsar el botón del tipo que ya tiene el segmento no lo toca: si recolocase los tiradores sobre la cuerda, perderías la forma que acabas de dar. Para empezar de cero en ese segmento, pásalo a Recta y vuelve a convertirlo.

12.6 Atajos

GestoQué hace
doble clicmete un vértice ahí, con cualquier herramienta activa
botón derecho sobre un vérticelo quita, como en la digitalización de QGIS
Suprquita el vértice seleccionado
Escvuelve al modo Mover
ruedazoom alrededor del cursor
botón central arrastrandodesplaza la vista
Encajarvuelve a encuadrar todo

12.7 El camino corto

  1. Elige la directriz y el DEM: sale el perfil del terreno.
  2. Del terreno con 4 o 5 vértices: ya tienes una rasante de partida.
  3. Arrastra los cuadrados hasta que la rasante te guste, mirando el sombreado de desmonte y terraplén.
  4. Si algún tramo pide curva: pincha el segmento (queda resaltado), pulsa Arco, Bézier o NURBS, y arrastra los círculos.
  5. Si es una rasante de carretera, mejor dejarla en rectas y poner acuerdos con su K en los vértices (12.8): es como se proyecta y como se comprueba.
  6. Remata los números en la tabla y pulsa Aplicar a la Z de la capa.

12.8 Acuerdos verticales (L y K)

Además de los tipos de segmento —que son los de la digitalización en planta— cada vértice interior admite un acuerdo vertical: la parábola simétrica de toda la vida, que redondea la esquina entre dos rectas. Es la herramienta que se usa de verdad al proyectar una carretera y no tiene equivalente en planta.

Se define de dos maneras: escribiendo su longitud L en la columna correspondiente de la tabla, o escribiendo su K y pulsando Aplicar K. K son los metros de acuerdo por cada 1 % de cambio de pendiente, que es como viene en la normativa; el editor calcula L = K · |Δ pendiente en %| y a la inversa.

ReglaPor qué
solo en vértices interioresen los extremos no hay dos pendientes que acordar
solo entre dos rectassobre una Bézier o un NURBS lo que manda son los tiradores; el acuerdo se ignora y se avisa
no puede pasar de la tangente disponiblesi no, se comería el vértice de al lado. Se recorta al que cabe y se avisa
si no hay cambio de pendiente, no hay acuerdouna parábola de curvatura nula es la propia recta

En la vista, el acuerdo se rotula con su L y su K, y sus dos extremos se marcan con un circulito: ahí es donde empieza y acaba la curva.

12.9 Ajustes de dibujo

AjusteEfecto
ajustar al terrenoel vértice que se mueve se pega a la cota del terreno. Útil para arrancar y para forzar un paso a nivel
m PKla abscisa se redondea a múltiplos de ese valor (25 m, 50 m…)
m cotala cota se redondea a múltiplos de ese valor (0,10 m, 0,50 m…)

La tabla de la derecha es la otra mitad del editor: PK, cota y L se escriben a mano, y el tipo de segmento, la K y la pendiente se leen. Es como se remata una rasante cuando ya está casi: con el ratón se busca la forma y con los números se cierra.

12.10 Lo que se ve en planta

Mientras se edita, el mapa resalta la directriz del tramo con una banda elástica y marca con una cruz el punto por el que va el ratón y el vértice seleccionado. La lectura de arriba de la vista da, para la posición del cursor, PK, cota, cota del terreno y cota roja. Desmonte y terraplén se sombrean en los mismos colores que el resto del plugin (ocre y verde), así que se ve de un golpe qué parte de la rasante excava y qué parte rellena.

12.11 Aplicar a la Z de la capa

Aplicar a la Z de la capa escribe la rasante en la geometría del tramo que se está editando:

El campo paso es la densificación: además de los vértices que ya tiene la directriz, se meten puntos a ese paso y en los puntos singulares de la rasante (vértices y extremos de cada acuerdo). Hace falta porque una parábola entre dos vértices separados 300 m se perdería si solo se escribiesen sus extremos. Con paso 0 se escriben únicamente los vértices existentes.

Antes de aplicar, el editor revisa la rasante y avisa de lo que un proyectista querría saber: pendientes por encima del 12 %, acuerdos que no caben, abscisas que no crecen y curvas que se vuelven sobre sí mismas. Se puede aplicar de todas formas: es un aviso, no una prohibición.

12.12 Límites

13. Curva de embalse (cota-volumen)

Vector → AQGIS-Sivil3D → Curva de embalse

Curva característica de un embalse o una balsa a partir del DEM del vaso: para cada cota, el volumen embalsado y la superficie inundada.

13.1 Qué se calcula

Para una cota de agua e:

Es el cálculo de siempre, pero resuelto por acumulación en un histograma: cada celda se clasifica una sola vez según a partir de qué cota empieza a contar, y dos sumas acumuladas dan la curva completa. El resultado es exacto y el coste no depende del número de cotas, así que un vaso de varios GB con paso de 10 cm sale de una pasada. El DEM se lee por bloques, por GDAL cuando es un archivo y por el proveedor de QGIS cuando no lo es.

13.2 Entradas

EntradaQué es
DEM del vasocualquier ráster que QGIS pueda leer
Recortar con un polígonoopcional: capa de polígonos con la que recortar el DEM para evaluar solo dentro. Admite «solo los seleccionados» y reproyecta el polígono al sistema del DEM si hace falta
Cotas a cubicarpor defecto del mínimo al máximo del ráster (o del recorte, si lo hay). También se puede fijar el rango a mano: por ejemplo del fondo a la cota de coronación
Pasointervalo entre cotas. 0,10 m es lo habitual

13.3 Salidas

SalidaCuándo
CSV de la curvasiempre. Cinco columnas: cota, volumen en hm³, superficie en ha, volumen en m³ y superficie en m². Con separador «;» y coma decimal, para que Excel en español lo abra sin tocar nada
PNG del gráficosiempre. Los dos paneles tal y como se ven, dibujados a 1800 × 1200
DEM recortado cargado y estiladosolo si se ha recortado. Es lo que distingue las dos formas de usar la herramienta

Con la carpeta indicada y la casilla marcada, el CSV y el PNG se escriben al terminar el cálculo; los botones Guardar CSV y Guardar PNG permiten elegir el sitio a mano. Los archivos del recorte llevan el sufijo -vaso para no machacar los del DEM completo.

13.4 El estilo de lámina de agua

El DEM recortado se carga con una rampa azul en pseudocolor interpolado: azul oscuro en el fondo y azul claro cada vez más transparente hacia la orilla, de modo que por donde el calado es pequeño se ve el terreno de debajo. La rampa se estira entre la cota mínima y la máxima del recorte, así que el mismo estilo vale para una balsa de 3 m de calado y para un embalse de 60 sin tocar nada. El valor 0 se deja transparente, porque en un recorte es hueco y no una cota.

13.5 Leer la curva

Pasando el ratón por el gráfico se leen cota, volumen y superficie de cada punto; pinchando se fija una cota, que queda dibujada con su etiqueta. Los dos paneles comparten el eje de cotas y tienen su propia escala: son dos magnitudes distintas, hm³ y ha, y un doble eje Y obligaría a mirar dos escalas para leer un solo punto.

13.6 Cosas que conviene saber

14. Guardar y recuperar un corredor

Exportar corredor a archivo… y Importar corredor de archivo…

Las capas de salida están en memoria: al cerrar QGIS se pierden. La exportación escribe dos archivos hermanos:

ArchivoQué lleva
<nombre>.gpkgtodas las capas del grupo, cada una con su estilo dentro y su nombre original. Formato abierto: se abre en cualquier SIG y en CAD
<nombre>.corredor.jsonlas secciones resueltas: línea de terreno, cota del eje y códigos de cada vértice

El JSON es lo que el GeoPackage no puede guardar y sin lo cual no se recupera más que el dibujo. Con él, al importar vuelve el corredor entero y se puede usar el visor de perfiles, medir y generar planos sin el DEM y sin recalcular.

Para exportar, selecciona el grupo del corredor en el panel de capas. Si solo quieres el dibujo, el .gpkg por sí solo vale; al importarlo sin el JSON se avisa de que el visor no tendrá datos.

15. Varios corredores a la vez

Cada cálculo y cada importación se registran como una alternativa independiente, con el nombre del grupo (eje-corredor, eje-corredor (2)…). No se machacan entre sí, así que se pueden comparar.

El recuadro Alineaciones del panel de perfiles y del diálogo de planos lista las alineaciones de todas las alternativas juntas, así que no hay que elegir una y descartar las demás: se marcan las que se quieran comparar, sean del mismo corredor o de corredores distintos. Ver 10.2.

15.1 Los corredores sobreviven al cierre de QGIS

Un corredor calculado es más que sus capas: las secciones resueltas —lo que necesitan el visor de perfiles y el generador de planos— viven en memoria y no están en ninguna capa. Para que no se pierdan al cerrar, el plugin las guarda y las recupera solo por dos caminos:

CaminoCuándo
<proyecto>.sivil3d.jsonal guardar el proyecto se escribe al lado, y al abrirlo se lee. Es el camino normal: basta con guardar el proyecto como siempre
<paquete>.corredor.jsonsi en el proyecto hay capas que salen de un GeoPackage exportado con la herramienta de paquetes (ver 14), su JSON hermano se lee también. Sirve aunque el proyecto no se haya guardado nunca, y es lo que recupera el corredor de un compañero

La recuperación se intenta al abrir el proyecto y también al abrir el visor o el diálogo de planos, por si acabas de cargar un GeoPackage a mano. Lo calculado en la sesión de trabajo siempre manda sobre lo recuperado, que es más antiguo.

Si abres un proyecto guardado con una versión anterior del plugin, las herramientas seguirán sin encontrar nada: ese proyecto no lleva el archivo de corredores. Recalcúlalo una vez y guarda el proyecto; a partir de ahí ya viaja con él.

16. Desde Processing

El algoritmo aqgis:corredor está en la Caja de herramientas, proveedor AQGIS-Sivil3D, grupo Corredor. Sirve para modelos, para procesos en lote y para la consola:

import processing
processing.run("aqgis:corredor", {
    "DIRECTRICES": capa_lineas,
    "DEM": capa_dem,
    "LIBRERIA": r"C:\...\secciones.json",
    "CAMPO_SECCION": "seccion",
    "SECCION_DEFECTO": "Carretera 1+1",
    "PASO_PK": 10.0,
    "INCLUIR_VERTICES": True,
    "COTA_EJE": 0,            # 0 = del DEM, 1 = de la Z de la directriz
    "INTERVALO_PK": 100.0,
    "FUSIONAR": True,
    "CELDA_FUSION": 0.0,      # 0 = resolución del DEM
    "HOLGURA": 50.0,
    "GRUPO": "",              # vacío = <alineación>-corredor
    "OUT_TIN": "TEMPORARY_OUTPUT",
    "OUT_SECCIONES": "TEMPORARY_OUTPUT",
    "OUT_LINEAS": "TEMPORARY_OUTPUT",
    "OUT_HUELLA": "TEMPORARY_OUTPUT",
    "OUT_EJE": "TEMPORARY_OUTPUT",
    "OUT_PK": "TEMPORARY_OUTPUT",
    "OUT_2DM": r"C:\...\corredor.2dm",
})

Los parámetros finos (paso de muestreo, semiancho máximo, PK inicial, banda del DEM, factor y desplazamiento de cota, extensión de fusión, librería en JSON y grupo de capas) están bajo Avanzado.

17. Avisos y problemas frecuentes

SíntomaCausa y solución
«el talud 1:X no corta el terreno en N m»el talud no engancha dentro del semiancho máximo. Caso típico: un terraplén 1:2 sobre una ladera al 50 % es paralelo al terreno y nunca corta. Cambia el talud o amplía el semiancho
«N PK en curva donde las secciones contiguas se cruzan»curva demasiado cerrada para el ancho de la sección. Reduce el paso entre PK o suaviza la directriz
«el terreno no tiene datos… (NoData)»el DEM no cubre esa zona, o hay un hueco. Amplía el DEM o rellena el hueco
«sección '…' desconocida; se salta»el valor del campo de sección no coincide con ningún nombre de la librería. El registro lista los válidos
«usa campos que no existen en la capa»una sección con parámetros @campo se aplica a una capa que no tiene esos campos
«grupo vacío… la superficie quedará abierta»falta el grupo desmonte o terraplén en un lado. Si de verdad quieres que ese lado sea siempre de un tipo, pon el mismo talud en los dos grupos
no se genera ningún triánguloel DEM no cubre las directrices, o están en sistemas de referencia incompatibles
la fusión avisa de que falta scipyinstala scipy en el Python de QGIS; el resto del plugin funciona sin él
el perfil longitudinal no cabereduce la escala horizontal o deja que se pagine: se parte en tiras automáticamente

18. Lo que este plugin no hace

19. Para quien mantenga el código

La separación es deliberada: core/ es Python puro y no importa nada de QGIS, así que toda la geometría delicada (el cosido del TIN, la búsqueda del daylight, las mediciones, el espacio papel) se puede probar sin abrir QGIS. gis/ es lo que habla con QGIS; ui/, la interfaz; processing/, el algoritmo.

python -m unittest aqgis_sivil3d.tests.test_core \
                   aqgis_sivil3d.tests.test_medicion \
                   aqgis_sivil3d.tests.test_paperspace

Los de la capa QGIS necesitan el Python de QGIS: aqgis_sivil3d.tests.test_gis. Entre ellos hay dos guardas que conviene no quitar: una comprueba que no queden APIs de PyQt5 eliminadas en PyQt6 (exec_, QRegExp…), y otra que no haya enums de Qt sin ámbito fuera de ui/qtcompat.py. Son fallos que no se ven al importar, solo al pulsar el botón.

20. Autoría y licencia

Escrito por Rafael Vázquez con Claude (Anthropic). Versión 1.0.0.

Se distribuye como software libre bajo la Licencia Pública General GNU, versión 3 o posterior (GPL v3+). Cualquiera puede usarlo, estudiarlo, modificarlo y redistribuirlo, pero con una condición que la hace la más restrictiva de las licencias libres: quien distribuya el plugin, o una versión modificada de él, tiene que hacerlo bajo esta misma licencia y entregar el código fuente. Nadie puede cerrarlo ni integrarlo en un producto propietario. Se entrega sin garantía de ningún tipo.

El texto completo está en el archivo LICENSE que acompaña al plugin, y también en gnu.org/licenses.

Es la misma familia de licencia que QGIS, que es GPL v2 o posterior, así que el plugin y el programa que lo aloja son compatibles. Un plugin de QGIS es código Python y se distribuye tal cual: quien lo instale tiene el código delante. La GPL es lo que garantiza que siga siendo libre para todos los que lo reciban.