Más

Filtro PyQGIS usando la columna de fecha


En la consola Python de QGIS, puedo ejecutar lo siguiente para extraer el número de semana de la columna de fecha. ¿Cómo puedo usar lo mismo en qgsExpression como cláusula where? Cualquier otra opción es bienvenida siempre que utilice PyQGIS. Tengo la intención de filtrar una capa vectorial en QGIS para devolver registros que coincidan con una semana en particular.

para x en capas: si x.name () == "test": idx = x.fieldNameIndex ("date_from") valores = x.uniqueValues ​​(idx) b = valores [0] print b.weekNumber () b.weekNumber () [0]

Esta expresión me da una indicación del número de la semana. ¿Puedo usar QgsExpression como
expr = QgsExpression ("" date_from.weekNumber () "= 99")?


Puede utilizar lo siguiente comoQgsExpressionpara comprobar si un número de semana es, por ejemplo, 39:

expr = QgsExpression ('semana ("fecha_desde") = 39')

A modo de ejemplo, el siguiente código usa la expresión anterior para encontrar características que tienen un número de semana de 39. Si lo hace, se imprimirá su número de fila que luego podría usarse para filtrar:

capas = QgsMapLayerRegistry.instance (). mapLayers (). valores () para x en capas: si x.name () == "prueba": idx = x.fieldNameIndex ("date_from") valores = x.uniqueValues ​​(idx) expr = QgsExpression ('week ("date_from") = 39') # Establezca el número de semana en 39 para f en x.getFeatures (): f [idx] = expr.evaluate (f) if f [idx] == 1: # Utiliza valores booleanos (0 = Falso; 1 = Verdadero) imprime "número de fila:", f.id ()

Nota lafecha deEl campo que usé fue un Tipo de fecha campo, por lo que el formato era AAAA-MM-DD.

¡Espero que esto ayude!


Ver el vídeo: Excel AutoFilter for Date Range Two Ways (Septiembre 2021).