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

Interfaçage autre langage Python Discussion :

PYTHON ET QGIS


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 34
    Points : 14
    Points
    14
    Par défaut PYTHON ET QGIS
    Bonjour,

    Dsl si je ne post pas au bon endroit.

    Ma demande concerne l'utilisation de Python avec Qgis.

    En effet j'aimerais exporter un atlas automatiquement. L'atlas est défini dans mon projet qgis.

    J'ai le script 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    import os
    from qgis.core import QgsProject
    from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge
    from qgis.core.contextmanagers import qgisapp
    from PyQt4.QtCore import QFileInfo
    import time
     
    ########CONFIGURATION###########
    # Filtre
    filtreOp = 'id > 300'
    repertoireTravail = 'C:/GEOLIS_2/'
    ##############################
     
     
     
    project_path =  repertoireTravail + '/atlas.qgs'
    canvas = QgsMapCanvas(None)  # will reparent it to widget via layout
     
    # Load our project
    bridge = QgsLayerTreeMapCanvasBridge(QgsProject.instance().layerTreeRoot(), canvas)
    QgsProject.instance().read(QFileInfo(project_path))
     
    # Load the composer
    composerView = qgis.utils.iface.activeComposers()[0]
    composition = composerView.composition()
    atlas = composition.atlasComposition()
    composition.setAtlasMode(QgsComposition.ExportAtlas)
    atlas.beginRender()
    date=time.strftime("%Y")+"_"+time.strftime("%m")+"_"+time.strftime("%d")
     
     
    for i in range(0,atlas.numFeatures()):
        atlas.prepareForFeature(i)
        composition.exportAsPDF('C:/GEOLIS_2/export_carte'+'_'+(date)+str(i)+'_carte.pdf')
    atlas.endRender()
     
    print "traitement ok"
    Par contre il faut que je puisse mettre l'identifiant de la couche du canevas de l'atlas dans le nom de sortie en pdf et là je bloque.

    Si quelqu'un connait la solution, je suis preneur.

    Mickaël

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    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 : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Bonjour,

    Vous voulez exporter un format qgs vers pdf ? Avez-vous lu cette question ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Merci pour cette piste je vais regarder ce que je peux faire avec ce code. Je suis débutant en Python et c'est pas dis que j'arrive à le faire fonctionner.
    Merci pour votre aide précieuse.
    Je ne manquerai pas de revenir vers vous pour vous tenir au courant.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Là je suis perdu pas moyen d'avancer !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2017
    Messages : 34
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Après des heures de recherches, d'essais, de plantages, de messages d'erreur incompressibles, j'ai réussi à faire quelques choses pour presque répondre à mes attentes !

    Avec le code suivant dans la console python de Qgis, j'arrive à faire l'export de mon atlas, cool :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    import os
    from qgis.core import QgsProject
    from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge
    from qgis.core.contextmanagers import qgisapp
    from PyQt4.QtCore import QFileInfo
    import time
     
    ########CONFIGURATION###########
    # Filtre
    filtreOp = 'id > 300'
    repertoireTravail = 'W:/PARTAGE_FDCM/GEOLIS/qgis'
    ##############################
     
     
     
    project_path =  repertoireTravail + '/generation_atlas.qgs'
    canvas = QgsMapCanvas(None)  # will reparent it to widget via layout
     
    # Load our project
    bridge = QgsLayerTreeMapCanvasBridge(QgsProject.instance().layerTreeRoot(), canvas)
    QgsProject.instance().read(QFileInfo(project_path))
     
    # Load the composer
    composerView = qgis.utils.iface.activeComposers()[0]
    composition = composerView.composition()
    atlas = composition.atlasComposition()
    composition.setAtlasMode(QgsComposition.ExportAtlas)
    atlas.beginRender()
     
    date=time.strftime("%Y")+"_"+time.strftime("%m")+"_"+time.strftime("%d")
    essai=atlas.coverageLayer().name()
    print ("essai")
    MyLayer=atlas.coverageLayer()
    iter=MyLayer.getFeatures()
     
    for feature in iter :
        atlas.prepareForFeature(feature)
        mat=feature['matricule']
        composition.exportAsPDF('W:/PARTAGE_FDCM\GEOLIS\ATLAS_MATRICULE/'+(mat)+'_'+(date)+'_carte.pdf')
     
     
    atlas.endRender()
     
    os._exit(0)
    J'ai enregistré ce code dans un fichier .py.
    Pour lancer automatiquement tout ça j'ai fait un fichier .bat qui lance QGIS et lance la console python avec le code précedent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set QGIS="C:\Program Files\QGIS 2.18\bin\qgis-ltr.bat"
    %QGIS% --nologo --code W:\PARTAGE_FDCM\GEOLIS\qgis\automatisation\export_atlas.py
    Voilà où j'en suis.

    Mon idée de départ été d’exécuter le code python sans ouvrir graphiquement Qgis mais là je bloque je trouve pas de solution, alors s'il vous avez une solution ou une méthode pour me guider je suis preneur.
    Merci à tous.

  6. #6
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    Sans prétention de dire que ça vous donner la solution, est-ce que ces pages internet vous parlent/aident?
    https://georezo.net/forum/viewtopic.php?id=111123
    https://gis.stackexchange.com/questi...t-command-line
    Je ne connais que trop peu QGIS pour l'avoir utilisé il y a 2-3 ans en Master d'économie... dsl.

Discussions similaires

  1. [Python 3.X] Débutant - Afficher 2 lignes de resultat , source : fichier (tfw) --> Python pr QGIS
    Par pierot411 dans le forum Général Python
    Réponses: 3
    Dernier message: 27/11/2015, 14h27
  2. python,qgis 2.0 et postgresql: ajouter une vue
    Par noramokh dans le forum SIG : Système d'information Géographique
    Réponses: 4
    Dernier message: 13/07/2014, 13h56
  3. [QtGui] python: de tkinter(Arcgis 10.1) vers PYQT (Qgis 2.0)
    Par noramokh dans le forum PyQt
    Réponses: 5
    Dernier message: 18/06/2014, 12h52
  4. passer d'un script python à un plugin en QGIS
    Par anasstopog dans le forum Général Python
    Réponses: 3
    Dernier message: 30/06/2013, 11h47
  5. Réponses: 5
    Dernier message: 06/11/2008, 16h21

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