Skip to Content

traitement_couches.py

  1. # traitement de la ligne de coupe et intégration des segments éventuels (=UNION)
  2. geomcoupe = QgsGeometry.fromWkt('GEOMETRYCOLLECTION EMPTY')
  3. for elem in coupeori.getFeatures():
  4. geomcoupe = geomcoupe.combine(elem.geometry())
  5. # longueur de la ligne de coupe
  6. longueur=geomcoupe.length()
  7. # traitement des limites des couches géologiques (polylines)
  8. limites = QgsGeometry.fromWkt('GEOMETRYCOLLECTION EMPTY')
  9. for elem in lim.getFeatures():
  10. limites = limites.combine(elem.geometry())
  11.  
  12. # valeur d'un pixel sous un point
  13. def Val_raster(point,raster):
  14. return raster.dataProvider().identify(point, QgsRaster.IdentifyFormatValue).results().values()
  15.  
  16. # calcul des des valeurs sur la ligne de coupe
  17. 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)]))
  18.  
  19. # intersection entre la la ligne de coupe et les limites des coupes
  20. ptintersec = geomcoupe.intersection(limites)
  21. # calcul des valeurs des points d'intersection sur la ligne de coupe
  22. origine = geomcoupe.interpolate(0)
  23. 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()]))