IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

PyQgis - Vérifier si une couche crée lors du script est vide


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur Fibre Optique - Déploiement FTTH
    Inscrit en
    Août 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Fibre Optique - Déploiement FTTH

    Informations forums :
    Inscription : Août 2022
    Messages : 10
    Par défaut PyQgis - Vérifier si une couche crée lors du script est vide
    Bonjour à tous

    Je souhaite modifier un script Qgis écrit en Python
    (version 2.14 de Qgis)

    Actuellement, le script PyQgis renvoie un tableau via une requête PostgreSQL,
    puis le tableau est intégré quoi qu'il arrive sur le projet.

    Je souhaite :
    - Vérifier si la requête renvoie un résultat non NULL
    - Si la requête donne un résultat non NULL, créer la couche et l'intégrer dans mon projet

    J'utilise comme base le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    requete1 ="(SELECT [...])"
     
     
    uri.setDataSource("",
                      requete1,
                      geom,
                      "",
                      "code_st")
     
     
    vlayer = QgsVectorLayer(uri.uri(),"couche1","postgres")
     
     
    if not vlayer.isValid:
        print('La couche n est pas valide')
    else:
         if requete1[0][1] is None:
            print('La requete ne renvoie aucun resultat')
         else: 
            QgsMapLayerRegistry.instance().addMapLayer(vlayer)
            print('Couche ajoutee au projet')
    L'erreur suivante est renvoyée : IndexError: string index out of range
    Elle provient de la ligne => Le tableau requete1 est vide donc la première ligne du tableau n'existe pas.


    Je ne sais pas comment procéder pour avancer
    merci d'avance pour vos réponses

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 069
    Par défaut
    Bonjour,

    J'ai lu en diagonale, mais il est certains que si le tableau est vide, impossible d'accéder à un quelconque index.

    Le plus simple est de faire un test préalable avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not requete1 or requete1[0][1] is None:
        # suite

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur Fibre Optique - Déploiement FTTH
    Inscrit en
    Août 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Fibre Optique - Déploiement FTTH

    Informations forums :
    Inscription : Août 2022
    Messages : 10
    Par défaut
    Bonjour et merci

    J'ai tenté en modifiant comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if not vlayer.isValid:
        print('La couche n est pas valide')
    else:
        if requete1 is None:
            print('La requete ne renvoie aucun resultat')
        else:
            QgsMapLayerRegistry.instance().addMapLayer(vlayer)
            print('Couche ajoutee au projet')
    Seulement,
    malgré que la table soit vide, la couche est toujours intégrée au projet.

    A mon avis, il doit exister une manière de vérifier si un tableau est vide/Null
    tel qu'il ne contient aucuns éléments ?

    Bonne réception

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 069
    Par défaut
    Je ne vois pas le rapport avec ce que j'écris...

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/07/2013, 00h48
  2. Appeler une macro VB lors du script de chargement
    Par Siefch1 dans le forum QlikView
    Réponses: 3
    Dernier message: 26/03/2013, 11h20
  3. Réponses: 1
    Dernier message: 19/02/2009, 11h15
  4. Vérifier qu'une base existe avec un script unix
    Par ibhow dans le forum Débuter
    Réponses: 1
    Dernier message: 23/09/2008, 17h59
  5. Comment modifier par programmation une form crée lors de l'execution
    Par Fab.asia dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/07/2007, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo