#1 Wed 16 August 2017 10:37
- hotegbe
- Participant occasionnel
- Date d'inscription: 28 Jun 2017
- Messages: 32
QGIS / pyqgis: Algorithm output
Bonjour, je sollicite votre aide pour le problème suivant :
Je possède un script qui me permet de calculer la longueur de chaque segment contenue dans une polyligne.
Code initial
Code:
from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * from qgis.gui import * from qgis.networkanalysis import * import sys from math import sqrt import os layer = iface.activeLayer() features = layer.getFeatures() points = [] for feature in features: geom = feature.geometry().asPoint() points.append(geom) n = len(points) for i in range(n-1): j=i+1 if i < j: print i, j, sqrt(points[i].sqrDist(points[j]))
l'exécution du code me renvoie ceci ; ce qui est correct :
0 1 94.74
1 2 64.85
2 3 24.82
3 4 149.76
Sachant que les deux premières colonnes me renvoient les nœuds de départ et de fin et la troisième colonne la longueur entre ces 2 nœuds.
A présent je voudrais récupérer ce résultat dans un fichier txt avec en tête pour l' exploiter ultérieurement.
Mon but est d'avoir dans ce fichier :
depart arrivee longueur
0 1 94.74
1 2 64.85
2 3 24.82
3 4 149.76
J'ai essayé ce code
Code:
from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * from qgis.gui import * from qgis.networkanalysis import * import sys from math import sqrt import os mon_fichier = open ("C:/Users/shountohegbe/Desktop/fichiers/fichier.txt", "w") layer = iface.activeLayer() features = layer.getFeatures() points = [] for feature in features: geom = feature.geometry().asPoint() points.append(geom) n = len(points) for i in range(n-1): j=i+1 if i < j: mon_fichier.write (print i, j, sqrt(points[i].sqrDist(points[j]))) mon_fichier.close()
mais ça marche pas.
Avez vous une idée svp?
Cordialement
Dernière modification par hotegbe (Wed 16 August 2017 10:42)
Hors ligne
#2 Wed 16 August 2017 13:38
Re: QGIS / pyqgis: Algorithm output
mon_fichier.write (print i, j, sqrt(points[i].sqrDist(points[j])))
Utilise plutôt qqch comme :
Code:
mon_fichier.write ("{}\t{}\t{}\n".format(i, j, sqrt(points[i].sqrDist(points[j]))))
Hors ligne
#3 Wed 16 August 2017 14:56
- hotegbe
- Participant occasionnel
- Date d'inscription: 28 Jun 2017
- Messages: 32
Re: QGIS / pyqgis: Algorithm output
Merci cela marche très bien.
Cordialement
Hors ligne