#1 Thu 20 May 2021 10:03
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
QGIS 2.18 z / python2 couche: activer, joindre
Bonjour
Voici 3 questions pour lesquelles j'aurais besoin de votre aide.
Contexte :
QGIS 2.18 - console python 2
chargement du projet à traiter : ok
suppression de la couche « csv » (anciennes données) : ok
suppression de 2 champs (issus d’une jointure antérieure de la couche « csv » ) dans la couche « étiquette » : ok
chargement de la couche csv (nouvelles données de fichier csv pour mise à jour jointure puis carte) : ok
Les autres couches ne changent pas (4 couches au total, y compris les 2 citées).
layer = iface.activeLayer() permet de sélectionner la couche active si elle a été sélectionnée préalablement à la main.
1- Comment faire pour sélectionner la couche « csv », par exemple, afin qu’elle soit active, automatiquement en python 2 ?
2- Que faut-il écrire en python 2 pour faire la jointure de la couche à joinde « csv » avec la couche cible « étiquette » suivante :
Joindre la couche : CSV
Champ de jointure : INSEE_COM
Champ dans la couche cible : CIBLE_COM
√ Mettre la couche jointe en cache dans la mémoire virtuelle
√ Choisir les champs à joindre :
√ NB_PDV
√ NB_PDV_EX
√ Personnaliser le préfixe des champs :
_ tiret sous le 8 devant chaque champs joint
3- Les imports de classes suivants sont-ils suffisants : (si d'autres sont nécessaires merci de les ajouter)
from qgis.core import QgsProject
from PyQt4.QtCore import QFileInfo
from PyQt4.QtCore import Qvariant
?
D'avance merci, Cordialement
Hors ligne
#2 Thu 20 May 2021 10:37
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
Re: QGIS 2.18 z / python2 couche: activer, joindre
QGIS 2.18 z / python2 couche: activer, joindre
Si vous ne savez répondre qu'à une seule question, n'hésitez pas. Merci.
Hors ligne
#3 Fri 21 May 2021 08:17
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
Re: QGIS 2.18 z / python2 couche: activer, joindre
Questions posées autrement :
1 - comment obtenir un objet layer de type : QgsMapLayer ?
pour pouvoir tester qgis.utils.iface.setActiveLayer(QgsMapLayer)
Hors ligne
#4 Fri 21 May 2021 08:22
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
Re: QGIS 2.18 z / python2 couche: activer, joindre
2 - que faut-il mettre à la place de la ligne vide pour choisir les 2 champs à joindre :
joinObject = QgsVectorJoinInfo()
joinObject.joinLayerId = csv.id()
joinObject.joinFieldName = 'INSEE_COM'
joinObject.targetFieldName = 'CIBLE_COM'
joinObject.memoryCache = True
joinObject.prefix='_'
shpTarget.addJoin(joinObject)
car cela joint tous les champs. Or il n'en faudrait que 2.
Hors ligne