Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

L'équipe GeoRezo vous présente son bilan de l'année 2019.

Vous y trouverez quelques statistiques, des explications sur les évènements marquants de l'année, et nos projets à court terme.

#1 Tue 17 March 2020 22:34

GlaDal
Membre
Date d'inscription: 30 Aug 2013
Messages: 387

QGIS: Export d'un atlas a partir des geosignets

Bonjour à tous,

Tout est dans le titre ! Ca me semble pourtant évident de pouvoir le faire.... Mais pas si sûr que ce soit faisable.

J'imagine que je ne suis pas le seul à m'être posé la question.

Si jamais quelqu'un a une piste je suis preneur.

Hors ligne

 

#2 Wed 18 March 2020 08:35

SIGEAL
Membre
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 167
Site web

Re: QGIS: Export d'un atlas a partir des geosignets

Bonjour,

Un petit peu de code Python dans la console python permet de convertir les signets du projet en une couche de polygones :

Code:

# Import des modules utilisés dans le script
from qgis.core import (
    QgsProject,
    QgsVectorLayer,
    QgsGeometry,
    QgsField
)

# Récupération de l'instance du projet
p = QgsProject.instance()
# Récupération de l'instance du gestionnaire de signets
bm = p.bookmarkManager()

# Création d'une couche temporaire (en mémoire) de polygones en Lambert 93 (EPSG:2154)
tmp = QgsVectorLayer('Polygon?crs=epsg:2154', 'bookmarks', 'memory')
tmpProvider = tmp.dataProvider()

# Activation de l'édition pour la couche temporaire
tmp.startEditing()

# Ajout d'un champ attributaire de type texte pour stocker le nom des signets
tmpProvider.addAttributes([QgsField('name', QVariant.String) ])
tmp.updateFields()

# Boucle sur les signets
feat = QgsFeature()
for b in bm.bookmarks():
    # Ajout d'une géométrie correspondant à l'emprise du signet
    feat.setGeometry(QgsGeometry.fromRect(b.extent()))
    # Ajout du nom du signet 
    feat.setAttributes([b.name()])
    # Ajout de l'entité à la couche temporaire
    tmp.addFeatures([feat])
    # Mise à jour de l'emprise de la couche
    tmp.updateExtents()

# Sauvegarde de la couche temporaire
tmp.commitChanges()

# Ajout de la couche temporaire au projet
QgsProject.instance().addMapLayer(tmp)

La couche obtenue peut être utilisée comme couverture pour générer un atlas.

Dernière modification par SIGEAL (Fri 27 March 2020 09:55)


Christophe Damour (SIGéal)

Hors ligne

 

#3 Thu 26 March 2020 23:09

Julien81
Membre
Lieu: Prissé
Date d'inscription: 14 Jan 2019
Messages: 42

Re: QGIS: Export d'un atlas a partir des geosignets

Bonsoir

tout d'abord merci pour ce petit post ; cette possibilité m'intéresse mais je ne pratique pas encore python, j'ai donc copié collé assez bêtement votre code pour tenter depuis des géosignets importés dans mon projet (depuis un xml) de les transformer un couche temporaire pour Atlas ou autre.
Cependant j'ai un message d'erreur à l'issu de l'éxécution

Code:

Processing: Traceback (most recent call last): File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\script\ScriptEditorDialog.py", line 224, in runAlgorithm exec(self.editor.text(), _locals) File "", line 14, in NameError: name 'QgsField' is not defined

Comme je comprends pas grand chose j'aurai souhaité avoir des indications complémentaires sur le fonctionnement du script pour extraire les bookmarks et générer une couche et pourquoi chez moi j'ai ce problème ? cf.capture
Je suis sur QGIS 3.10 x64 win10

Merci d'avance pour votre attention


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Fri 27 March 2020 07:57

SIGEAL
Membre
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 167
Site web

Re: QGIS: Export d'un atlas a partir des geosignets

Bonjour,

J'ai testé le script également sous QGIS 3.10 x64 win10, je ne sais pas pourquoi il fonctionne chez moi et pas chez toi...
Tu peux cependant essayer d'ajouter QgsField dans les import de modules :

Code:

from qgis.core import (
    QgsProject,
    QgsVectorLayer,
    QgsGeometry,
    QgsField
)

Christophe Damour (SIGéal)

Hors ligne

 

#5 Fri 27 March 2020 09:38

GlaDal
Membre
Date d'inscription: 30 Aug 2013
Messages: 387

Re: QGIS: Export d'un atlas a partir des geosignets

Merci SIGEAL. Je viens de tester et de mon côté ça marche ! Avec une bonne gestion des géosignets, ce méthodo peut être un bon outil de suivi.

Encore merci.

Au plaisir

Hors ligne

 

#6 Fri 27 March 2020 09:57

SIGEAL
Membre
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 167
Site web

Re: QGIS: Export d'un atlas a partir des geosignets

Ravi que ce code te soit utile.

J'ai ajouté des commentaires dans le code initial, ainsi que l'import du module QsgField.


Christophe Damour (SIGéal)

Hors ligne

 

#7 Fri 27 March 2020 12:33

Julien81
Membre
Lieu: Prissé
Date d'inscription: 14 Jan 2019
Messages: 42

Re: QGIS: Export d'un atlas a partir des geosignets

Bonjour Christophe merci pour ce retour! Désolé de revenir à la charge mais j'ai exactement cela comme install

Code:

Version de QGIS
3.10.2-A Coruña
Révision du code
d4cd3cfe5a
Compilé avec Qt
5.11.2
Utilisant Qt
5.11.2
Compilé avec GDAL/OGR
3.0.3
Utilisé avec GDAL/OGR
3.0.4
Compilé avec GEOS
3.8.0-CAPI-1.13.1
Utilisé avec GEOS
3.8.0-CAPI-1.13.1 
Compiled against SQLite
3.29.0
Running against SQLite
3.29.0
Version du client PostgreSQL
11.5
Version de SpatiaLite
4.3.0
Version de QWT
6.1.3
Version de QScintilla2
2.10.8
Compilé avec PROJ
6.3.0
Fonctionne avec PROJ
Rel. 6.3.1, February 10th, 2020
OS Version
Windows 10 (10.0)

Peut-être un pb de version QT chez moi? Toujours est il que ce doit être lié à mon environnent, j'ai beau repartir d'un projet neuf et de bookmarks créés pour tester je constate toujours ce même message ; y a t-il des logs accessibles pour comprendre mon problème?
Merci encore!

Hors ligne

 

#8 Fri 27 March 2020 12:40

SIGEAL
Membre
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 167
Site web

Re: QGIS: Export d'un atlas a partir des geosignets

La seule différence que je vois entre ton environnement et le mien, c'est que tu as installé QGIS avec l'installateur réseau OsGeo4w, alors que j'utilise l'installateur indépendant, mais je ne vois pas bien pourquoi cela provoquerait ce type d'erreur.
Cela dit une désinstallation/réinstallation peut toujours être tentée...


Christophe Damour (SIGéal)

Hors ligne

 

#9 Fri 27 March 2020 13:21

Julien81
Membre
Lieu: Prissé
Date d'inscription: 14 Jan 2019
Messages: 42

Re: QGIS: Export d'un atlas a partir des geosignets

Merci pour ta précision je vais faire un test via une install indépendante pour tester, et peut-être pour comprendre ce que j'ai pu louper via l'installateur réseau ou ce qui peut différer dans l'environnement si j'ai le temps^^
Bonne journée

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |