15.2. Trabajar con la tabla de atributos
La tabla de atributos muestra información sobre los elementos de una capa seleccionada. Cada fila en la tabla representa un elemento (con o sin geometría), y cada columna contiene una pieza de información particular acerca de ese elemento. Puede buscar, seleccionar, mover o incluso editar elementos en la tabla.
15.2.1. Prefacio: Tablas espaciales y no espaciales
QGIS le permite cargar capas espaciales y no espaciales. Esto actualmente incluye tablas compatibles con OGR y texto delimitado, así como el proveedor PostgreSQL, MSSQL, SpatiaLite y Oracle. Todas las capas cargadas se enumeran en el panel Capas. Si una capa está espacialmente habilitada o no, determina si puede interactuar con ella en el mapa.
Las tablas no espaciales se pueden examinar y editar utilizando la vista de tabla de atributos. Además, se pueden utilizar para búsquedas de campo. Por ejemplo, puede usar columnas de una tabla no espacial para definir valores de atributo, o un rango de valores que están permitidos, para agregarlos a una capa vectorial específica durante la digitalización. Eche un vistazo más de cerca al widget de edición en la sección Formulario de propiedades de campo para obtener más información.
15.2.2. Introducción a la interfaz de la tabla de atributos
Para abrir la tabla de atributos de una capa vectorial, active la capa haciendo click en ella en Panel de capas. Luego, desde el menú principal: menuselection: Layer, elija . También es posible hacer click con el botón derecho en la capa y elegir del menú desplegable, o hacer click en el botón Abrir tabla de atributos en la barra de herramientas Atributos. Si prefiere los atajos, F6 abrirá la tabla de atributos. Shift + F6 abrirá la tabla de atributos filtrada a las entidades seleccionadas y Ctrl + F6 abrirá la tabla de atributos filtrada a las entidades visibles.
Esto abrirá una nueva ventana que muestra los atributos de las entidades de la capa (figure_attributes_table). Según la configuración en , la tabla de atributos se abrirá en una ventana acoplada o en una ventana normal. El número total de entidades en la capa y la cantidad de entidades actualmente seleccionadas / filtradas se muestran en el título de la tabla de atributos, así como si la capa está limitada espacialmente.
Los botones de la parte superior de la ventana de la tabla de atributos proporcionan la siguiente funcionalidad:
Icono |
Etiqueta |
Propósito |
Atajo de teclado predeterminado |
---|---|---|---|
Conmutar el modo de edición |
Habilitar funciones de edición |
Ctrl+E |
|
Conmutar el modo multiedición |
Actualizar múltiples campos de muchos objetos |
||
Guardar ediciones |
Guardar las modificaciones actuales |
||
Recargar la tabla |
|||
Añadir objeto espacial |
Añadir nuevo objeto sin geometría |
||
Borrar objetos seleccionados |
Eliminar los objetos seleccionados de la capa |
||
Cortar elementos seleccionados al portapapeles |
Ctrl+X |
||
Copiar elementos seleccionados al portapapeles |
Ctrl+C |
||
Pegar entidades desde el portapapeles |
Insertar nuevas entidades a partir de unas copiadas |
Ctrl+V |
|
Seleccionar objetos usando una expresión |
|||
Seleccionar todo |
Seleccionar todos los objetos de la capa |
Ctrl+A |
|
Invertir selección |
Invertir la selección actual de la capa |
Ctrl+R |
|
Deseleccionar todo |
Deseleccionar todos los objetos de la capa actual |
Ctrl+Shift+A |
|
Filtrar/Seleccionar entidades usando formulario |
Ctrl+F |
||
Mover la selección arriba del todo |
Mover filas seleccionadas a la parte superior de la tabla |
||
Desplazar el mapa a las filas seleccionadas |
Ctrl+P |
||
Ampliar mapa a las filas seleccionadas |
Ctrl+J |
||
Nuevo campo |
Añadir un nuevo campo a la fuente de datos |
Ctrl+W |
|
Borrar campo |
Borrar un campo de la fuente de datos |
||
Organizar Columnas |
Mostrar/ocultar campos de la tabla de atributos |
||
Abrir la calculadora de campos |
Actualizar campo para muchas entidades a la vez |
Ctrl+I |
|
Formato condicional |
Habilitar formato de tabla |
||
Acoplar tabla de atributos |
Permite acoplar / desacoplar la tabla de atributos |
||
Acciones |
Enumera las acciones relacionadas con la capa. |
Nota
Dependiendo del formato de los datos y la biblioteca OGR construida con su versión de QGIS, es posible que algunas herramientas no estén disponibles.
Debajo de estos botones se encuentra la barra de Cálculo de campo rápido (habilitada solo en modo de edición), que permite aplicar cálculos rápidamente a todas o parte de las entidades de la capa. Esta barra usa lo mismo expresiones que el Calculadora de campo (ver Editar valores de atributo).
15.2.2.1. Vista tabla vs Vista forma
QGIS ofrece dos modos de vista para manipular fácilmente los datos en la tabla de atributos:
The Table view, muestra valores de múltiples funciones en un modo tabular, cada fila representa una función y cada columna un campo. Un clic derecho en el encabezado de la columna le permite configure the table display mientras que un clic derecho en una celda proporciona interaction with the feature.
The Form view shows feature identifiers <maptips>`en un primer panel y muestra solo los atributos del identificador en el que se hizo clic en el segundo. Hay un menú desplegable en la parte superior del primer panel donde se puede especificar el «identificador» mediante un atributo (:guilabel:`Vista previa de columna) o una Expresión. El menú desplegable también incluye las últimas 10 expresiones para su reutilización. La vista de formulario utiliza la configuración de campos de capa (ver Formulario de propiedades de campo).
Puede navegar a través de los identificadores de características con las flechas en la parte inferior del primer panel. Los atributos de las características se actualizan en el segundo panel a medida que avanza. También es posible identificar o pasar a la función activa en el lienzo del mapa presionando cualquiera de los botones en la parte inferior:
Puede cambiar de un modo a otro haciendo click en el icono correspondiente en la parte inferior derecha del cuadro de diálogo.
También puede especificar el modo Vista Preestablecida al abrir la tabla de atributos en el menú . Puede ser «Recordar la última vista», «Vista de tabla» o «Vista de formulario».
15.2.2.2. Configurando las columnas
Haga clic con el botón derecho en el encabezado de una columna cuando esté en la vista de tabla para tener acceso a las herramientas que lo ayudan a controlar:
Redimensionar el ancho de columnas
El ancho de las columnas puede especificarse via un clic derecho en la cabecera de la columna y seleccionar:
Ajustar anchura… para ingresar el valor deseado. De forma predeterminada, el valor actual se muestra en el widget
Establecer todos los anchos de columna… al mismo valor
Autodimensionado para cambiar el tamaño del mejor ajuste a la columna.
Autodimensionar todas las columnas
El tamaño de una columna también se puede cambiar arrastrando el límite a la derecha de su encabezado. El nuevo tamaño de la columna se mantiene para la capa y se restaura en la próxima apertura de la tabla de atributos.
Ocultar y organizar columnas y habilitar acciones
Al hacer clic derecho en el encabezado de una columna, puede elegir Ocultar columna de la tabla de atributos (en el modo «vista de tabla»). Para controles más avanzados, presione el botoón Organize columns… en un menú contextual de encabezado de columna. En el nuevo cuadro de diálogo, puede:
marque/desmarque las columnas que desea mostrar u ocultar: una columna oculta desaparecerá de todas las instancias del cuadro de diálogo de la tabla de atributos hasta que se restablezca activamente.
elementos de arrastrar y soltar para reordenar las columnas en la tabla de atributos. Tenga en cuenta que este cambio es para la representación de la tabla y no altera el orden de los campos en la fuente de datos de la capa.
agregue una nueva columna virtual Actions que muestre en cada fila un cuadro desplegable o una lista de botones de acciones habilitadas. Consulte Propiedades de acciones para obtener más información sobre las acciones.
Ordenando columnas
La tabla se puede ordenar por cualquier columna, haciendo clic en el encabezado de la columna. Una flecha pequeña indica el orden de clasificación (apuntar hacia abajo significa valores descendentes desde la fila superior hacia abajo, apuntar hacia arriba significa valores ascendentes desde la fila superior hacia abajo). También puede optar por ordenar las filas con la opción Ordenar… del menú contextual del encabezado de la columna y escribir una expresión. P.ej. para ordenar las filas usando varias columnas, puede escribir concat(col0, col1)
.
En la vista de formulario, el identificador de características se puede ordenar mediante la opción Ordenar por expresión de vista previa.
Truco
** Clasificación basada en columnas de diferentes tipos **
Tratar de ordenar una tabla de atributos basada en columnas de cadenas y tipos numéricos puede dar lugar a resultados inesperados debido a que la expresión concat("USE", "ID")
devuelve valores de cadena (es decir, 'Borough105' <'Borough6'
). Puede solucionar esto usando, por ejemplo, concat("USE", lpad ("ID", 3, 0))
que devuelve 'Borough105'> 'Borough006'
.
15.2.2.3. Formateo de celdas de tabla usando condiciones
La configuración de formato condicional se puede usar para resaltar en la tabla de atributos las entidades en las que es posible que desee poner un enfoque particular, utilizando condiciones personalizadas en las entidades:
geometría (por ejemplo, identificación de entidades de múltiples partes, áreas pequeñas o en una extensión de mapa definida …);
o valor de campo (por ejemplo, comparar valores con un umbral, identificar celdas vacías …).
Puede habilitar el panel de formato condicional haciendo click en en la parte superior derecha de la ventana de atributos en la vista de tabla (no disponible en la vista de formulario).
El nuevo panel permite al usuario agregar nuevas reglas para formatear la representación de Field o Full row. Agregar nueva regla abre un formulario para definir:
el nombre de la regla;
una condición que utiliza cualquiera de las funciones constructor de expresiones;
el formato: se puede elegir de una lista de formatos predefinidos o crearse en función de propiedades como:
colores de fondo y texto;
uso de icono;
negrita, cursiva, subrayado o tachado;
tipo de letra.
15.2.3. Interactuar con entidades en una tabla de atributos
15.2.3.1. Seleccionando objetos espaciales
En la vista de tabla, cada fila de la tabla de atributos muestra los atributos de una entidad única en la capa. Al seleccionar una fila, se selecciona la entidad e igualmente, al seleccionar una entidad en el lienzo del mapa (en el caso de una capa con geometría habilitada) se selecciona la fila en la tabla de atributos. Si se cambia el conjunto de entidades seleccionadas en el lienzo del mapa (o tabla de atributos), la selección también se actualiza en la tabla de atributos (o lienzo del mapa) en consecuencia.
Los registros se pueden seleccionar haciendo clic en el número de registros del lado izquierdo del registro. Múltiples registros se pueden marcar al mantener la tecla Ctrl. Una selección continua se puede hacer al mantener la tecla Shift y haciendo clic en varios encabezados de registros del lado izquierdo del registro. Todos los registros entre la posición actual del cursos y el registro donde se hace clic son seleccionados. Mover la posición del cursos en la tabla de atributos, al hacer clic en una celda de la tabla, no cambia el registro seleccionado. Cambiar la selección en el lienzo principal no mueve la posición del cursos en la tabla de atributos.
En la vista de formulario de la tabla de atributos, las características se identifican por defecto en el panel izquierdo por el valor de su campo mostrado (ver Propiedades a mostrar). Este identificador se puede reemplazar usando la lista desplegable en la parte superior del panel, ya sea seleccionando un campo existente o usando una expresión personalizada. También puede optar por ordenar la lista de funciones en el menú desplegable.
Haga click en un valor en el panel de la izquierda para mostrar los atributos de la entidad en el de la derecha. Para seleccionar una entidad, debe hacer click dentro del símbolo cuadrado a la izquierda del identificador. Por defecto, el símbolo se vuelve amarillo. Al igual que en la vista de tabla, puede realizar la selección de múltiples funciones utilizando las combinaciones de teclado expuestas anteriormente.
Más allá de seleccionar entidades con el ratón, puede realizar una selección automática basada en el atributo de la característica usando herramientas disponibles en la barra de herramientas de la tabla de atributos, como (ver sección selección_automática y la siguiente para más información y caso de uso):
También es posible seleccionar funciones usando el Filtrar y seleccionar entidades mediante formularios.
15.2.3.2. Filtrando entidades
Una vez que haya seleccionado entidades en la tabla de atributos, es posible que desee mostrar solo estos registros en la tabla. Esto se puede hacer fácilmente usando el elemento Mostrar entidades seleccionadas de la lista desplegable en la parte inferior izquierda del cuadro de diálogo de la tabla de atributos. Esta lista ofrece los siguientes filtros:
Show Selected Features - same as using :guilabel:``Mostrar características seleccionadas` - igual que usar Abrir tabla de atributos (características seleccionadas) desde el menú Capa o la Barra de herramientas de atributos o presionando Shift+ F6
Mostrar características visibles en el mapa - lo mismo que usar Abrir tabla de atributos (Características visibles) desde el menú Capa o la Barra de herramientas de atributos o presionando Ctrl+F6
Mostrar características editadas y nuevas - igual que usar Abrir tabla de atributos (características editadas y nuevas) desde el menú Capa o la Barra de herramientas de atributos
Fieltro de campo - permite al usuario filtrar según el valor de un campo: elija una columna de una lista, escriba o seleccione un valor y presione Enter para filtrar. Luego, solo las entidades que coinciden con
num_field = value
ostring_field como la expresión '%value%'
se muestran en la tabla de atributos. Puede marcar |casilla| Sensible a mayúsculas y minúsculas para ser menos permisivo con cadenas.Filtro avanzado (Expresión) - Abre el cuadro de diálogo del generador de expresiones. Dentro de él, puede crear expresiones complejas para hacer coincidir las filas de la tabla. Por ejemplo, puede filtrar la tabla utilizando más de un campo. Cuando se aplica, la expresión de filtro se mostrará en la parte inferior del formulario.
saved expressions utilizado frecuentemente para filtrar su tabla de atributos.
: un atajo para
También es posible filtrar entidades usando formularios.
Nota
El filtrado de registros fuera de la tabla de atributos no filtra entidades fuera de la capa; simplemente se ocultan momentáneamente de la tabla y se puede acceder a ellos desde el lienzo del mapa o quitando el filtro. Para los filtros que ocultan entidades de la capa, use Constructor de consultas.
Truco
** Actualizar el filtrado de la fuente de datos con ** `` Mostrar entidades visibles en el mapa``
Cuando, por razones de rendimiento, las entidades que se muestran en la tabla de atributos están limitadas espacialmente a la extensión del lienzo en su apertura (ver Opciones de origen de datos para obtener instrucciones), seleccionando Mostrar entidades visibles en el mapa en un La nueva extensión de lienzo actualiza la restricción espacial.
15.2.3.3. Almacenamiento de expresiones de filtro
Las expresiones que utiliza para el filtrado de tablas de atributos se pueden guardar para futuras llamadas. Al utilizar las entradas Filtrar Campos o Filtro avanzado (expresión), la expresión utilizada se muestra en un widget de texto en la parte inferior del cuadro de diálogo de la tabla de atributos. Pulse el botón Save expression with text as name al lado del cuadro para guardar la expresión en el proyecto. Pulsando el menú desplegable junto al botón permite guardar la expresión con un nombre personalizado (Guardar expresión como…). Una vez que se muestra una expresión guardada, se activa y su menú desplegable le permite Editar la expresión y el nombre si lo hay, o Eliminar la expresión almacenada.
Las expresiones de filtro guardadas se guardan en el proyecto y están disponibles a través del menú Expresiones de filtro almacenadas de la tabla de atributos. Son diferentes a los user expressions, compartida por todos los proyectos del perfil de usuario activo.
15.2.3.4. Filtrar y seleccionar entidades mediante formularios
Haciendo clic en Filtrar / Seleccionar entidades usando el formulario o presionando :kbd:` Ctrl + F` hará que el cuadro de diálogo de la tabla de atributos cambie a la vista del formulario y reemplace cada widget con su variante de búsqueda.
A partir de este punto, la funcionalidad de esta herramienta es similar a la descrita en Seleccionar objetos por valor, donde se pueden encontrar descripciones de todos los operadores y modos de selección.
Al seleccionar / filtrar entidades de la tabla de atributos, hay un botón Filtrar entidades que permite definir y refinar filtros. Su uso activa la opción Filtro avanzado (Expresión) y muestra la expresión de filtro correspondiente en un widget de texto editable en la parte inferior del formulario.
Si ya hay entidades filtradas, puede refinar el filtro usando la lista desplegable junto al botón Filtrar entidades. Las opciones son:
Filtrar dentro de («AND»)
Extender filtro («OR»)
Para borrar el filtro, selecciona la opción Mostrar todas las entidades del menú desplegable inferior izquierdo, o borre la expresión y haz click en :guilabel:` Aplicar` o presiona Enter.
15.2.4. Usar acción en entidades
Los usuarios tienen varias posibilidades para manipular la entidad con el menú contextual como:
Seleccionar todas (Ctrl+A) las entidades;
Copiar el contenido de una celda en el portapapeles con Copiar contenido de celda;
Zoom a entidad sin tener que seleccionarlo de antemano;
Navegar a entidad sin tener que seleccionarla de antemano;
Destacar entidad, para resaltarla en el lienzo de mapa;
Abrir formulario: cambia la tabla de atributos a la vista de formulario con un enfoque en la entidad en la que se hizo click.
Si deseas utilizar datos de atributos en programas externos (como Excel, LibreOffice, QGIS o una aplicación web personalizada), seleccione una o más fila(s) y utilice el botón de comando Copiar filas seleccionadas al portapapeles o presionar Ctrl + C.
En el menú
puede definir el formato para pegar con :guilabel:` Copiar entidades como` lista desplegable:Texto plano, sin geometría.
Texto plano, geometría WKT
GeoJSON
También puede mostrar una lista de acciones en este menú contextual. Esto se habilita en la pestaña Propiedades de acciones para obtener más información sobre las acciones.
. Consulte15.2.4.1. Guardando entidades seleccionadas como nueva capa
Las entidades seleccionadas se pueden guardar como cualquier formato vectorial compatible con OGR y también se pueden transformar en otro sistema de referencia de coordenadas (CRS). En el menú contextual de la capa, desde el panel Capas, haga click en :menuselection:` Exportar -> Guardar entidades seleccionadas como … ` para definir el nombre del conjunto de datos de salida, su formato y CRS ( ver sección Creando nuevas capas desde una capa existente). Notarás que :menuselection:»Guardar solo las entidades seleccionadas» está marcado. También es posible especificar las opciones de creación de OGR dentro del diálogo.
15.2.5. Editar valores de atributo
Editar valores de atributos se puede hacer mediante:
escribiendo el nuevo valor directamente en la celda, ya sea que la tabla de atributos esté en la vista de tabla o formulario. Por tanto, los cambios se realizan celda por celda, entidad por entidad;
usando la calculadora de campos: actualiza de una vez un campo que ya puede existir o que se creará, pero para múltiples entidades. Se puede utilizar para crear campos virtuales;
usando el campo rápido barra de cálculo: igual que el anterior pero solo para el campo existente;
o usando el modo multiedición : actualiza de una vez múltiples campos para múltiples entidades.
15.2.5.1. Usando la Calculadora de Campos
El botón Calculadora de campos en la tabla de atributos permite hacer cálculos sobre la base de valores de atributos existentes o funciones definidas, por ejemplo, para calcular la longitud o el área de entidades geométricas. Los resultados se pueden utilizar para actualizar un campo existente o escribir en un nuevo campo (que puede ser uno virtual).
La calculadora de campo está disponible en cualquier capa que admita la edición. Al hacer clic en el icono de la calculadora de campo, se abre el cuadro de diálogo (ver Figura 15.71). Si la capa no está en modo de edición, se muestra una advertencia y el uso de la calculadora de campo hará que la capa se ponga en modo de edición antes de realizar el cálculo.
Basado en el diálogo Constructor de expresiones, el cuadro de diálogo de la calculadora de campo ofrece una interfaz completa para definir una expresión y aplicarla a un campo existente o recién creado. Para utilizar el cuadro de diálogo de la calculadora de campo, debe seleccionar si desea:
aplicar cálculo en toda la capa o solo en entidades seleccionadas
crear un nuevo campo para el cálculo o actualizar uno existente.
Si optas por agregar un nuevo campo, debe ingresar un nombre de campo, un tipo de campo (entero, real, fecha o cadena) y, si es necesario, la longitud total del campo y la precisión del campo. Por ejemplo, si elige una longitud de campo de 10 y una precisión de campo de 3, significa que tiene 7 dígitos antes del punto y 3 dígitos para la parte decimal.
Un breve ejemplo ilustra cómo funciona la calculadora de campo cuando se usa la pestaña Expresión. Queremos calcular la longitud en km de la capa ferrocarriles
del conjunto de datos de muestra de QGIS:
Carga el archivo de forma
railroads.shp
en QGIS y pulsa Abrir tabla de atributos.Click en conmutar el modo edición y abre el diálogo Calculadora de campos.
Selecciona la casilla de verificación Crear un campo nuevo para guardar los cálculos en un nuevo campo.
Establece Nombre del campo de salida como
length_km
Selecciona
Número decimal (real)
como Tipo de campo de salidaAjusta la longitud del campo de salida a
10``y la :guilabel:`Precisión` a ``3
Doble click en
$length
en el grupo Geometría para agregar la longitud de la geometría al cuadro de expresión de la calculadora de campo.Completa la expresión escribiendo
/ 1000
en el cuadro de expresión de la calculadora de campo y click en Aceptar.Puede ahora encontrar un nuevo campo :guilabel:`length_km`en la tabla de atributos.
15.2.5.2. Creando un campo Virtual
Un campo virtual es un campo basado en una expresión calculada sobre la marcha, lo que significa que su valor se actualiza automáticamente tan pronto como cambia un parámetro subyacente. La expresión se establece una vez; ya no es necesario volver a calcular el campo cada vez que cambian los valores subyacentes. Por ejemplo, es posible que desee utilizar un campo virtual si necesita que se evalúe el área a medida que digitaliza entidades o para calcular automáticamente una duración entre fechas que pueden cambiar (por ejemplo, usando la función now()
).
Nota
Uso de Campos Virtuales
Los campos virtuales no son permanentes en los atributos de capa, lo que significa que solo se guardan y están disponibles en el archivo de proyecto que se han creado.
Un campo se puede configurar como virtual solo en su creación. Los campos virtuales están marcados con un fondo violeta en la pestaña de campos del cuadro de diálogo de propiedades de capa para distinguirlos de los campos físicos o unidos normales. Su expresión se puede editar más tarde presionando el botón de expresión en la columna Comentario. Se abrirá una ventana del editor de expresiones para ajustar la expresión del campo virtual.
15.2.5.3. Usando la Barra de cálculo de campo rápido
Si bien la calculadora de campo siempre está disponible, la barra de cálculo de campo rápido en la parte superior de la tabla de atributos solo es visible si la capa está en modo de edición. Gracias al motor de expresión, ofrece un acceso más rápido para editar un campo ya existente:
15.2.5.4. Editando múltiples campos
A diferencia de las herramientas anteriores, el modo de edición múltiple permite editar simultáneamente varios atributos de diferentes entidades. Cuando se cambia la capa para editar, se puede acceder a las capacidades de edición múltiple:
usando el botón Conmutar modo multiedición desde la barra de herramientas dentro del cuadro de diálogo de la tabla de atributos;
Nota
A diferencia de la herramienta de la tabla de atributos, presionando el botón
le proporciona un diálogo modal para completar los cambios de atributos. Por lo tanto, se requiere la selección de entidades antes de la ejecución.Con el objetivo de editar múltiples campos a la vez:
Selecciona las entidades que quieras editar.
Desde la barra de herramientas de la tabla de atributos, click en el botón . Esto conmutará el diálogo a su vista de formulario. La selección de entidades también se puede realizar en este paso.
En el lado derecho de la tabla de atributos, se muestran los campos (y valores) de las entidades seleccionadas. Aparecen nuevos widgets junto a cada campo que permiten mostrar el estado actual de edición múltiple:
El campo contiene diferentes valores para las entidades seleccionadas. Se muestra vacío y cada entidad mantendrá su valor original. Puede restablecer el valor del campo desde la lista desplegable del widget.
Todas las entidades seleccionadas tienen el mismo valor para este campo y se mantendrá el valor que se muestra en el formulario.
El campo ha sido editado y el valor ingresado se aplicará a todas las entidades seleccionadas. Aparece un mensaje en la parte superior del cuadro de diálogo que lo invita a aplicar o restablecer su modificación.
Hacer click en cualquiera de estos widgets le permite establecer el valor actual del campo o restablecer el valor original, lo que significa que puede revertir los cambios campo por campo.
Haz cambios en los campos que quieras.
Click en Aplicar cambios en el texto del mensaje superior o cualquier otra función en el panel izquierdo.
Los cambios se aplicarán a ** todas las entidades seleccionadas **. Si no se selecciona ninguna función, toda la tabla se actualiza con sus cambios. Las modificaciones se realizan como un solo comando de edición. Así que presionando Deshacer revertirá los cambios de atributo para todas las entidades seleccionadas a la vez.
Nota
El modo de edición múltiple solo está disponible para formularios autogenerados y de arrastrar y soltar (ver Personalizando un formulario para sus datos); no es compatible con formularios de interfaz de usuario personalizados.
15.2.6. Creando una o muchas de muchas relaciones
Las relaciones son una técnica que se utiliza a menudo en las bases de datos. El concepto es que las entidades (filas) de diferentes capas (tablas) pueden interactuar entre ellas.
15.2.6.1. Introduciendo relaciones 1-N
Como ejemplo, tiene una capa con todas las regiones de Alaska (polígono) que proporciona algunos atributos sobre su nombre y tipo de región y una identificación única (que actúa como clave principal).
Luego, obtiene otra capa de puntos o tabla con información sobre los aeropuertos que se encuentran en las regiones y también desea realizar un seguimiento de estos. Si desea agregarlos a la capa de regiones, debe crear una relación de uno a muchos utilizando claves externas, porque hay varios aeropuertos en la mayoría de las regiones.
Capas en relaciones 1-N
QGIS no hace ninguna diferencia entre una tabla y una capa vectorial. Básicamente, una capa vectorial es una tabla con una geometría. Entonces puede agregar su tabla como una capa vectorial. Para demostrar la relación 1-n, puede cargar el archivo de forma regions
y el archivo de forma airports
que tiene un campo de clave externa (fk_region
) en las regiones de la capa. Esto significa que cada aeropuerto pertenece exactamente a una región, mientras que cada región puede tener cualquier número de aeropuertos (una relación típica de uno a muchos).
Claves externas en relaciones 1-N
Además de los atributos ya existentes en la tabla de atributos de los aeropuertos, necesitará otro campo fk_region
que actúa como una clave externa (si tiene una base de datos, probablemente querrá definir una restricción sobre ella).
Este campo fk_region siempre contendrá un id de una región. Puede verse como un indicador de la región a la que pertenece. Y puede diseñar un formulario de edición personalizado para editar y QGIS se encarga de la configuración. Funciona con diferentes proveedores (por lo que también puede usarlo con archivos shape y csv) y todo lo que tiene que hacer es decirle a QGIS las relaciones entre sus tablas.
Definir relaciones 1-N
La primera cosa que vamos a hacer es informar a QGIS de las relaciones entre las capas. Esto se hace en Relaciones y haz click en Agregar Relación.
. Abre la pestañaName se utilizará como título. Debe ser una cadena legible por humanos, que describa para qué se utiliza la relación. Solo llamaremos a airport_relation en este caso.
Capa de Referencia (Parental) también considerada como capa padre, es la única con la clave primaria, a la que se señala, así que aquí la capa es
regions
. Debe definir la clave primaria de la capa a la que se hace referencia, así que esID
.Capa Referenciada (Hija) también considerada como capa hija, es la única con la clave externa en ella. En nuestro caso, es la capa
airports
. Para esta capa, debe agregar un campo de referencia que apunte a la otra capa, por lo que esfk_region
.Nota
A veces, necesita más de un campo para identificar de forma exclusiva las entidades en una capa. Crear una relación con dicha capa requiere una clave compuesta, es decir, más de un par de campos coincidentes. Utilice el botón |symbologyAdd | Agregar nuevo par de campos como parte de una clave externa compuesta para agregar tantos pares como sea necesario.
Id se utilizará para fines internos y debe ser único. Puede que lo necesite para construir formularios personalizados. Si lo deja vacío, se generará uno para usted, pero puede asignar uno usted mismo para obtener uno que sea más fácil de manejar.
Intensidad de la relación establece la intensidad de la relación entre la capa principal y la secundaria. El tipo Association por defecto significa que la capa principal está simplemente vinculada a la secundaria, mientras que el tipo Composition le permite duplicar también las funciones secundarias al duplicar las principales y al eliminar una función los hijos también se eliminan, lo que da como resultado una cascada en todos los niveles (significa que los hijos de los hijos de… también se eliminan).
En la pestaña Relaciones, puede también presionar el botón Descubrir relación para obtener las relaciones disponibles de los proveedores de las capas cargadas. Esto es posible para capas almacenadas en proveedores de datos como PostgreSQL o SpatiaLite.
Formularios para relaciones 1-N
Ahora que QGIS conoce la relación, se utilizará para mejorar el formulario generado. Como no hemos cambiado el método de formulario predeterminado (autogenerado) simplemente se añadirá un nuevo control a nuestro formulario. Así que vamos a seleccionar la capa Regiones en la leyenda y a utilizar la herramienta de identificación. Dependiendo de la configuración, el formulario se puede abrir directamente o se tendrá que abrir desde el diálogo de identificación, dentro de las acciones.
Como puede ver, los aeropuertos asignados a esta región en particular se muestran en una tabla. Y también hay algunos botones disponibles. Repasemos en breve:
El botón es para alternar el modo de edición. Tenga en cuenta que cambia el modo de edición de la capa de aeropuerto, aunque estamos en la forma de entidad de una entidad de la capa de región. Pero la tabla representa entidades de la capa del aeropuerto.
El botón es para guardar todas las ediciones en la capa secundaria (aeropuerto).
El botón permite digitalizar la geometría del aeropuerto en el lienzo del mapa y asigna el nuevo objeto espacial a la región actual predeterminada. Tenga en cuenta que el icono cambiará según el tipo de geometría.
El botón agrega un nuevo registro a la tabla de atributos de la capa del aeropuerto y asigna la nueva entidad a la región actual de forma predeterminada. La geometría se puede dibujar posteriormente con la herramienta de digitalización Añadir pieza.
El botón permite copiar y pegar una o más entidades secundarias dentro de la capa secundaria. Posteriormente, se pueden asignar a una función principal diferente o se pueden modificar sus atributos.
El botón elimina los aeropuerto(s) seleccionados de forma permanente
El símbolo abre un nuevo cuadro de diálogo donde puede seleccionar cualquier aeropuerto existente que luego se asignará a la región actual. Esto puede ser útil si creó el aeropuerto en la región equivocada por accidente.
El símbolo desvincula los aeropuerto(s) seleccionados de la región actual, dejándolos sin asignar (la clave externa se establece en NULL) de manera efectiva.
Con el botón puede acercar el mapa a las entidades secundarias seleccionadas.
Los dos botones y a la derecha cambia entre la table view and form view de las funciones secundarias relacionadas.
Si utiliza el Diseñador de arrastrar y soltar para el objeto espacial de las regiones, puede seleccionar qué herramientas están disponibles. Incluso puede decidir si se abre un nuevo formulario cuando se añade un nuevo objeto espacial utilizando la opción Forzar la ocultación del formulario en la función de añadir. Tenga en cuenta que esta opción implica que los atributos no nulos deben tomar un valor válido por defecto para funcionar correctamente.
En el ejemplo anterior, la capa de referencia tiene geometrías (por lo que no es solo una tabla alfanumérica), por lo que los pasos anteriores crearán una entrada en la tabla de atributos de capa que no tiene una característica geométrica correspondiente. Para agregar la geometría:
Selecciona el registro que se ha agregado previamente dentro de la forma de entidad de la capa referenciada.
Usa la herramienta de digitalización Añadir parte para adjuntar una geometría al registro de la tabla de atributos seleccionado.
Si trabajas en la tabla del aeropuerto, el widget Relation Reference se configura automáticamente para el campo fk_region
(el que se usa para crear la relación), consulta Relation Reference widget.
En el formulario del aeropuerto verás el en el lado derecho del campo fk_region
: si haces click en el botón, se abrirá el formulario de la capa de la región. Este widget te permite abrir fácil y rápidamente los formularios de las funciones principales vinculadas.
El widget Relation Reference también tiene una opción para incrustar la forma de la capa principal dentro de la secundaria. Está disponible en el menú :menuselection: Propiedades -> Formulario de atributos de la capa del aeropuerto: seleccione el campo` fk_region` y marca la opción Mostrar formulario incrustado
.
Si observas el cuadro de diálogo de entidades ahora, verás que el formulario de la región está incrustado dentro del formulario de aeropuertos e incluso tendrás un cuadro combinado, que te permite asignar el aeropuerto actual a otra región.
Además, si cambias el modo de edición de la capa del aeropuerto, el campo fk_region
también tiene una función de autocompletar: mientras escribes, verás todos los valores del campo `` id “” de la capa de la región. Aquí es posible digitalizar un polígono para la capa de región usando el botón si elegiste la opción Permitir agregar nuevas entidades
en la de la capa del aeropuerto.
La capa secundaria también se puede utilizar en la herramienta Seleccionar objetos por valor para seleccionar entidades de la capa principal según los atributos de sus hijos.
En Figura 15.79, se seleccionan todas las regiones donde la altitud media de los aeropuertos es superior a 500 metros sobre el nivel del mar.
Encontrarás que hay muchas funciones de agregación diferentes disponibles en el formulario.
15.2.6.2. Introducción de relaciones de muchos a muchos (N-M)
Las relaciones N-M son relaciones de muchos a muchos entre dos tablas. Por ejemplo, las capas de airports
y airlines
: un aeropuerto recibe varias compañías aéreas y una compañía aérea vuela a varios aeropuertos.
Este código SQL crea las tres tablas que necesitamos para una relación N-M en un esquema PostgreSQL / PostGIS llamado * ubicaciones . Puedes ejecutar el código usando :menuselection:`Base de Datos -> Administrador de Bases de datos…` para PostGIS o herramientas externas como `pgAdmin <https://www.pgadmin.org>`_. La tabla de aeropuertos almacena la capa de ``airports`` y la tabla de aerolíneas almacena la capa de ``airlines``. En ambas tablas se utilizan pocos campos para mayor claridad. La parte *complicada es la tabla Airports_airlines
. Lo necesitamos para enumerar todas las aerolíneas de todos los aeropuertos (o viceversa). Este tipo de tabla se conoce como tabla dinámica. Las restricciones en esta tabla obligan a que un aeropuerto se pueda asociar con una aerolínea solo si ambos ya existen en sus capas.
CREATE SCHEMA locations;
CREATE TABLE locations.airports
(
id serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
airport_name text NOT NULL,
CONSTRAINT airports_pkey PRIMARY KEY (id)
);
CREATE INDEX airports_geom_idx ON locations.airports USING gist (geom);
CREATE TABLE locations.airlines
(
id serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
airline_name text NOT NULL,
CONSTRAINT airlines_pkey PRIMARY KEY (id)
);
CREATE INDEX airlines_geom_idx ON locations.airlines USING gist (geom);
CREATE TABLE locations.airports_airlines
(
id serial NOT NULL,
airport_fk integer NOT NULL,
airline_fk integer NOT NULL,
CONSTRAINT airports_airlines_pkey PRIMARY KEY (id),
CONSTRAINT airports_airlines_airport_fk_fkey FOREIGN KEY (airport_fk)
REFERENCES locations.airports (id)
ON DELETE CASCADE
ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED,
CONSTRAINT airports_airlines_airline_fk_fkey FOREIGN KEY (airline_fk)
REFERENCES locations.airlines (id)
ON DELETE CASCADE
ON UPDATE CASCADE
DEFERRABLE INITIALLY DEFERRED
);
En lugar de PostgreSQL, también puedes utilizar GeoPackage. En este caso, las tres tablas se pueden crear manualmente usando
. En GeoPackage no hay esquemas, por lo que el prefijo locations no es necesario.Las restricciones de clave externa en la tabla `` Airports_airlines`` no se pueden crear usando *, por lo que la tabla Airports_airlines
debe crearse en dos pasos:
Configura la tabla solo con el campo `` id “” usando
Usando
, escribe y ejecuta este código SQL:ALTER TABLE airports_airlines ADD COLUMN airport_fk INTEGER REFERENCES airports (id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED; ALTER TABLE airports_airlines ADD COLUMN airline_fk INTEGER REFERENCES airlines (id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
Luego, en QGIS, debe configurar dos una-a-muchas relaciones como se explicó anteriormente:
una relación entre la tabla de
airlines
y la tabla dinámica;y una segunda entre la tabla
airports
y la tabla dinámica.
Una forma más fácil de hacerlo (solo para PostgreSQL) es usando Descubrir Relaciones en :menuselection:` Proyecto -> Propiedades -> Relacione`. QGIS leerá automáticamente todas las relaciones en su base de datos y solo tiene que seleccionar las dos que necesita. Recuerde cargar primero las tres tablas en el proyecto QGIS.
En caso de que desee eliminar un `` airport`` o una airline
, QGIS no eliminará los registros asociados en la tabla Airports_airlines
. Esta tarea la realizará la base de datos si especificamos las * restricciones * correctas en la creación de la tabla dinámica como en el ejemplo actual.
Nota
** Combinando relación N-M con grupo de transacciones automáticas **
Debes habilitar el modo de transacción en
cuando trabajes en dicho contexto. QGIS debería poder agregar o actualizar fila(s) en todas las tablas (airlines, airports y las tablas dinámicas).Finalmente tenemos que seleccionar la cardinalidad correcta en airports
y airlines
. Para el primero debemos elegir la opción aerolíneas (id) y para el segundo la opción aeropuertos (id).
Ahora puede asociar un airport con una airline (o una airline con un airport ) usando Agregar función secundaria o :guilabel:` Vincular función secundaria existente` en los subformularios. Se insertará automáticamente un registro en la tabla Airports_airlines
.
Nota
Uso de cardinalidad ** relación muchos a uno **
A veces, no es deseable ocultar la tabla dinámica en una relación N-M. Principalmente porque hay atributos en la relación que solo pueden tener valores cuando se establece una relación. Si sus tablas son capas (tienen un campo de geometría) podría ser interesante activar la opción En la identificación del mapa (:menuselection:` Propiedades de capa -> Formulario de atributos -> Widgets disponibles -> Campos`) para los campos de clave externa en la tabla dinámica.
Nota
** Clave principal de la tabla dinámica **
Evita el uso de varios campos en la clave principal en una tabla dinámica. QGIS asume una única clave primaria, por lo que una restricción como `` restricción de la clave primaria de la clave de airports_airlines_pkey (airport_fk, airline_fk)`` no funcionará.
15.2.6.3. Introducción a las relaciones polimórficas
Las relaciones polimórficas son un caso especial de las relaciones 1-N, donde una única capa de referencia (documento) contiene las características de varias capas de referencia. Esto difiere de las relaciones normales que requieren una capa de referencia diferente para cada capa referenciada. Se logra una sola capa de referencia (documento) agregando una columna layer_field
adicional en la capa de referencia (documento) que almacena información para identificar la capa referenciada. En su forma más simple, la capa de referencia (documento) simplemente insertará el nombre de la capa a la que se hace referencia en este campo.
Para ser más precisos, una relación polimórfica es un conjunto de relaciones normales que tienen la misma capa de referencia pero que tienen la capa de referencia definida dinámicamente. La configuración polimórfica de la capa se resuelve mediante el uso de una expresión que debe coincidir con algunas propiedades de la capa a la que se hace referencia, como el nombre de la tabla, la identificación de la capa, el nombre de la capa.
Imagina que vamos al parque y queremos hacer fotos de diferentes especies de plantas
y animales
que vemos allí. Cada planta o animal tiene varias imágenes asociadas, por lo que si usamos las relaciones 1:N normales para almacenar imágenes, necesitaríamos dos tablas separadas, animal_images
y plant_images
. Esto podría no ser un problema para 2 mesas, pero imagina si queremos tomar fotos separadas para hongos, pájaros, etc.
Las relaciones polimórficas resuelven este problema ya que todos los objetos espaciales referenciados se almacenan en la misma tabla documentos
. Para cada objeto espacia, la capa referenciada se almacena en el campo referenced_layer
y el id del objeto espacial referenciado en el campo referenced_fk
.
Definición de relaciones polimórficas
Primero, informe a QGIS sobre las relaciones polimórficas entre las capas. Esto se hace en Relaciones y haga clic en la pequeña flecha hacia abajo junto a symbologyAdd| Agregar relación, para que pueda seleccionar la opción Agregar relación polimórfica del menú desplegable recién aparecido.
. Abra la pestañaId se utilizará para fines internos y debe ser único. Puede que lo necesite para construir formularios personalizados. Si lo deja vacío, se generará uno para usted, pero puede asignar uno usted mismo para obtener uno que sea más fácil de manejar.
Capa de Referencia (Niño) también considerada como capa secundaria, es aquella que tiene el campo de clave foránea. En nuestro caso, esta es la capa
documentos
. Para esta capa, debe agregar un campo de referencia que apunte a la otra capa, por lo que esreferenced_fk
.Nota
A veces, necesita más de un campo para identificar de forma exclusiva las entidades en una capa. Crear una relación con dicha capa requiere una clave compuesta, es decir, más de un par de campos coincidentes. Utilice el botón |symbologyAdd | Agregar nuevo par de campos como parte de una clave externa compuesta para agregar tantos pares como sea necesario.
Campo de capa es el campo de la tabla de referencia que almacena el resultado de la expresión de capa evaluada, que es la tabla de referencia a la que pertenece esta entidad. En nuestro ejemplo, este sería el campo
referenced_layer
.Expresión de capa se evalúa como un identificador único de la capa. Este puede ser el nombre de la capa
@layer_name
, la identificación de la capa@layer_id
, el nombre de la tabla de la capadecode_uri(@layer, 'table')
o cualquier cosa que pueda identificar de manera única una capa.Intensidad de la relación establece la intensidad de las relaciones generadas entre la capa principal y la secundaria. El tipo Asociación por defecto significa que la capa principal está simplemente vinculada a la secundaria, mientras que el tipo Composición le permite duplicar también las funciones secundarias al duplicar las principales y al eliminar una función los hijos también se eliminan, lo que da como resultado una cascada en todos los niveles (significa que los hijos de los hijos de… también se eliminan).
Capas referenciadas también consideradas como capas padre, son aquellas que tienen la clave primaria apuntada, por lo que aquí serían capas
plantas
yanimales
. Debe definir la clave principal de las capas a las que se hace referencia desde el menú desplegable, por lo que esfid
. Tenga en cuenta que la definición de una clave primaria válida requiere que todas las capas referenciadas tengan un campo con ese nombre. Si no existe tal campo, no puede guardar una relación polimórfica.
Una vez añadida, la relación polimórfica se puede editar a través de la entrada de menú Editar relación polimórfica.
El ejemplo anterior utiliza el siguiente esquema de base de datos:
CREATE SCHEMA park;
CREATE TABLE park.animals
(
fid serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
animal_species text NOT NULL,
CONSTRAINT animals_pkey PRIMARY KEY (fid)
);
CREATE INDEX animals_geom_idx ON park.animals USING gist (geom);
CREATE TABLE park.plants
(
fid serial NOT NULL,
geom geometry(Point, 4326) NOT NULL,
plant_species text NOT NULL,
CONSTRAINT plants_pkey PRIMARY KEY (fid)
);
CREATE INDEX plants_geom_idx ON park.plants USING gist (geom);
CREATE TABLE park.documents
(
fid serial NOT NULL,
referenced_layer text NOT NULL,
referenced_fk integer NOT NULL,
image_filename text NOT NULL,
CONSTRAINT documents_pkey PRIMARY KEY (fid)
);
15.2.7. Almacenar y obtener un recurso externo
Un campo puede apuntar a un recurso almacenado en un sistema de almacenamiento externo. Los formularios de atributos se pueden configurar para que actúen como un cliente de un sistema de almacenamiento externo con el fin de almacenar y recuperar esos recursos, a pedido de los usuarios, directamente desde los formularios.
15.2.7.1. Configuración de un almacenamiento externo
Para configurar un almacenamiento externo, primero debe configurarlo desde el vector attribute form properties y seleccionar el widget Attachment.
Desde el widget Adjunto, primero hay que seleccionar el Tipo de almacenamiento:
guilabel:Seleccionar archivo existente: La URL de destino ya existe. Cuando selecciona un recurso, no se logra ninguna operación de almacenamiento, el atributo simplemente se actualiza con la URL.
guilabel:Copia simple: almacena una copia del recurso en un destino de disco de archivo (que podría ser un sistema de archivos local o compartido en red) y el atributo se actualiza con la ruta a la copia.
Almacenamiento WebDAV: El recurso se envía a un servidor HTTP que soporta el protocolo WebDAV y el atributo se actualiza con su URL. Nextcloud, Pydio u otros software de alojamiento soportan este protocolo.
Luego, debe configurar el parámetro Store URL, que proporciona la URL que se utilizará cuando se necesite almacenar un nuevo recurso. Es posible configurar una expresión usando el data defined override widget para tener valores específicos de acuerdo a los atributos de las características.
La variable @selected_file_path podría usarse en esa expresión y representar la ruta de archivo absoluta del archivo seleccionado por el usuario (usando el selector de archivos o arrastrar y soltar).
Nota
Usando el almacenamiento externo WebDAV, si la URL termina con «/», se considera como una carpeta y se agregará el nombre del archivo seleccionado para obtener la URL final.
Si el sistema de almacenamiento externo lo necesita, es posible configurar un authentication.
15.2.7.2. Usar un almacenamiento externo
Una vez configurado, puede seleccionar un archivo local usando el botón … al editar el atributo de una característica. Dependiendo de lo configurado storage type, tEl archivo se almacenará en el sistema de almacenamiento externo (excepto si se ha seleccionado Seleccionar archivo existente) y el campo se actualizará con la nueva URL del recurso.
Nota
El usuario también puede lograr el mismo resultado si arrastra y suelta un archivo en todo el widget adjunto.
use el botón Cancel`para cancelar el proceso de almacenamiento. Es posible configurar un visor utilizando el :guilabel:`Visor de documentos integrado para que el recurso se obtenga automáticamente del sistema de almacenamiento externo y se muestre directamente debajo de la URL. La anterior |advertencia| El icono indica que el recurso no se puede obtener del sistema de almacenamiento externo. En ese caso, podrían aparecer más detalles en el Panel de mensajes de registro.