Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 1 sur 1
  1. #1

    Date d'inscription
    janvier 2018
    Messages
    1

    Par défaut API Qgis : Class QgsRasterTransparency.TransparentThreeValuePixel ().

    Bonsoir,

    j'utilise l'api qgis et gdal ogr pour implémenter un plugin. Le principe est de croiser un fichier de type raster et un vecteur (de type polygone) afin de récupérer les pixels qui intersectent avec le vecteur et de leur appliquer une transparence.

    Dans le code qui suit, j'ai réussi à croiser les deux fichiers, à récupérer les pixels qui se trouvent dans l'emprise du vecteur dans une liste (voir code). Mon problème se trouve au niveau de la transparence. Je veux appliquer un niveau de transparence = 100 aux pixels qui se trouvent dans la liste en utilisant QgsRasterTransparency.TransparentThreeValuePixel ().

    Quand j'exécute mon code, je reçois le message d'erreur suivant :
    # Error message: AttributeError: 'Dataset' object has no attribute 'renderer'.

    Je sollicite votre aide.
    Merci d'avance


    from PyQt4.QtCore import *
    from osgeo import gdal, ogr
    from osgeo.gdalconst import *
    import numpy as np


    iface = qgis.utils.iface


    layers = iface.legendInterface().layers()
    raster = gdal.Open("F:\\MASTER GEOM\\MasterGeomatique_data\\PLEIADES\\PLEIADES_20130415_COLNAT.TIF")
    print(raster)


    transform = raster.GetGeoTransform()
    xOrigin = transform[0]
    yOrigin = transform[3]
    pixelWidth = transform[1]
    pixelHeight = transform[5]



    shp = ogr.Open("F:\essai.shp")
    lyr = shp.GetLayer()
    feat = lyr.GetNextFeature()
    geom = feat.GetGeometryRef()

    if (geom.GetGeometryName() == 'POLYGON'):
    ring = geom.GetGeometryRef(0)
    numpoints = ring.GetPointCount()
    pointsX = []; pointsY = []
    for p in range(numpoints):
    lon, lat, z = ring.GetPoint(p)
    pointsX.append(lon)
    pointsY.append(lat)
    #print (pointsX)
    xmin = min(pointsX)
    xmax = max(pointsX)
    ymin = min(pointsY)
    ymax = max(pointsY)

    # Specify offset and rows and columns to read
    xoff = int((xmin - xOrigin)/pixelWidth)
    yoff = int((yOrigin - ymax)/pixelWidth)
    xcount = int((xmax - xmin)/pixelWidth)+1
    ycount = int((ymax - ymin)/pixelWidth)+1
    print xoff, yoff
    print xcount, ycount


    bandList = []
    # lecture des bandes uniquement pour la region d' interêts
    for i in range(raster.RasterCount):
    band = raster.GetRasterBand(i+1)
    data = band.ReadAsArray(xoff, yoff, xcount, ycount)
    bandList.append(data)




    active_layer = raster
    raster_transparency = active_layer.renderer().rasterTransparency()
    ltr = QgsRasterTransparency.TransparentThreeValuePixel()
    tr_list = []
    ltr.min = np.min(bandList)
    ltr.max = np.max(bandList)
    ltr.percentTransparent = 100
    tr_list.append(ltr)
    active_layer.renderer().rasterTransparency().setTransparentThreeValuePixelList(tr_list)
    active_layer.triggerRepaint()


    Dernière modification par gene ; 24/01/2018 à 06h37.

 

 

Discussions similaires

  1. [MapServer/Appli] Mapserver 5.6 Ordre des blocs CLASS
    Par LeslieDamestoy dans le forum Assistance et Programmation
    Réponses: 1
    Dernier message: 19/01/2012, 12h26
  2. [GRASS 6.3] module i.class et i.maxlik
    Par hilaire dans le forum Assistance et Programmation
    Réponses: 4
    Dernier message: 01/10/2010, 17h13
  3. [VBA] Utilisation de class JAVA
    Par wahid.m dans le forum Assistance et Programmation
    Réponses: 0
    Dernier message: 07/10/2009, 16h44
  4. [ArcGIS 9.x] Jointure ou Relationship class
    Par Gaston dans le forum Assistance Technique
    Réponses: 4
    Dernier message: 15/08/2008, 18h16
  5. [ArcGIS 9.x] Renseigner la feature class d'un layer
    Par kikoo dans le forum Assistance Technique
    Réponses: 1
    Dernier message: 25/06/2005, 14h04

Les tags pour cette discussion

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •