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 !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Tue 17 March 2020 22:34

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 987

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
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

Un peu de code python à exécuter depuis la console :

Code:

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

# 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
# et le groupe des signets et le scr du projet
tmpProvider.addAttributes([
    QgsField('name', QVariant.String),
    QgsField('group', QVariant.String),
    QgsField('crs', 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 groupe et du crs du signet
    crs = b.extent().crs().authid()
    feat.setAttributes([
        b.name(),
        b.group(),
        crs
    ])
    # Ajout de l'entité à la couche temporaire
    b = 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)

Dernière modification par SIGEAL (Thu 02 April 2020 14:57)


Christophe Damour (SIGéal)

Hors ligne

 

#3 Thu 26 March 2020 23:09

Julien81
Participant actif
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 148

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
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
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
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 987

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
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
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
Participant actif
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 148

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
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
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
Participant actif
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 148

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

 

#10 Wed 01 April 2020 16:53

guillaume
Participant actif
Date d'inscription: 5 Sep 2005
Messages: 62

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

Bonjour à tous,

je voulais tester ce script avec 3.10 mais j'ai un message d'erreur :
- lorsque je le lance directement depuis la fenêtre éditeur de scripts = geosignet1.png
- lorsque depuis cette même fenêtre, je souhaite l'enregistrer = geosignet2.png

Dans les 2 cas, il est question de QVariant' is not defined

Merci de votre aide
Cordialement
Guillaume


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

Hors ligne

 

#11 Wed 01 April 2020 17:12

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

Bonjour,

Tu peux essayer d'ajouter cette ligne au début du script :

Code:

from PyQt5.QtCore import QVariant

Christophe Damour (SIGéal)

Hors ligne

 

#12 Thu 02 April 2020 08:12

guillaume
Participant actif
Date d'inscription: 5 Sep 2005
Messages: 62

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

Merci SIGEAL,
le plantage se fait un peu plus loin !
" line 28, in NameError: name 'QgsFeature' is not defined "

Bonne journée

Hors ligne

 

#13 Thu 02 April 2020 08:31

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

Même remède : ajouter QgsFeature dans la liste des imports.
Je ne comprends pas pourquoi ces imports ne sont pas nécessaires en mode console sur ma configuration...
J'ai mis à jour le script en début de discussion.


Christophe Damour (SIGéal)

Hors ligne

 

#14 Thu 02 April 2020 09:53

Julien81
Participant actif
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 148

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

Trop bien!!

Merci à toi Christophe, effectivement cela résout aussi tout à fait mes problèmes sur mon install Osgeo4w de QGIS et je peux voir la couche temporaire créée à partir de mes géosignets.
Du coup je n'ai pas eu le temps de me pencher sur une installation indépendante de QGIS mais il doit y avoir une différence sur des paramètres par défaut dudit logiciel selon l'install et la conf concernant ces 'composants python importés' par défaut en mode console.

Un grand merci en tout cas, portez vous bien et passez une agréable journée.

Hors ligne

 

#15 Thu 02 April 2020 13:03

Julien81
Participant actif
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 148

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

Puis-je être un tantinet embêtant sur un complément?

si je souhaite également par exemple rapatrier dans un champ 'epsgsrc' le code epsg des coordonnées utilisées pour la bbox/géosignet ;
de même comment puis je définir un champs 'group' et y intégrer la valeur Groupe qui a été saisie/renseignée pour chaque géosignets.

J'ai tenté naïvement d'intégrer après la ligne 24 :

Code:

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

Puis après l'actuelle ligne 33 :

Code:

# Ajout du groupe du signet
feat.setAttributes([b.group()])

Sans succès, étonnamment!!^^

Comment récupère-t-il dans ton script la valeur Name/Nom, peut-on faire de même avec cette valeur Groupe, car je crois que si je lui ai fait créer le champs dans la couche temp de destination, c'est pour la récupération de la valeur que je pêche? Il me sort une couche vide du coup, mais bien avec un champ group..

cordialement

Hors ligne

 

#16 Thu 02 April 2020 14:04

guillaume
Participant actif
Date d'inscription: 5 Sep 2005
Messages: 62

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

Merci SIGEAL,
Cela fonctionne ! smile

Hors ligne

 

#17 Thu 02 April 2020 14:48

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

@Julien81 :

Les méthodes addAttributes et setAttributes prennent une liste en argument :

Code:

tmpProvider.addAttributes([
    QgsField('name', QVariant.String),
    QgsField('group', QVariant.String),
    QgsField('crs', QVariant.String)
])

Code:

crs = QgsProject.instance().crs().authid()
feat.setAttributes([
    b.name(),
    b.group(),
    crs
])

J'ai mis aussi le code qui permet de récupérer le code du scr du projet (normalement celui qui a été utilisé lors de la création des signets).

Mieux, le scr du signet lui-même :

Code:

crs = b.extent().crs().authid()

Dernière modification par SIGEAL (Thu 02 April 2020 14:57)


Christophe Damour (SIGéal)

Hors ligne

 

#18 Thu 02 April 2020 15:01

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

Pour aller plus loin :
https://qgis.org/pyqgis/master/


Christophe Damour (SIGéal)

Hors ligne

 

#19 Thu 02 April 2020 16:54

Julien81
Participant actif
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 148

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

Excellent je te remercie pour le code et les explications, je vais aller voir cette doc de ce pas, même s'il faut que je vois d'abord quelques bases sur python que je n'ai pas!

Hors ligne

 

#20 Tue 07 April 2020 10:54

guillaume
Participant actif
Date d'inscription: 5 Sep 2005
Messages: 62

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

Bonjour,
je voulais simplement rappeler que la version 3.10 de QGIS propose 2 nouveaux algorithmes :
- Convertir les signets spatiaux en couche,
- Convertir une couche en signets spatiaux.

Bonne journée

Hors ligne

 

#21 Mon 15 June 2020 18:44

VielOu
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 20 Nov 2012
Messages: 12
Site web

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

Bonjour,

Vous dites qu'il est possible de convertir les signets spatiaux en couche : via une extension ?

Bonne soirée.

Hors ligne

 

#22 Mon 15 June 2020 19:45

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3790

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

Bonjour,
Non, un algorithme de la boîte à outils Traitement: https://docs.qgis.org/3.10/fr/docs/user … s-to-layer

Hors ligne

 

Pied de page des forums

Powered by FluxBB