Suite

Décalage raster GDAL avec erreur python : l'objet 'NoneType' n'a pas d'attribut 'GetGeoTransform'


J'essaie de décaler un raster géoréférencé de 0,5 m N et 0,5 m W dans QGIS à l'aide de la console python :

from osgeo import gdal # Ouvrir en mode lecture/écriture rast_src = gdal.Open('test_raster.tif', 1) # Obtenir les coefficients de transformation affine gt = rast_src.GetGeoTransform() # Convertir le tuple en liste, afin que nous puissions le modifier gtl = list(gt) gtl[0] -= 0.5 # Déplacer vers l'ouest 0.5 m gtl[3] += 0.5 # Déplacer vers le nord 0.5 m # Enregistrer la géotransformation dans le raster rast_src.SetGeoTransform(tuple(gtl)) rast_src = None # équivalent à Sauvegarder et fermer

Cependant la ligne #7 (gt = rast_src.GetGeoTransform()) lance un AttributeError : l'objet 'NoneType' n'a pas d'attribut 'GetGeoTransform'. La version GDAL installée est 1.11.0. Le raster semble correct. Alors, qu'est-ce qui ne va pas?


Remarque : il ne s'agit que d'une version légèrement étendue des commentaires ci-dessus.

Clairement leOuvert()l'appel a échoué (retournant Aucun).

Cela peut se produire pour diverses raisons (par exemple, vous n'avez pas les autorisations pour lire le fichier à cause des autorisations du système d'exploitation telles que les ACL), mais comme indiqué dans les commentaires, le problème dans ce cas est que le répertoire que vous pensez être Dans lequel vous travaillez n'est pas celui que vous recherchez réellement. En particulier, python de QGIS sur Windows est "hébergé" partout où le binaire QGIS.exe réside (remarque : vous pouvez modifier les répertoires d'exécution sur les applications Windows si vous disposez des droits d'administrateur - créer un raccourci et définir "Démarrer dans").

Le moyen le plus simple d'aller de l'avant est simplement de fournir le chemin complet :

rast_src = gdal.Open('C:	emp
aster1.tif', 1)

Notez que le caractère est spécial en python, vous devez donc les doubler pour y échapper.

Si vous ne souhaitez pas fournir de chemin codé en dur, vous pouvez le construire à partir d'une variable d'environnement ou à partir d'une autre source (quel que soit ce que le code doit assumer comme répertoire parent). Ce n'est pas vraiment spécifique au SIG cependant.


Ce même problème m'est arrivé et n'avait rien à voir avec le nom du chemin. Je peux ouvrir le raster OK, mais je découvre ensuite que les méthodes qui m'étaient auparavant disponibles ne sont plus là…


Essayez dans une console :

gdalinfo votrefichier.tif

Si tout semble normal (la géotransformation est présente), alors vous pouvez essayer de réécrire votre fichier avecgdal_translate.

J'ai eu un problème similaire, avec un grand tableau, et j'ai pu y accéder avec python en réécrivant le fichier comme :

gdal_translate -co "COMPRESS=LZW" -co "TILED=YES" votrefichier.tif nouveaunom.tif


Voir la vidéo: Working with QGIS: Resampling Rasters. (Octobre 2021).