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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 15 June 2018 11:44

dioptris
Participant occasionnel
Date d'inscription: 6 Jun 2018
Messages: 18

QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication

Bonjour les cracks,

Débutant en Qgis j'ai un problème avec mon scripte;
en faite j'ai une couche de base qui contient des points avec des coordonnées je veux gener 3 champs de plus et dupliquer les points en fonction d'un champ que j'ai appelé étage.

le problème qui se pose dans ma couche finale les points ne sont pas renseignés et les nouveaux champs sont vides.

Merci d'avance

voici mon script :
from qgis.gui import QgsMessageBar
from PyQt4.QtCore import *

c1117= qgis.utils.iface.activeLayer()
pr =c1117.dataProvider()
#declaration du champ etage
chpEtage=c1117.fieldNameIndex("Etage")
#declaration du champ hauteur recpteur
chpHauteur=c1117.fieldNameIndex("Hauteur")
chpniveau=c1117.fieldNameIndex("nvo")
#creation des champs
pr.addAttributes([QgsField("Etage", QVariant.String)])
pr.addAttributes([QgsField("Hauteur", QVariant.String)])
pr.addAttributes([QgsField("nvo", QVariant.String)])
#activer la couche c'nom' de recepteur
c1117.startEditing()
iter=c1117.getFeatures()
feat= QgsFeature()
for f in iter:
    point = QgsPoint(f['X'],f['Y'])
    n=f['HA']/3
    n=int(n)
    c1117.changeAttributeValue(f.id(),chpEtage, n)
    for i in range(n-1):
        H=1.8+2.5*i
        print [H]
         # Add a new feature and assign the geometry
        feat.setGeometry(QgsGeometry.fromPoint(point))
        pr.addFeatures([feat])
        if H==1.8:
            nvo=0
        else :
            nvo=i
        c1117.changeAttributeValue(f.id(),chpHauteur, nvo)
        c1117.changeAttributeValue(f.id(),chpHauteur, H)

# Update extent of the layer
c1117.updateExtents()

c1117.commitChanges()
# Add the layer to the Layers panel
QgsMapLayerRegistry.instance().addMapLayers([c1117])


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

Hors ligne

 

#2 Fri 15 June 2018 13:10

gvellut
Participant actif
Lieu: Annecy
Date d'inscription: 13 Apr 2006
Messages: 112
Site web

Re: QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication

2 choses que tu peux regarder :

- tu fais c1117.fieldNameIndex("Hauteur") avant de créer le champ  (via pr.addAttributes([QgsField("Hauteur", QVariant.String)])). Du coup, il est probable que la valeur retournée par fieldNameIndex soit -1 (champ n'existe pas) et les c1117.changeAttributeValue(f.id(),chpHauteur, nvo) ne font rient
- Quand tu crées une nouvelle QgsFeature, tu fais

Code:

feat.setGeometry(QgsGeometry.fromPoint(point))
pr.addFeatures([feat])

mais tu ne donnes pas de valeurs aux champs de feat

Hors ligne

 

#3 Fri 15 June 2018 13:48

dioptris
Participant occasionnel
Date d'inscription: 6 Jun 2018
Messages: 18

Re: QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication

Merci gvellutt,

j'ai essayé d'inversé comme tu me l'as dit mais j'ai le champ nvo qui remplit dans la couche de base.
mais les points ajouter n'ont pas de valeurs  .

Hors ligne

 

#4 Fri 15 June 2018 14:13

gvellut
Participant actif
Lieu: Annecy
Date d'inscription: 13 Apr 2006
Messages: 112
Site web

Re: QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication

mais les points ajouter n'ont pas de valeurs


C'est le deuxième point que j'ai indiqué : dans ton code, tu n'ajoutes pas les valeurs des champs à tes nouveaux points, juste la géométrie (donc iles champs vont logiquement rester vides)

Hors ligne

 

#5 Fri 15 June 2018 14:18

dioptris
Participant occasionnel
Date d'inscription: 6 Jun 2018
Messages: 18

Re: QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication

ok je vais essayer de remplir voir

merci

Hors ligne

 

#6 Fri 15 June 2018 14:36

dioptris
Participant occasionnel
Date d'inscription: 6 Jun 2018
Messages: 18

Re: QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication

sincerement  j'arrive pas à ajouter des valeurs et je veux juste que le champs etage apparait comme si n=4

1
2
3
4

pour chaque point ajouter

Hors ligne

 

Pied de page des forums

Powered by FluxBB