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

PyQt Python Discussion :

python qgis 2.4: afficher une vue avec symbologie [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut python qgis 2.4: afficher une vue avec symbologie
    bonjour,

    j'ai réussi à afficher une vue crée sur postgresql à partir de qgis en utilisant code python:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    uri = QgsDataSourceURI()
    uri.setConnection("localhost", "5432", "stat", "postgres", "admin")
    uri.setDataSource("public", "view2", "the_geom", ' ',"gid")
    uri.uri()
    qgis.utils.iface.addVectorLayer(uri.uri(), "allcountries", "postgres")
    maintenant je veux afficher cette vue avec une symbologie (classes), j'ai cherché beaucoup mais c'était pas claire.
    exemple: j'ai tenté de le faire avec :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    myVectorLayer = QgsVectorLayer("polygon", "mypoly", 'ogr')
    myTargetField = 'code'
    myRangeList = []
    myOpacity = 1
    # Make our first symbol and range...
    myMin = 0.0
    myMax = 50.0
    myLabel = 'Group 1'
    myColour = QtGui.QColor('#ffee00')
    mySymbol1 = QgsSymbolV2.defaultSymbol(myVectorLayer.geometryType())
    mySymbol1.setColor(myColour)
    mySymbol1.setAlpha(myOpacity)
    myRange1 = QgsRendererRangeV2(myMin,myMax,mySymbol1,myLabel)
    myRangeList.append(myRange1)
    #now make another symbol and range...
    myMin = 50.1
    myMax = 100
    myLabel = 'Group 2'
    myColour = QtGui.QColor('#00eeff')
    mySymbol2 = QgsSymbolV2.defaultSymbol(
               myVectorLayer.geometryType())
    mySymbol2.setColor(myColour)
    mySymbol2.setAlpha(myOpacity)
    myRange2 = QgsRendererRangeV2(myMin,myMax,mySymbol2,myLabel)
    myRangeList.append(myRange2)
    myRenderer = QgsGraduatedSymbolRendererV2('', myRangeList)
    myRenderer.setMode(QgsGraduatedSymbolRendererV2.EqualInterval)
    myRenderer.setClassAttribute(myTargetField)
     
    myVectorLayer.setRendererV2(myRenderer)
    QgsMapLayerRegistry.instance().addMapLayer(myVectorLayer)
    ça donne une erreur: "mySymbol1.setColor(myColour)
    AttributeError: 'NoneType' object has no attribute 'setColor'"

    merci à votre aide ou indication.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    bonjour,

    ça donne une erreur: "mySymbol1.setColor(myColour)
    AttributeError: 'NoneType' object has no attribute 'setColor'"

    merci à votre aide ou indication.
    Bonjour,

    En fouillant avec j'ai touvé ça : http://gis.stackexchange.com/questio...is/77061#77061

    @+.

  3. #3
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par tarball69 Voir le message
    Bonjour,

    En fouillant avec j'ai touvé ça : http://gis.stackexchange.com/questio...is/77061#77061

    @+.
    cet exemple pour la symbologie de type "line", or dans mon cas "polygon" et mon code est différent (définition des variables, instructions).

    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    cet exemple pour la symbologie de type "line", or dans mon cas "polygon" et mon code est différent (définition des variables, instructions).

    merci
    Il me semblait que cette portion de code était susceptible de résoudre votre erreur : "mySymbol1.setColor(myColour)
    AttributeError: 'NoneType' object has no attribute 'setColor'"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def validatedDefaultSymbol(geometryType):
        symbol = QgsSymbolV2.defaultSymbol(geometryType)
        if symbol is None:
            if geometryType == QGis.Point:
                symbol = QgsMarkerSymbolV2()
            elif geometryType == QGis.Line:
                symbol =  QgsLineSymbolV2()
            elif geometryType == QGis.Polygon:
                symbol = QgsFillSymbolV2()
        return symbol
    @+.

  5. #5
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    salut,

    j'ai résolu mon problème, l'erreur était dans une instruction où il fallait bien identifier la source de données.
    ce lien m'aide: http://docs.qgis.org/testing/en/docs...loadlayer.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myVectorLayer = QgsVectorLayer(uri.uri(), "allcountries", 'postgres')
    après ça tout fonctionne bien

    merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    salut,

    j'ai résolu mon problème, l'erreur était dans une instruction où il fallait bien identifier la source de données.
    ce lien m'aide: http://docs.qgis.org/testing/en/docs...loadlayer.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myVectorLayer = QgsVectorLayer(uri.uri(), "allcountries", 'postgres')
    après ça tout fonctionne bien

    merci
    Bravo.

    @+.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2010] Afficher une vue avec deux listes (relation n..n)
    Par number6six dans le forum SharePoint
    Réponses: 3
    Dernier message: 17/07/2014, 14h35
  2. Afficher list dans une vue avec foreach
    Par axwel13 dans le forum ASP.NET MVC
    Réponses: 5
    Dernier message: 05/04/2013, 11h39
  3. Afficher une image avec swing
    Par arnonote dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 07/08/2004, 12h10
  4. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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