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 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

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

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

 

Pied de page des forums

Powered by FluxBB