Cómo modificar la estructura de la tabla de atributos de una capa con QGIS 3

A menudo en nuestros trabajos con información geográfica hemos necesitado cambiar alguna propiedad de la tabla de atributos de una capa vectorial. Sorprendentemente, las mejoras y evoluciones de los Sistemas de Información Geográfica en lo que se refiere a la modificación de los atributos alfanuméricos es muy limitada.

Videotutorial:

Tradicionalmente se hacía este work around:

Crear en la tabla del shapefile un identificador único, exportar la tabla a un archivo delimitado por comas (o .dbf), importarlo a una base de datos y en la base de datos ordenar o modificar los campos. Borrar en la capa todos los campos menos el identificador y hacer un join de la tabla en la base de datos a través del identificador. Finalmente se exporta a un nuevo shape en el que ya se conserva el orden de los campos tal y como los has vinculado.

Por supuesto nunca se debe modificar la tabla de atributos abriendo el archivo .dbf desde un programa tipo Excel.

Afortunadamente el software libre QGIS nos da una solución mucho más sencilla a través del algoritmo «Rehacer campos«.

Este algoritmo permite editar la estructura de la tabla de atributos de una capa vectorial.

Los campos se pueden modificar en su tipo y nombre.

Las características principales del algoritmo son:

  • Cambiar el nombre y el tipos de campo.
  • Añadir y eliminar campos.
  • Cambiar el orden de los campos.
  • Calcular nuevos campos en función de una expresión.
  • Cargar una lista de campos de otra capa.

Vamos a ver cómo utilizar este algoritmo:

1.- Añadir la capa en un proyecto:

2.- Vamos a la Caja de herramientas de procesado. Si no lo tienes en la interfaz de QGIS ve al menú superior Ver > Paneles > Caja de herramientas o en Procesos > Caja de herramientas

3.- Dentro de la Caja herramientas vamos a Tabla vectorial > Rehacer campos.

4.- Hacemos clic sobre el algoritmo y nos encontramos con la ventana:

A partir de este momento ya podemos utilizar las herramientas que nos proporciona el algoritmo. Con estos cinco botones podemos:

  1. Crear un nuevo campobotones-rehacer-campos
  2. Eliminar un campo existente.
  3. Mover un campo hacia arriba.
  4. Mover un campo hacia abajo.
  5. Restablecer todos los campos a su estado original.

 

Por ejemplo para mover hacia arriba o hacia abajo un campo, debemos seleccionarlo y hacer clic en la flecha correspondiente:

bajar-campos

También podemos editar el nombre del campo haciendo clic sobre él. O cambiar su tipo:

cambiar-el-tipo-de-campo

Una vez tenemos nuestra tabla de atributos ajustada según nuestras necesidades, debemos ejecutar el algoritmo haciendo clic en el botón Ejecutar.

La capa original no se modifica. Se genera una nueva capa, que contiene la tabla de atributos modificada, de acuerdo con la asignación de campos proporcionado.

Let’s connect!

Date de alta en nuestra newsletter y te enviaremos nuestra propuesta con las mejores
Soluciones GIS basadas en software libre

Tan solo una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos

