Bonjour à tous,
Je cherche à automatiser la création de bassins versants à partir de nombreux exutoires (84) qui sont représentés dans un shapefile de 84 points.
Pour ce faire, je construis un script python qui doit appliquer l'algorithme GRASS r.water.outlet à l'ensemble de mes points et je récupère ainsi 84 rasters qui représente mes 84 bassins versants.
Cet algorithme prend en entrée les coordonnées X et Y de l'exutoire. Mon script récupère donc à travers une boucle ces coordonnées pour chaque point.
Mon problème est que lors de cet itération, seules les coordonnées de 43 points sont récupérées...
Si j'affiche le nombre d'entité de ma couche (macouche.featureCount()), j'obtiens bien 84...
Voici le code:
Lorsque j'éxécute mon script, j'ai donc en retour, le nombre d'élément (84), les coordonnées des 43 premiers éléments (via print (i , X, Y)) et 43 rasters correspondant aux 43 Bassins Versants de ces éléments.
Pourquoi l'itération ne s'applique pas à mes 84 points?? Telle est la question!
Merci beaucoup pour vos réponses avisées!
Je cherche à automatiser la création de bassins versants à partir de nombreux exutoires (84) qui sont représentés dans un shapefile de 84 points.
Pour ce faire, je construis un script python qui doit appliquer l'algorithme GRASS r.water.outlet à l'ensemble de mes points et je récupère ainsi 84 rasters qui représente mes 84 bassins versants.
Cet algorithme prend en entrée les coordonnées X et Y de l'exutoire. Mon script récupère donc à travers une boucle ces coordonnées pour chaque point.
Mon problème est que lors de cet itération, seules les coordonnées de 43 points sont récupérées...
Si j'affiche le nombre d'entité de ma couche (macouche.featureCount()), j'obtiens bien 84...
Voici le code:
pointLayer = QgsVectorLayer(Outlet, "Outlet", "ogr")
feat = pointLayer.getFeatures()
print (pointLayer.featureCount())
i = 0
for f in feat:
f = feat.next()
geom=f.geometry()
X = geom.asPoint().x()
Y = geom.asPoint().y()
i += 1
print (i, X, Y)
processing.runalg("grass:r.water.outlet", Flowdir , X, Y,"850691.291285,943760.336892,6294791.45066,6358670.20484",25,Basins)
indiv = QgsRasterLayer(Basins, "Basin")
QgsMapLayerRegistry.instance().addMapLayer(indiv)
print("end")
Lorsque j'éxécute mon script, j'ai donc en retour, le nombre d'élément (84), les coordonnées des 43 premiers éléments (via print (i , X, Y)) et 43 rasters correspondant aux 43 Bassins Versants de ces éléments.
Pourquoi l'itération ne s'applique pas à mes 84 points?? Telle est la question!
Merci beaucoup pour vos réponses avisées!