16.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.

16.2.1. Prefacio: Tablas espaciales y no espaciales

QGIS permite cargar capas espaciales y no espaciales. Esto incluye actualmente tablas soportadas por GDAL y texto delimitado, así como los proveedores PostgreSQL, MS SQL Server, SpatiaLite y Oracle. Todas las capas cargadas aparecen en el panel Capas. El hecho de que una capa esté habilitada espacialmente o no determina si se 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.

16.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 openTable Abrir tabla de atributos. También es posible hacer click con el botón derecho en la capa y elegir openTable Abrir tabla de atributos del menú desplegable, o hacer click en el botón openTable 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 Configuración -> Opciones -> Menú de fuentes de datos, 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.

../../../_images/vectorAttributeTable.png

Figura 16.67 Tabla de atributos de la capa regiones

Los botones de la parte superior de la ventana de la tabla de atributos proporcionan la siguiente funcionalidad:

Tabla 16.1 Herramientas disponibles

Icono

Etiqueta

Propósito

Atajo de teclado predeterminado

toggleEditing

Conmutar el modo de edición

Habilitar funciones de edición

Ctrl+E

multiEdit

Conmutar el modo multiedición

Actualizar múltiples campos de muchos objetos

saveEdits

Guardar ediciones

Guardar las modificaciones actuales

refresh

Recargar la tabla

newTableRow

Añadir objeto espacial

Añadir nuevo objeto sin geometría

deleteSelectedFeatures

Borrar objetos seleccionados

Eliminar los objetos seleccionados de la capa

editCut

Cortar elementos seleccionados al portapapeles

Ctrl+X

copySelected

Copiar elementos seleccionados al portapapeles

Ctrl+C

editPaste

Pegar entidades desde el portapapeles

Insertar nuevas entidades a partir de unas copiadas

Ctrl+V

expressionSelect

Seleccionar objetos usando una expresión

selectAll

Seleccionar todo

Seleccionar todos los objetos de la capa

Ctrl+A

invertSelection

Invertir selección

Invertir la selección actual de la capa

Ctrl+R

deselectActiveLayer

Deseleccionar todo

Deseleccionar todos los objetos de la capa actual

Ctrl+Shift+A

filterMap

Filtrar/Seleccionar entidades usando formulario

Ctrl+F

selectedToTop

Mover la selección arriba del todo

Mover filas seleccionadas a la parte superior de la tabla

panToSelected

Desplazar el mapa a las filas seleccionadas

Ctrl+P

zoomToSelected

Ampliar mapa a las filas seleccionadas

Ctrl+J

newAttribute

Nuevo campo

Añadir un nuevo campo a la fuente de datos

Ctrl+W

deleteAttribute

Borrar campo

Borrar un campo de la fuente de datos

editTable

Organizar Columnas

Mostrar/ocultar campos de la tabla de atributos

calculateField

Abrir la calculadora de campos

Actualizar campo para muchas entidades a la vez

Ctrl+I

conditionalFormatting

Formato condicional

Habilitar formato de tabla

dock

Acoplar tabla de atributos

Permite acoplar / desacoplar la tabla de atributos

actionRun

Acciones

Enumera las acciones relacionadas con la capa.

Nota

Dependiendo del formato de los datos y de la biblioteca GDAL incorporada 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 calculateField Calculadora de campo (ver Editar valores de atributo).

La tabla de atributos admite el desplazamiento Mayús+Rueda del ratón en la tabla de atributos para cambiar a una acción de desplazamiento horizontal en lugar de vertical.

16.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 openTable 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 formView 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:

    • highlightFeature Highlight current feature si está visible en el lienzo del mapa

    • panTo Desplazarse automáticamente a la característica actual

    • zoomTo Zoom a la función actual

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ú Configuración -> Opciones -> Fuentes de datos. Puede ser «Recordar la última vista», «Vista de tabla» o «Vista de formulario».

../../../_images/attribute_table_views.png

Figura 16.68 Tabla de atributos en la vista de tabla (arriba) vs vista de formulario (abajo)

16.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 editTable 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 sort 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'.

16.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 conditionalFormatting 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 radioButtonOnField o radioButtonOffFull 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.

../../../_images/attribute_table_conditional_formating.png

Figura 16.69 Formateo Condicional de una tabla de atributos

16.2.3. Interactuar con entidades en una tabla de atributos