27 comentarios en «Cómo modificar la estructura de la tabla de atributos de una capa con QGIS 3»

  1. Estoy intentando resolver un problema. Tengo una tabla excel con coordenadas XY y además un campo de texto de 600 caracteres, cuando lo paso a QGIS y exporto a shape, el campo se recorta a 254 caracteres, por lo que vierde gran parte de la información, la cual es una descripción de texto. ¿Hay alguna forma para hacer que el shape no salga con los campos cortados?

  2. Aurelio,

    segui los pasos pero cuando le doy RUN no me crea una nueva tabla ni me aparece cambios en la tabla del shp que quiero modificar. Me aparece esto:

    «Algorithm Refactor fields starting…

    float division by zero See log for more details»

    Muchas Gracias!!!

    Saludos desde Argentina!

  3. Qué tal. Soy «avecindado» novato a qgis. Uní tablas y puedo mirar los atributos y se pueden mostrar en el mapa. ¿Hay una forma para mostrar en el mapa atributos de varias columnas a la vez, y mostrarlas en gráfico con sus valores?
    Desde Ciudad de México

  4. Hola Aurelio. Te comento que soy una principiante y apenas puedo defenderme construyendo mis mapas a partir de shapefiles. En esta oportunidad estoy tratando de editar los nombres de los ríos en una capa vectorial porque presentan muchos errores debido a que las tildes se convirtieron en código (por ejemplo Río en lugar de Río). Debido que los errores son innumerables, me tomaría una eternidad corregirlos uno por uno. He tratado de encontrar un camino sencillo para hacerlo pero me ha sido imposible. Entiendo la dificultad de modificar el archivo de atributos pero guardo la esperanza de que exista alguna opción. Utilizo la versión 2.12 de Qgis. Te agradezco cualquier ayuda.

    • Hola Diana,
      Quizá haya solución más rápida, pero se me ocurre que puedes exportar la tabla a Excel y allí utilizar un buscar y reemplazar para sustituir los caracteres extraños por los conocidos.

      Una vez corregida la tabla puedes importarla a QGIS y realizar un join. Un join es una unión de dos tablas mediante un campo común, con el join realizado podrás crear una campo nuevo en blanco y mediante la calculadora de campos indicar que el nuevo campo sea igual al campo corregido. Por último solo te falta eliminar el campo de los caracteres extraños.

      Saludos!

      • Hola Aurelio. Voy a ponerme en la tarea a ver si lo consigo. Lo veo posible… Muchas gracias por tu respuesta: perfecta para mi nivel. Un saludo.

    • El problema del porqué está cambiando las letras es por la codificación, la mayoria de los archivos se codifican con utf-8, pero muchos son creados con System, por lo que cuando se crea el shapefile tiene los datos con tildes y demas simbolos, puedes resolverlos de distintas formas, pero la mas facil es cargar el shapefile en Qgis y modificarle la codificacion con la que se carga, por default es System. (en caso de que no sepas cual es la codificación que tiene exporta una parte de la tabla donde se vean los caracteres extraños a .csv y despues lo cargas en Qgis con la herramienta añadir capa de texto delimitado y vas probando cambiando la codificacion y vez cual es la que soluciona el problema y es la que vas a usar).
      Despues de cargarlo con la nueva codificacion solo revisa en la tabla de atributos si los datos estan bien y despues lo guardas como un nuevo shapefile con codificacion utf-8, al cargarlo en cualquier gis debe de aparecer bien, la ventaja es que no modificas tu archivo original

  5. HOLA, HACE UN TIEMPO HICE UN CURSO DE LEAFLET
    ACTUALMENTE USO QGIS
    QUISIERA SABER SI EXISTE ALGUNA FORMA DE BLOQUEAR LA BASE DE DATOS
    ES DECIR QUE SÓLO SE PUEDA VER LA INFORMACION DE LA TABLA
    SIN PODER EDITARLA, SALUDOS ESCELENTE PAGINA

    • Hola Pedro,
      ¿Cómo estás¿, Para estables la base de datos como solo lectura puede modificar el archivo de configuración postgresql.conf y modificar el valor default_transaction_read_only. The default is off (read/write). Saludos!

  6. Hola Aurelio, te agradezco infinitamente el articulo, después de una tarde de quebrarme la cabeza todo quedó perfecto siguiendo las sencillas instrucciones.

    Si alguna vez vienes por el Paralelo 28 en BCS Mx, te invito una cerveza.

    Saludos!

  7. Buenas tardes!
    Hola Aurelio, gracias por el tutorial! Estoy buscando la manera de vincular una tabla excel con una capa .shp, de manera que si se modifica la tabla excel se modifique también, la tabla de atributos de la capa, es decir sea dinámico el proceso. Es posible hacer esto? Desde Acces se que es posible mediante PostGis.
    Gracias, por el gran aporte que hacéis en materia de GIS!

    Saludos

    • Buenos días Mariano, Gracias por tu comentario! Para hacer dinámico el proceso necesitas PostGIS y utilizar los triggers para actualizar automáticamente los campos. Posteriormente uniendo la tabla con la capa puedes actualizar los campos del shapefile. Pero no se nos ocurren otras formas de hacerlo. Saludos!

  8. consulta tengo un error con la modificación de tabla cuando le cambio el nombre y le mando guardar me dice que el archivo dbf no se puede modificar y que cree otro lo creo pero no me muestra las tablas tal cual como la utilizo.

    • Hola Andrea, Muchas gracias por comentar. Pues no es necesario instalar ningún plugin. Puesto que este algoritmo se encuentra en el núcleo de QGIS. Se encuentras en Geoalgoritmos de QGIS (105 algoritmos)> Herramientas de tabla vectorial > Rehacer campos. Por si acaso debes utilizar la versión 2.16 o superior. Un saludo

  9. HOLA!!!!
    Yo estoy trabajando con QGIS 2.14.3-Essen y lo que quiero es hacer la union de varias tabla, por ejemplo tengo TIPO:hidrantes, TIPO: valvulas, TIPO: tapones. Al hacerlo el campo TIPO me queda en blanco, yo supongo que es porque las diferentes tablas tienen distintos digitos de presicion.
    Probe seguir los pasos de este tutorial pero no me resulta.
    Habra algun otra forma??
    Desde ya gracias…
    Saludos!!

  10. Hola Aurelio.
    Excelente noticia, sobre todo la modificación del tipo de campo.
    Aunque un poco arriesgada vista desde los principios del diseño de BD…, pero muy práctica realmente.
    Saludos desde Costa Rica.

    • Hola José Oberto, Efectivamente, se puede realizar también con el complemento Table Manager, pero es un complemento obsoleto. Currently, its development is depreciated, so please consider using the Refactor Field algorithm from the Pocessing panel (advanced interface).Saludos!

Los comentarios están cerrados.