Saltar al contenido

¿Hacer un campo de fecha y hora actualizado automáticamente en QGIS?

No dejes de divulgar nuestro espacio y códigos en tus redes, necesitamos de tu ayuda para hacer crecer nuestra comunidad.

Solución:

Puede usar el siguiente código que conecta el attributeValueChanged evento a una función que podemos definir que inserta los resultados de la $now expresión. Resalta tu capa y copia/pega lo siguiente en el Consola Python:

layer = qgis.utils.iface.activeLayer()

def update():
    field = layer.fieldNameIndex('mod')
    e = QgsExpression( " $now " )
    e.prepare( layer.pendingFields() )
    for feat in layer.selectedFeatures():
        feat[field] = e.evaluate( feat )
        layer.updateFeature( feat )

layer.attributeValueChanged.connect(update)

Seleccione la función haciendo clic en el número de fila (que se muestra en el cuadro rojo de la imagen) o desde el lienzo del mapa y edite ninguna attribute para esa característica. los attribute en tus mod el campo debe actualizarse:

Resultado


Nota: usé un string campo en lugar de fecha para obtener la hora, de lo contrario, el campo de fecha solo registra AAAA-MM-DD.

Me topé con esta pregunta y respuesta mientras buscaba una forma de marcar los cambios de fecha/hora que estaba haciendo en los registros usando un complemento. Coloqué una versión ligeramente modificada del código en el complemento para actualizar automáticamente la fecha/hora en los registros que cambié:

""" Prepare Change Date/Time Stamp"""
e = QgsExpression( " $now " )
cDate = e.evaluate()

"""" Identify column(s) to change and new value(s) to assign"""
attrs =  10 : newStat, 20 : cDate 

""" Make record change and capture date/time of change'''
layer.dataProvider().changeAttributeValues( fid : attrs )

Sección de Reseñas y Valoraciones

Si estás de acuerdo, eres capaz de dejar un enunciado acerca de qué le añadirías a este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *