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
    Candidat au Club
    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 confirmé
    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
    Candidat au Club
    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
    Candidat au Club
    Là je suis perdu pas moyen d'avancer !

  5. #5
    Candidat au Club
    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
    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.