16.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):

  • expressionSelect Seleccionar por expresión…

  • formSelect Seleccionar entidades por valor…

  • deselectActiveLayer Deseleccionar todas las entidades de la capa

  • selectAll Seleccionar todas las entidades

  • invertSelection Invertir selección de entidades.

También es posible seleccionar funciones usando el Filtrar y seleccionar entidades mediante formularios.

16.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:

  • openTable Mostrar todas las características

  • openTableSelected 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

  • openTableVisible 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

  • openTableEdited 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 o string_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.

  • Expresiones de filtro almacenadas ►: un atajo para saved expressions utilizado frecuentemente para filtrar su tabla de atributos.

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.

16.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 handleStoreFilterExpressionUnchecked 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, handleStoreFilterExpressionChecked 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.

16.2.3.4. Filtrar y seleccionar entidades mediante formularios

Haciendo clic en filterMap 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.

../../../_images/tableFilteredForm.png

Figura 16.70 Tabla de atributos filtrada por el formulario de filtro

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.

16.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.

../../../_images/copyCellContent.png

Figura 16.71 Botón de copiar contenido de celda

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 copySelected Copiar filas seleccionadas al portapapeles o presionar Ctrl + C.

En el menú Configuración -> Opciones -> Fuentes de datos 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 capa -> Acciones. Consulte Propiedades de acciones para obtener más información sobre las acciones.

16.2.4.1. Guardando entidades seleccionadas como nueva capa

Los objetos espaciales seleccionados pueden guardarse como cualquier formato vectorial compatible con OGR y también transformarse a otro sistema de referencia de coordenadas (SRC). En el menú contextual de la capa, desde el panel Capas, haga clic en Exportar ► Guardar objetos espaciales seleccionados 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). Observará que la casilla Guardar sólo los objetos espaciales seleccionados está marcada. También es posible especificar las opciones de creación de GDAL dentro del diálogo.

16.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.

16.2.5.1. Usando la Calculadora de Campos

El botón calculateField 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 16.72). 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:

  1. aplicar cálculo en toda la capa o solo en entidades seleccionadas

  2. crear un nuevo campo para el cálculo o actualizar uno existente.

../../../_images/fieldcalculator.png

Figura 16.72 Calculadora de Campos

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:

  1. Carga el archivo de forma railroads.shp en QGIS y pulsa openTable Abrir tabla de atributos.

  2. Click en toggleEditing conmutar el modo edición y abre el diálogo calculateField Calculadora de campos.

  3. Selecciona la casilla de verificación checkbox Crear un campo nuevo para guardar los cálculos en un nuevo campo.

  4. Establece Nombre del campo de salida como length_km

  5. Selecciona Número decimal (real) como Tipo de campo de salida

  6. Ajusta la longitud del campo de salida a 10``y la :guilabel:`Precisión` a ``3

  7. Haga doble clic en $length en el grupo Geometría para añadir la longitud de la geometría en el cuadro de expresión de la calculadora de campo (empezará a ver una vista previa de la salida, de hasta 60 caracteres, debajo del cuadro de expresión actualizándose en tiempo real a medida que se monta la expresión).

  8. Completa la expresión escribiendo / 1000 en el cuadro de expresión de la calculadora de campo y click en Aceptar.

  9. Puede ahora encontrar un nuevo campo :guilabel:`length_km`en la tabla de atributos.

16.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.

16.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:

  1. Seleccione el campo a actualizar en la lista desplegable.

  2. Llene el cuadro de texto con un valor, una expresión que escriba o cree directamente usando el botón expression expresión.

  3. Haga click en el botón Actualizar todo, Actualizar seleccionado o Actualizar filtrado según sus necesidades.

../../../_images/fieldcalculatorbar.png

Figura 16.73 Barra de cálculo de campo rápido

16.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 multiEdit Conmutar modo multiedición desde la barra de herramientas dentro del cuadro de diálogo de la tabla de atributos;

  • o seleccionando el menú Editar ► multiEdit Modificar atributos de entidades seleccionadas.

Nota

