Supprimer les lignes dans lesquelles la cellule d'une colonne spécifique est vide

8

Existe-t-il un moyen de supprimer toutes les lignes de QGIS dans lesquelles la cellule d'une colonne spécifique de la table attributaire est vide? Par exemple, ligne trois dans le tableau ci-dessous. Je dois le faire pour un grand ensemble de données avec environ 180 000 lignes.

| ID  | 2LE  | CHECK |
|-----|------|-------|
| 1   | PT   | FALSE |
| 2   | PT   | TRUE  |
| 3   | NULL | TRUE  |
| 4   | AT   | FALSE |
Stücke
la source
Cela pourrait être plus facile en dehors de QGIS. Dans quelles données sont stockées?
jpmc26

Réponses:

7

Vous pouvez également filtrer votre couche.

Faites un clic droit sur le calque choisissez Filteret utilisez "2LE" IS NOT NULL. Ensuite, vous pouvez cliquer avec le bouton droit et Save Asun autre calque vectoriel.

Stefan
la source
7

Vous pouvez utiliser les éléments suivants dans la console Python . Sélectionnez votre calque et utilisez quelque chose comme:

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

Vous pouvez utiliser une couche virtuelle pour conserver le jeu de données d'origine et en créer un nouveau.

S'il n'y a pas de géométrie, vous devez cocher "Pas de géométrie" dans la fenêtre "Créer une couche virtuelle".

Il existe différentes façons de vérifier NULLou ``. Voir aussi SQLite select where empty? - sur Stack Overflow

Exemples de requêtes. J'étais curieux et les ai tous testés avec succès (pas d'erreur):

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", '') != ''

Vous pouvez Save As(clic droit) la requête (couche virtuelle) vers un nouveau fichier vectoriel.

Stefan
la source
5

Dans le tableau d'attributs, utilisez "Sélectionner par expression" (pas Filtre) et entrez l'expression pour correspondre aux fonctionnalités que vous souhaitez supprimer - "2LE" IS NULLsemble le faire. Ensuite, vous devez sélectionner toutes ces fonctionnalités et elles doivent apparaître en jaune.

Ensuite, avec l'édition activée (basculée par l'icône de crayon dans la barre d'outils ou ailleurs), appuyez sur Ctrl-X ou utilisez "Couper les fonctionnalités" dans le menu "Modifier". Les fonctionnalités sélectionnées devraient disparaître.

Vous pouvez ensuite désactiver l'édition (icône de crayon) et vous serez invité à enregistrer les modifications si vous le souhaitez, ce qui écrasera les données d'origine sur le disque ou la base de données.

Spacedman
la source