Vairāk

PyQGIS filtrs, izmantojot datuma kolonnu


QGIS python konsolē es varu palaist šādi, lai no datuma slejas izvilktu nedēļas numuru. Kā to pašu lietot qgsExpression kā klauzulu kur? Jebkura cita iespēja ir apsveicama, ja vien tiek izmantota PyQGIS. Es plānoju filtrēt vektoru slāni QGIS, lai atgrieztu ierakstus, kas atbilst noteiktai nedēļai.

x slāņos: ja x.name () == "test": idx = x.fieldNameIndex ("date_from") vērtības = x.unqueValues ​​(idx) b = vērtības [0] drukāt b.weekNumber () b.weekNumber () [0]

Šis izteiciens man norāda nedēļas numuru. Vai es varu izmantot QgsExpression like
izteiksme = QgsExpression ("" date_from.weekNumber () "= 99")?


Jūs varētu izmantot sekojošo kāQgsExpressionlai pārbaudītu, vai nedēļas numurs ir, piemēram, 39:

izteiksme = QgsExpression ('nedēļa ("date_from") = 39')

Piemēram, šāds kods izmanto iepriekš minēto izteiksmi, lai atrastu līdzekļus, kuru nedēļas skaitlis ir 39. Ja tiek, tad tiek izdrukāts rindas numurs, ko pēc tam var izmantot filtrēšanai:

slāņi = QgsMapLayerRegistry.instance (). mapLayers (). vērtības () x slāņos: ja x.name () == "test": idx = x.fieldNameIndex ("date_from") vērtības = x.uniqueValues ​​(idx) expr = QgsExpression ('nedēļa ("date_from") = 39') # Iestatiet f skaitlim x.getFeatures () nedēļas skaitli uz 39, ja f [idx] == 1: # Izmanto Būla vērtības (0 = False; 1 = True) print "rindas numurs:", f.id ()

Piezīme:datums nolauks, kuru izmantoju, bija a Datuma veids lauks, tāpēc formāts bija GGGG-MM-DD.

Ceru tas palīdzēs!


Skatīties video: QGIS Python PyQGIS - Access vector layer attributes (Oktobris 2021).