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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Soutenez le GeoRezo en faisant un don !

Merci à tous pour votre fidélité.

don

L'équipe GeoRezo

 

#1 Sat 16 November 2019 10:27

miracle
Membre
Date d'inscription: 8 Nov 2019
Messages: 4

problème code python pour calculer NDVI

Bonjour,
je suis en train de developper un script Python permettant de calculer le NDVI en utilisant deux images raster (image bande rouge et image bande PIR). le code ne présente pas d'erreurs de compilation, mais, le problème est que le fichier résultat (celui de NDVI ) ne se généré pas.
voici le code:
rastername4="bandd4"
rastername5="bandd5"
chrep=QgsProject.instance().homePath()+"/src/"
rband4=QgsRasterLayer(chrep+"TunB4.tif",rastername4)
rband5=QgsRasterLayer(chrep+"TunB5.tif",rastername5)
ir=QgsRasterCalculatorEntry()
r=QgsRasterCalculatorEntry()
r.raster=rband4
ir.raster=rband5
ir.bandNumber=1
r.bandNumber=1
r.ref=rastername4+"@1"
ir.ref=rastername5+"@1"
references=(ir.ref,r.ref,ir.ref,r.ref)
exp="(%s-%s)/(%s+%s)"%references
output=chrep+"ndvi.tif"
e=rband4.extent()
w=rband4.width()
h=rband4.height()
entrees=[ir,r]
ndvi=QgsRasterCalculator(exp,output,"Gttif",e,w,h,entrees)
ndvi.processCalculation()
lyr = QgsRasterLayer(output, "NDVI")
QgsProject.instance().addMapLayer(lyr)

merci

Hors ligne

 

#2 Sat 16 November 2019 11:28

Pascal Boulerie
Banni
Lieu: France
Date d'inscription: 12 Sep 2005
Messages: 2310
Site web

Re: problème code python pour calculer NDVI

Une interrogation naïve de ma part :

ne pouvez-vous point utiliser un outil déjà existant (pour ne pas réinventer une roue),
tout en vous consacrer à programmer en Python pour des fonctions pour lesquelles vous ne trouveriez pas d’outil tout fait.


Si j’ai le temps, je regarderai votre code...


Avez-vous la formule NVDI à mettre en œuvre,
et pouvez-vous décrire l’algorithme que vous voulez utiliser sur une image entière ?


« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)

Hors ligne

 

#3 Sat 16 November 2019 11:46

miracle
Membre
Date d'inscription: 8 Nov 2019
Messages: 4

Re: problème code python pour calculer NDVI

Merci pour votre réponse.
En fait, NDVI=(bandePIR-bandeRouge)/(bandePIR+bandeRouge)

en fait, l'algorithme calcule pour chaque pixel la valeur NDVI qui doit être comprise entre -1 et 1 en se basant sur cette formule et génère une image raster.Mon problème c'est comment je peux générer cet image?

Hors ligne

 

#4 Sat 16 November 2019 22:30

TLSR
Membre
Date d'inscription: 1 Feb 2019
Messages: 16

Re: problème code python pour calculer NDVI

Bonjour, vous pouvez faire la même chose avec ce genre de code (librairies rasterio et numpy) sans avoir à utiliser l'api python QGIS.

Code:

import rasterio as rio
import numpy as np

with rio.open("img_rouge") as src:
    img_rouge = src.read()
with rio.open("img_pir") as src:
    img_pir = src.read()
profile = src.profile
ndvi = (img_pir-img_rouge)/(img_pir+img_rouge)
with rio.open('example.tif', 'w', **profile) as dst:
    dst.write(ndvi.astype(rasterio.uint8), 1)

Normalement ce genre de code fonctionne.

Dernière modification par TLSR (Sat 16 November 2019 22:31)

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |