5.3. Lesson: Formularios

Cuando añades nuevos datos digitalizando, se te presenta un cuadro de diálogo que te permite rellenar los atributos del elemento. Sin embargo, el cuadro de diálogo no es muy bonito a la vista. Esto puede causar algún problema, especialmente si tienes que crear conjuntos de datos extensos, o si quieres que otra gente te ayude a digitalizar y encuentran los formularios por defecto confusas.

Afortunadámente, QGIS te permite crear tus propios cuadros de diálogo para una capa. Esta lección te enseñará cómo.

El objetivo de esta lección: Crear un formulario para una capa.

5.3.1. basic Follow Along: Using QGIS” Funcionalidad del Diseño de un Formulario

  1. Selecciona la capa roads en el panel Capas

  2. Entra en Modo Edición como antes

  3. Abre la tabla de atribtuos de la capa roads

  4. Click-Derecho en cualquier celda de la tabla. Un pequeño menú aparecerá, que incluye la entrada :guilabel:Àbrir formulario`

  5. Click en él para ver el formulario que QGIS genera para esta capa

Obviamente sería bonito poder hacerlo mientras miras el mapa, en lugar de buscar una calle específica en la Tabla de Atributos cada vez.

  1. Selecciona la capa roads en el panel de Capas

  2. Usando la herramienta identify Identificar objetos espaciales, click enn` cualquier calle del mapa.

  3. El panel Resultados de la Identificación se abre y muestra una vista de árbol` con los valores de los campos y otra información general sobre el objeto espacial clickado.

  4. En la parte superior del panel, marque la casilla de verificación Auto open form for single feature results en el menú options sup:Identify Settings

  5. Ahora, de nuevo haga click en calles en el mapa. A lo largo del diálogo Resultados de la Identificación, verá la forma ahora familiar:

    ../../../_images/roads_form.png
  6. Cada vez que haces click en un objeto independiente con la herramienta Identify, su formulario emerge mientras esté marcada Auto open form

5.3.2. basic Try Yourself Utilizando el Formulario para Editar Valores

Si estás en modo edición, puedes utilizar el formulario para editar los atributos de los elementos.

  1. Activa el modo edición (si no está ya activado).

  2. Usando la herramienta identify Identificar objetos espaciales, click en la calle principal que recorre Swellendam:

    ../../../_images/main_street_selected.png
  3. Edita su valor highway para ser secudary

  4. Sal del modo edición y guarda tus cambios

  5. Abre la Tabla de Atributos y nota que el valor se ha actualizado en la tabla de atributos y por lo tanto en los datos fuente

5.3.3. moderate Follow Along: Ajustando los Tipos de Campos del Formulario

Es bonito editar cosas utilizando un formulario, pero todavía tienes que introducirlo todo a mano. Afortunadamente, los formularios tienen diferentes tipos de los llamados widgets que te permiten editar datos de varias formas diferentes.

  1. Abre las Propiedades… de la capa roads

  2. Cambia a la pestaña Campos. Verás esto:

    ../../../_images/fields_panel.png
  3. Cambie a la pestaña Formulario de Atributos. Verás esto:

    ../../../_images/attributes_form.png
  4. Click en la fila oneway y escoge Casilla de verificación como Tipo de Control en la lista de opciones:

    ../../../_images/checkbox_selected.png
  5. Haga click en Aceptar.

  6. Entra al modo edición (si la capa roads no está todavía en modo edición)

  7. Click en la herramienta identify Identificar Objetos Espaciales

  8. Click en la misma carretera principal que eligió antes

Ahora verá que el atributo :guilabel:òneway` tiene una casilla de verificaión a su lado indicando True (marcado) o False (desmarcado).

5.3.4. hard Try Yourself

Ajusta un formulario más apropiado para el campo highway.

Comprueba tus resultados

5.3.5. hard Try Yourself Creacion de Datos para Test

También puedes diseñar tu formulario personalizado desde cero

  1. Crea una capa de puntos simple llamada test-data con dos atributos:

    • name (text)

    • age (text)

    ../../../_images/new_point_layer.png
  2. Añada unos pocos puntos en tu nueva capa utilizando las herramientas de digitalización para tener unos pocos datos con los que jugar. Debería presentarse un formulario QGIS de atributos capturados por defecto cada vez que añadas un punto nuevo.

    Nota

    Puede que necesites desactivar Autoensamblado si todavía está acitvada de pasos anteriores.

    ../../../_images/new_point_entry.png

5.3.6. hard Follow Along: Creando un Nuevo Formulario

Ahora queremos crear nuestro propio formulario personalizado para la fase de captura de datos de atributos. Para hacer esto, debe tener QT Designer instalado (solo es necesario para la persona que crea los formularios).

  1. Inicia QT Designer

  2. En el cuadro de diálogo que aparece, crea un nuevo cuadro de diálogo:

    ../../../_images/qt_new_dialog.png
  3. Busca Widget Box a la izquierda de tu pantalla (por defecto). Contiene un elemento llamado Line Edit.

  4. Haz clic y arrastra el elemento hasta tu formulario. Esto creará un nuevo Line Edit en el formulario.

  5. Con el nuevo elemento de edición de línea seleccionado, verás sus propiedades en un lado de tu pantalla (en el lado derecho por defecto):

    ../../../_images/qt_line_edit.png
  6. Establece su nombre como Name.

  7. Usando la misma aproximación, crea una nueva spinbox y establece su nombre como Age.

  8. Agregue una Etiqueta con el texto Añadir una nueva Persona en negrita (busque en las propiedades del objeto para saber cómo configurar esto). Alternativamente, es posible que desee establecer el título del cuadro de diálogo en sí (en lugar de agregar una etiqueta).

  9. Haz clic en cualquier parte de tu cuadro de diálogo.

  10. Busque el botón Diseñar verticalmente (en una barra de herramientas a lo largo del borde superior de la pantalla, de forma predeterminada). Esto establece su diálogo automáticamente.

  11. Establezca el tamaño máximo del diálogo (en sus propiedades) en 200 (ancho) por 100 (alto).

  12. Guarde su nuevo formulario como exercise_data/forms/add_people.ui

  13. Cuando esté grabado, puede cerrar Qt Designer

5.3.7. hard Follow Along: Asociando el Formulario con Tu Capa

  1. Regresa a QGIS

  2. Haz doble click en la leyenda de la capa test-data para acceder a sus propiedades.

  3. Haga clic en la pestaña Formulario de Atributos de Propiedades de capa

  4. En el menú desplegable Disposición del editor de atributos, selecciona Proporcionar archivo UI.

  5. Click en el botón elipse y escoge el archivo add_people.ui que acaba de crear:

    ../../../_images/provide_ui_file.png
  6. Click en Aceptar en el diálogo Propiedades de Capa

  7. Entra en el modo edición y captura un nuevo punto

  8. Cuando lo hagas, se presentará un cuadro de diálogo personalizado (en lugar del genérico que el QGIS crea normalmente).

  9. Si hace click en uno de sus puntos con la herramienta identify Identificar Objetos Espaciales, ahora puede abrir el formulario haciendo click derecho en la ventana de resultados de identificación y eligiendo :menuselection:` Ver formulario de Objetos Espaciales` en el menú contextual.

  10. Si está en modo de edición para esta capa, ese menú contextual mostrará Editar formulario de objeto espacial en su lugar, y luego puede ajustar los atributos en el nuevo formulario incluso después de la captura inicial.

5.3.8. In Conclusion

Utilizando formularios, puedes facilitarte la vida cuando creas o editas datos. Editando tipos de widgets o creando nuevos desde cero, puedes controlar la experiencia de alguien que digitalice nuevos datos para esa capa, además minimizas malentendidos y errores innecesarios.

5.3.9. Further Reading

Si completó la sección avanzada anterior y tiene conocimiento de Python, puede consultar esta entrada del blog sobre la creación de formularios de objetos personalizados con lógica de Python, que permite funciones avanzadas que incluyen validación de datos, autocompletado, etc.

5.3.10. What’s Next?

Abrir un formulario de identificación de un elemento es una de las acciones estándar que QGIS puede realizar. Sin embargo, puedes dirigirlo a realizar acciones de personalización que tú definas. Este es el tema de la siguiente lección.