Mehr

PyQGIS-Filter mit Datumsspalte


In der QGIS Python-Konsole kann ich Folgendes ausführen, um die Wochennummer aus der Datumsspalte zu extrahieren. Wie kann ich dasselbe in qgsExpression als Where-Klausel verwenden? Jede andere Option ist willkommen, solange sie PyQGIS verwendet. Ich beabsichtige, eine Vektorebene in QGIS zu filtern, um Datensätze zurückzugeben, die einer bestimmten Woche entsprechen.

für x in Layern: if x.name() == "test": idx = x.fieldNameIndex("date_from") values ​​= x.uniqueValues( idx ) b =values[0] print b.weekNumber() b.weekNumber ()[0]

Dieser Ausdruck gibt mir einen Hinweis auf die Wochennummer. Kann ich QgsExpression verwenden wie
expr = QgsExpression( ""date_from.weekNumber()" = 99" )?


Sie könnten Folgendes verwenden alsQgsAusdruckum zu prüfen, ob eine Wochennummer beispielsweise 39 ist:

expr = QgsExpression( 'week("date_from") = 39' )

Als Beispiel verwendet der folgende Code den obigen Ausdruck, um Merkmale zu finden, die eine Wochennummer von 39 haben. Wenn dies der Fall ist, wird deren Zeilennummer ausgegeben, die dann zum Filtern verwendet werden kann:

layer = QgsMapLayerRegistry.instance().mapLayers().values() für x in Layern: if x.name() == "test": idx = x.fieldNameIndex("date_from") values ​​= x.uniqueValues( idx ) expr = QgsExpression( ' week("date_from") = 39 ' ) # Setze die Wochennummer auf 39 für f in x.getFeatures(): f[idx] = expr.evaluate( f ) if f[idx] == 1: # Verwendet Boolesche Werte (0 = False; 1 = True) print "row number:", f.id()

Beachten Sie dasstammen ausFeld, das ich verwendet habe, war a Datumstyp Feld, daher war das Format JJJJ-MM-TT.

Hoffe das hilft!


Schau das Video: Python in QGIS. Lesson 0. Vector Layer; Selection. (Oktober 2021).