# traitement de la ligne de coupe et intégration des segments éventuels (=UNION)
geomcoupe = QgsGeometry.fromWkt('GEOMETRYCOLLECTION EMPTY')
for elem in coupeori.getFeatures():
geomcoupe = geomcoupe.combine(elem.geometry())
# longueur de la ligne de coupe
longueur=geomcoupe.length()
# traitement des limites des couches géologiques (polylines)
limites = QgsGeometry.fromWkt('GEOMETRYCOLLECTION EMPTY')
for elem in lim.getFeatures():
limites = limites.combine(elem.geometry())
# valeur d'un pixel sous un point
def Val_raster(point,raster):
return raster.dataProvider().identify(point, QgsRaster.IdentifyFormatValue).results().values()
# calcul des des valeurs sur la ligne de coupe
x,y,z,couleur,dista = map(list,zip(*[(geomcoupe.interpolate(distance).asPoint().x(), geomcoupe.interpolate(distance).asPoint().y(),Val_raster(geomcoupe.interpolate(distance).asPoint(),MNT)[0], Val_raster(geomcoupe.interpolate(distance).asPoint(),carte_geol),distance) for distance in xrange(0,longueur,20)]))
# intersection entre la la ligne de coupe et les limites des coupes
ptintersec = geomcoupe.intersection(limites)
# calcul des valeurs des points d'intersection sur la ligne de coupe
origine = geomcoupe.interpolate(0)
xd,yd,zd,distd = map(list,zip(*[(point.x(),point.y(),Val_raster(point,MNT)[0],QgsGeometry.fromPoint(point).distance(origine)) for point in ptintersec.asMultiPoint()]))