[FOSSGIS-Talk] PyQGIS selectByExpression macht Probleme

Thomas B rdbath.regiodata at gmail.com
Di Okt 4 19:33:59 CEST 2022


Hallo Christiane,
in der Expression muss der Vergleichs-String in einfachen Hochkommata
stehen, also z.B. 'Stadt'.
In deinem Beispiel wäre die Expression
BEZ=Stadt
müsste aber
"BEZ" = 'Stadt'
sein. Folgende Beispiele funktionieren mit den Daten:


municip = iface.activeLayer()

qid_key = QInputDialog()
title = "Specify a primary key"
label = "Please enter the name of a field with unique values:"
mode = QLineEdit.Normal
default = "<field name>"
field_key, ok = QInputDialog.getText(qid_key, title, label, mode, default)

key = '09462000'
expr_key = '"{0}" = \'{1}\''.format(field_key, key)
print(expr_key)
municip.selectByExpression(expr_key)


######################## Nr 2 BEZ

municip = iface.activeLayer()

qid_key = QInputDialog()
title = "Specify a primary key"
label = "Please enter the name of a field with unique values:"
mode = QLineEdit.Normal
default = "<field name>"
field_key, ok = QInputDialog.getText(qid_key, title, label, mode, default)

key = 'Stadt'
expr_key = '"{0}" = \'{1}\''.format(field_key, key)
print(expr_key)
municip.selectByExpression(expr_key)


Perspektivisch würde ich aber dazu raten den Feldnamen nicht vom User von
Hand eingeben zu lassen, sondern die verfügbaren Felder als Dropdown aus
dem Layer erzeugen lassen.

VG
Thomas


Am Di., 4. Okt. 2022 um 17:18 Uhr schrieb Chr. Enderle via
FOSSGIS-Talk-Liste <fossgis-talk-liste at fossgis.de>:

>
>
>
> ---------- Forwarded message ----------
> From: "Chr. Enderle" <enderlec at staff.uni-marburg.de>
> To: ML FOSSGIS <fossgis-talk-liste at fossgis.de>
> Cc:
> Bcc:
> Date: Tue, 4 Oct 2022 17:17:29 +0200
> Subject: PyQGIS selectByExpression macht Probleme
> Hallo Liste,
>
> ich möchte in QGIS 3.22 per Dialogfeld ein Attribut anfordern und
> anschließend ein Objekt anhand eines Attributwertes auswählen. Dazu
> verwende ich Gemeindedaten vom BKG (siehe Anhang) und folgenden Code,
> den ich aus dem Python-Editor heraus laufen lasse.
>
> Codebeispiel 1. Im Eingabefeld muss AGS eingegeben werden:
>
> municip = iface.activeLayer()
>
> qid_key = QInputDialog()
> title = "Specify a primary key"
> label = "Please enter the name of a field with unique values:"
> mode = QLineEdit.Normal
> default = "<field name>"
> field_key, ok = QInputDialog.getText(qid_key, title, label, mode, default)
>
> key = '09462000'
>
> municip.selectByExpression(field_key + '=' + key)
>
> Wenn die Daten als Shapefile vorliegen, wird korrekterweise Bayreuth
> ausgewählt. Wenn der Code auf die Daten im Geopackage-Format angewendet
> wird, wird nichts ausgewählt.
>
> Codebeispiel 2. Im Eingabefeld muss BEZ eingegeben werden:
>
> municip = iface.activeLayer()
>
> qid_key = QInputDialog()
> title = "Specify a primary key"
> label = "Please enter the name of a field with unique values:"
> mode = QLineEdit.Normal
> default = "<field name>"
> field_key, ok = QInputDialog.getText(qid_key, title, label, mode, default)
>
> key = 'Stadt'
>
> municip.selectByExpression(field_key + '=' + key)
>
> Weder beim Shapefile noch beim Geopackage werden Objekte ausgewählt,
> obwohl der Attributwert "Stadt" in den Daten unter BEZ vorkommt.
>
> Kann mir jemand erklären, woran das liegen könnte? Bin halt noch
> Anfänger in PyQGIS.
>
> Vielen Dank schon mal im voraus!
>
> Viele Grüße,
>
> Christiane
>
> --
> Christiane Enderle, MSc
> Philipps-Universität Marburg
> Fachbereich Geographie
> Deutschhausstr. 10
> 35037 Marburg
> Tel. +49 (0)6421-2822179
> Fax +49 (0)6421-2828950
> -------------- nächster Teil --------------
> Ein Dateianhang mit Binärdaten wurde abgetrennt...
> Dateiname   : Auswahl_Gemeinden.gpkg
> Dateityp    : application/octet-stream
> Dateigröße  : 565248 bytes
> Beschreibung: nicht verfügbar
> URL         : <
> http://lists.fossgis.de/pipermail/fossgis-talk-liste/attachments/20221004/53f908b5/attachment.obj
> >
> -------------- nächster Teil --------------
> Ein Dateianhang mit Binärdaten wurde abgetrennt...
> Dateiname   : BKG_Gemeinden.zip
> Dateityp    : application/x-zip-compressed
> Dateigröße  : 232270 bytes
> Beschreibung: nicht verfügbar
> URL         : <
> http://lists.fossgis.de/pipermail/fossgis-talk-liste/attachments/20221004/53f908b5/attachment.bin
> >
>
>
>
> ---------- Forwarded message ----------
> From: "Chr. Enderle via FOSSGIS-Talk-Liste" <fossgis-talk-liste at fossgis.de
> >
> To: ML FOSSGIS <fossgis-talk-liste at fossgis.de>
> Cc:
> Bcc:
> Date: Tue, 4 Oct 2022 17:17:29 +0200
> Subject: [FOSSGIS-Talk] PyQGIS selectByExpression macht Probleme
> --
> ....................................................................
> FOSSGIS Veranstaltungen
> https://www.fossgis.de/news/fossgis-events/
>
> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
> GIS-Bereich und Freier Geodaten!
> https://www.fossgis.de/             https://twitter.com/FOSSGIS_Verein
>
> ____________________________________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste