¿Cómo establecer un valor predeterminado para los atributos en shapefiles?

8

En QGIS 2.14.6 me gustaría definir un valor predeterminado para un atributo en un archivo de forma (o capa espacial también) que se aplica si el usuario no establece explícitamente el valor.

¿Hay alguna manera de lograr esto usando herramientas / configuraciones estándar (sin python)?

Jochen Schwarze
fuente
1
Pero aparte de que estos campos virtuales no son atributos 'reales' de mi fuente de datos (hasta donde yo sé, solo están almacenados con el proyecto), ¿cómo le diría a un campo virtual que reaccione a las ediciones de los usuarios para establecer su valor, digamos 3.1415926, si el usuario no establece un valor de atributos? ¿Y puede tal convertirse en atributos reales? Preguntas sobre preguntas ... Además, 'sin python' no era obligatorio, estaría bien incluso si pudiera lograr esto con 'un poco de python' ;-) (¿Y dónde está el comentario de @ Joseph ?!)
Jochen Schwarze
Lo sentimos, eliminé mi comentario: "Puede usar campos virtuales" para proporcionar un método posible usando un complemento =)
Joseph
Marque esta pregunta, pero es un código de Python. gis.stackexchange.com/questions/192105/…
Fran Raga

Respuestas:

16

QGIS 3

Seleccione la capa en el panel de capas y haga clic izquierdo. Seleccionar propiedades. Seleccione el "Formulario de atributos" como se muestra a continuación. Seleccione los campos de la lista "Widgets disponibles" como se muestra. Proporcione una expresión para el valor predeterminado en el cuadro de diálogo "Valores predeterminados". Si se marca "Aplicar valor predeterminado en la actualización", el valor se ajustará cada vez que se cambie la geometría de la entidad u otro atributo. Esto hace posible cosas como una marca de tiempo "last_modified" o una "área" actualizada.

Establecer valor predeterminado de campo QGIS 3.0.3


QGIS 2.18

A partir de QGIS 2.18, esto es posible sin herramientas adicionales.

Simplemente vaya a las propiedades del campo, haga clic en el botón en el campo al que le gustaría asignar un valor predeterminado e ingrese una expresión. También puede tomar la geometría como entrada.

ingrese la descripción de la imagen aquí

Nota al margen: Sé que la pregunta original está dirigida a QGIS 2.14, pero creo que esto sigue siendo de interés para los futuros lectores de esta pregunta.

Matthias Kuhn
fuente
1
Definitivamente de interés;)
Joseph
1
Acabo de echar un vistazo a la función en 2.17. Exactamente lo que he estado buscando.
Jochen Schwarze
7

Existe el complemento AutoFields que le permite crear (o modificar) campos de atributos y actualizarlos automáticamente con una expresión personalizada .

También se ha probado con varios formatos y los campos automáticos no se consideran campos virtuales (citados desde la página de inicio del complemento ):

¿Los AutoFields funcionan con el formato vectorial 'X'?

Ya hemos probado AutoFields en PostgreSQL / PostGIS, SpatiaLite , Shapefiles, WFS-T (Transactional Web Feature Service) y capas de memoria. Avíseme si utiliza AutoFields en otros formatos vectoriales.

¿Son los Autocampos como campos virtuales?

No A diferencia de los campos virtuales, AutoFields:

  • Almacenar valores calculados en los datos;
  • Son independientes de los proyectos QGIS, es decir, puede cambiar entre proyectos QGIS y AutoFields seguirá funcionando;
  • Solo funciona en capas vectoriales editables.
José
fuente
5

Como me gustaría utilizar estos valores de atributos mencionados anteriormente para controlar algunos aspectos de la simbología (tamaño del símbolo, opacidad), algunas investigaciones posteriores revelaron que con las propiedades definidas por los datos hay otra forma excelente (y flexible) de lograr esto. Una expresión (genérica)

if("attribute_name" is null, @default_value, "attribute_name")

donde @default_valuese define como una variable de proyecto, devuelve un valor predeterminado que el usuario puede definir cuando no se establece ningún valor para el atributo attribute_namey su valor es otro.

Definir variables en las propiedades del proyecto:

ingrese la descripción de la imagen aquí

Configure una expresión con propiedades definidas por datos (color rojo con opacidad definida por el usuario en este caso):

ingrese la descripción de la imagen aquí

Jochen Schwarze
fuente