Löschen Sie Zeilen, in denen die Zelle einer bestimmten Spalte leer ist

8

Gibt es eine Möglichkeit, alle Zeilen in QGIS zu löschen, in denen die Zelle einer bestimmten Spalte in der Attributtabelle leer ist? zB Zeile drei in der folgenden Tabelle. Ich muss dies für einen großen Datensatz mit ungefähr 180.000 Zeilen tun.

| ID  | 2LE  | CHECK |
|-----|------|-------|
| 1   | PT   | FALSE |
| 2   | PT   | TRUE  |
| 3   | NULL | TRUE  |
| 4   | AT   | FALSE |
Stücke
quelle
Dies könnte außerhalb von QGIS einfacher sein. In was sind die Daten gespeichert?
jpmc26

Antworten:

7

Sie können auch Ihre Ebene filtern.

Klicken Sie mit der rechten Maustaste auf die Ebene, wählen Sie sie aus Filterund verwenden Sie sie "2LE" IS NOT NULL. Anschließend können Sie mit der rechten Maustaste und eine Save Asweitere Vektorebene klicken .

Stefan
quelle
7

In der Python-Konsole können Sie Folgendes verwenden . Wählen Sie Ihre Ebene aus und verwenden Sie Folgendes:

layer = iface.activeLayer()
with edit(layer):
    listOfIds = [feat.id() for feat in layer.getFeatures() if feat['fieldName'] == NULL]
    layer.deleteFeatures(listOfIds)
Joseph
quelle
5

Sie können eine virtuelle Ebene verwenden, um den ursprünglichen Datensatz beizubehalten und einen neuen zu erstellen.

Wenn keine Geometrie vorhanden ist, müssen Sie im Fenster "Virtuelle Ebene erstellen" die Option "Keine Geometrie" aktivieren.

Es gibt verschiedene Möglichkeiten, nach NULLoder zu suchen. Siehe auch SQLite auswählen, wo leer? - beim Stapelüberlauf

Beispielabfragen. Ich war neugierig und habe sie alle mit Erfolg getestet (keine Fehler):

SELECT * FROM your_table WHERE "2LE" IS NOT NULL

>

SELECT * FROM your_table WHERE "2LE" != 'NULL'  #if `NULL` is a string:

>

SELECT * FROM your_table WHERE ifnull("2LE", '') != ''

>

SELECT * FROM your_table WHERE ifnull(length("2LE"), 0) != 0

>

SELECT * FROM your_table WHERE coalesce("2LE", '') != ''

Sie können Save Asdie Abfrage (virtuelle Ebene) in eine neue Vektordatei (mit der rechten Maustaste) klicken.

Stefan
quelle
5

Verwenden Sie in der Attributtabelle "Nach Ausdruck auswählen" (nicht "Filter") und geben Sie den Ausdruck so ein, dass er mit den Features übereinstimmt, die gelöscht werden sollen "2LE" IS NULL. Dann sollten Sie alle diese Funktionen auswählen und sie sollten gelb angezeigt werden.

Drücken Sie dann bei aktivierter Bearbeitung (umgeschaltet durch das Stiftsymbol in der Symbolleiste oder an einer anderen Stelle) Strg-X oder verwenden Sie "Schnittfunktionen" im Menü "Bearbeiten". Die ausgewählten Funktionen sollten verschwinden.

Sie können dann die Bearbeitung deaktivieren (Stiftsymbol) und werden aufgefordert, die Änderungen zu speichern, wenn Sie möchten. Dadurch werden die Originaldaten auf der Festplatte oder in der Datenbank überschrieben.

Spacedman
quelle