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

Printemps des cartes 2024

#1 Fri 08 June 2018 12:56

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

QGIS / PyQgis: generer des points à partir d'une couche

Bonjour

je suis débutant en pyqgis et je rencontre des problèmes pour aboutir aux résultats que je veux.
j'ai une couche de point comportant 4 colonnes dont l'ID , les coordonnées (X,Y) et n le nombre de fois que je répéter mes point qui diffère pour chaque point .

et mon objectif est de créer des points superposables aux points de la première couche et en fonction du nombre n qui est rattacher aux points

-mon premier problème c'est que après lancement je vois qu’un point apparaitre
-comment faire intégrer le nombre n

# Specify the geometry type
layer = QgsVectorLayer('Point?crs=EPSG :2154', 'point' , 'memory')

# Set the provider to accept the data source
prov = layer.dataProvider()
crecp=iface.activeLayer()
iter=crecp.getFeatures()
for f in iter:
    point = QgsPoint(f['X'],f['Y'])

# Add a new feature and assign the geometry
feat = QgsFeature()
feat.setGeometry(QgsGeometry.fromPoint(point))
prov.addFeatures([feat])

# Update extent of the layer
layer.updateExtents()

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

Hors ligne

 

#2 Fri 08 June 2018 14:54

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

Re: QGIS / PyQgis: generer des points à partir d'une couche

Tu dois mettre la création du QgsFeature dans la boucle (sinon prov.addFeatures n'est appelé qu'une seule fois) et imbriquer une deuxième boucle pour intégrer le nombre n. Par exemple :

Code:

for f in iter:
    point = QgsPoint(f['X'],f['Y'])
    n = f['n_repete']
    for i in range(n):
        # Add a new feature and assign the geometry
        feat = QgsFeature()
        feat.setGeometry(QgsGeometry.fromPoint(point))
        prov.addFeatures([feat])

Hors ligne

 

#3 Fri 08 June 2018 16:02

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

Re: QGIS / PyQgis: generer des points à partir d'une couche

merci gvellut j'ai essayé ca mais il m'affiche cette erreur :

line 10, in <module>
    n = f['n_repete']
KeyError: 'n_repete'

Hors ligne

 

#4 Fri 08 June 2018 16:14

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

Re: QGIS / PyQgis: generer des points à partir d'une couche

merci encore j'ai vu l'erreur le n_repete' n'est pas defini dans ma table attributaire.

Aussi JE VEUX

-intégrer la couche qui vient d’être créer comme un champ dans ma couche initiale.

-la table attribut n'est pas utilisable

Dernière modification par dioptris (Fri 08 June 2018 16:22)

Hors ligne

 

Pied de page des forums

Powered by FluxBB