Pages: 1
- Sujet précédent - QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication - Sujet suivant
#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])
Hors ligne
#2 Fri 15 June 2018 13:10
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
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
Pages: 1
- Sujet précédent - QGIS: Affichage De Ma Couche Apres Remplissage Et Duplication - Sujet suivant