def test_copy_layer_tree_group(self): # copying layer tree group should also copy group layer setting options = QgsGroupLayer.LayerOptions(QgsCoordinateTransformContext()) group_layer = QgsGroupLayer('group', options) group_node = QgsLayerTreeGroup() group_node.setGroupLayer(group_layer) self.assertEqual(group_node.groupLayer(), group_layer) group_node2 = group_node.clone() self.assertEqual(group_node2.groupLayer(), group_layer)
def fusionnerJointure(self, cheminCompletParcelle, jointureChoisie): """ Selon les tables déja ouverte dans le projet : ouverture si necessaire des différents cas de délimiteurs Jointure par QGIS """ # Vérification du projet ouverte monProjet = QgsProject.instance() if monProjet.fileName() == None or monProjet.fileName() == "": monPrint("Projet en cours de création", T_WAR) else: monPrint("Projet ouvert {}".format(monProjet.fileName())) root = monProjet.layerTreeRoot() # Création du groupe jointure_date dateMaintenant = datetime.now() nomGroupe = MonParcellaire_JOI + " du " + dateMaintenant.strftime( "%d %b à %Hh%M:%S") temporaireGroupe = QgsLayerTreeGroup(nomGroupe) # Positionner en haut de root root.addChildNode(temporaireGroupe) nouveauGroupe = temporaireGroupe.clone() root.insertChildNode(0, nouveauGroupe) root.removeChildNode(temporaireGroupe) # Ouverture du vecteur parcelle parcelle = QgsVectorLayer( cheminCompletParcelle, MonParcellaire_PAR + SEP_U + MonParcellaire_JOI, 'ogr') monProjet.addMapLayer(parcelle, False) nouveauGroupe.addLayer(parcelle) # Recherche delimiteur delimiteur, csv, nomCsv = self.rechercherDelimiteurJointure( jointureChoisie, "No Pandas") nomCourtJointure = os.path.basename(jointureChoisie) monPrint( "Délimiteur identifié {0} pour {1}".format(delimiteur, nomCourtJointure), T_OK) monProjet.addMapLayer(csv, False) nouveauGroupe.addLayer(csv) # Jointure attributsSelectionnes = self.AttributsAJoindre_listWidget.selectedItems( ) attributsAJoindre = [] for positionAttribut in range(len(attributsSelectionnes)): attributsAJoindre.append( str(self.AttributsAJoindre_listWidget.selectedItems() [positionAttribut].text())) #monPrint( "Attributs à joindre {}".format( attributsAJoindre)) # Liste des champs dans csv nomColonnes, _ = self.lireAttributsJointure(jointureChoisie) attributsAJoindreOrdonne = [] for col in nomColonnes: if col in attributsAJoindre: if col != MonParcellaireNomAttribut: attributsAJoindreOrdonne.append(col) #monPrint( "Attributs à joindre ordonné {}".format( attributsAJoindreOrdonne)) champVecteur = MonParcellaireNomAttribut maJointure = QgsVectorLayerJoinInfo() champCsv = self.AttributJointure_comboBox.currentText() maJointure.setJoinFieldName(champCsv) maJointure.setTargetFieldName(champVecteur) maJointure.setUsingMemoryCache(True) maJointure.setPrefix("") maJointure.setJoinLayer(csv) # Récupérer les champs de jointure maJointure.setJoinFieldNamesSubset(attributsAJoindreOrdonne) parcelle.addJoin(maJointure) return jointureChoisie, attributsAJoindreOrdonne