A diferencia de la herramienta de la tabla de atributos, presionando el botón Editar ► Modificar Atributos de Entidades seleccionadas 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:

  1. Selecciona las entidades que quieras editar.

  2. Desde la barra de herramientas de la tabla de atributos, click en el botón multiEdit. Esto conmutará el diálogo a su vista de formulario. La selección de entidades también se puede realizar en este paso.

  3. 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:

    • multiEditMixedValues 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.

    • multiEditSameValues Todas las entidades seleccionadas tienen el mismo valor para este campo y se mantendrá el valor que se muestra en el formulario.

    • multiEditChangedValues 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.

    ../../../_images/attribute_multiedit.png

    Figura 16.74 Editando campos de múltiples entidades

  4. Haz cambios en los campos que quieras.

  5. 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 undo 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.

16.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.

16.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.

../../../_images/relations1.png

Figura 16.75 Región de Alaska con aeropuertos

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 Proyecto ► Propiedades…. Abre la pestaña Relaciones y haz click en symbologyAdd Agregar Relación.

  • Name 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 es ID.

  • 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 es fk_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).

../../../_images/relations2.png

Figura 16.76 Agregar una relación entre las capas regions y airports

En la pestaña Relaciones, puede también presionar el botón symbologyAdd 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.

../../../_images/relations3.png

Figura 16.77 Regiones de diálogo de identificación con relación a aeropuertos

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 toggleEditing 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 saveEdits es para guardar todas las ediciones en la capa secundaria (aeropuerto).

  • El botón capturePoint 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 newTableRow 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 duplicateFeature 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 deleteSelectedFeatures elimina los aeropuerto(s) seleccionados de forma permanente

  • El símbolo link 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 unlink 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 zoomToSelected puede acercar el mapa a las entidades secundarias seleccionadas.

  • Los dos botones formView y openTable 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.

../../../_images/relations11.png

Figura 16.78 Diseñador de arrastrar y soltar para configurar las herramientas de relación entre regiones y aeropuertos

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:

  1. Elige openTable Abrir Tabla de Atributos para la capa de referencia.

  2. Selecciona el registro que se ha agregado previamente dentro de la forma de entidad de la capa referenciada.

  3. Usa la herramienta de digitalización addPart 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 formView 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.

../../../_images/relations4.png

Figura 16.79 Diálogo de identificación de aeropuerto con relación a las regiones

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.

../../../_images/relations5.png

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 symbologyAdd si elegiste la opción Permitir agregar nuevas entidades en la Propiedades -> Formulario de atributos 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 16.80, 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.

../../../_images/relation_select_by_value.png

Figura 16.80 Seleccionar entidades principales con valores secundarios

16.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 Base de datos -> Administrador de Bases de datos…. 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 Tabla -> Crear Tabla… o Tabla -> Editar Tabla… por lo que deben crearse usando Base de datos -> Ventana SQL…. GeoPackage no admite declaraciones * ADD CONSTRAINT *, por lo que la tabla Airports_airlines debe crearse en dos pasos:

  1. Configura la tabla solo con el campo `` id “” usando Tabla -> Crear tabla …

  2. Usando Base de Datos ► Ventana SQL…, 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.

../../../_images/relations6.png

Figura 16.81 Relaciones y descubrimiento automático

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 Propiedades del proyecto -> Fuentes de datos -> 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 Layer Properties ► Attributes Form para las capas airports y airlines. Para el primero debemos elegir la opción aerolíneas (id) y para el segundo la opción aeropuertos (id).

../../../_images/relations7.png

Figura 16.82 Establecer cardinalidad de relación

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.

../../../_images/relations8.png

Figura 16.83 Relación N-M entre aeropuertos y aerolíneas

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á.

16.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 Proyecto ► Propiedades…. Abra la pestaña 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.

../../../_images/relations9.png

Figura 16.84 Agregar una relación polimórfica usando la capa documents como referencia y animals y plantas como capas referenciadas.

  • 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.

  • 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 es referenced_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 capa decode_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 y animales. Debe definir la clave principal de las capas a las que se hace referencia desde el menú desplegable, por lo que es fid. 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.

../../../_images/relations10.png

Figura 16.85 Vista previa de la relación polimórfica recién creada y sus relaciones secundarias para animales y plantas

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)
);

16.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.

16.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.

../../../_images/external_storage_configuration.png

Figura 16.86 Edición de un almacenamiento externo WebDAV para un campo dado

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.

16.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.

../../../_images/external_storage_store.png

Figura 16.87 Almacenamiento de un archivo en un almacenamiento externo WebDAV

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 taskCancel 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.