Suite

Erreur de segmentation lors de l'écriture d'un raster en sortie par blocs avec rasterio

Erreur de segmentation lors de l'écriture d'un raster en sortie par blocs avec rasterio


Avec la réponse à ma question précédente, j'ai pu configurer la lecture d'un raster par blocs. J'ai fait quelques calculs et maintenant j'essaie d'écrire le résultat dans un autre raster. Cependant, le programme échoue avec le code d'erreur 139 etSegmentation fault (core dumped). Mon code :

avec rasterio.drivers() : avec rasterio.open(asterPath,'r') comme src : avec rasterio.open(ndviPath,'w',driver='GTiff', width=src.shape[0], height=src .shape[1], count=1, dtype=np.float32) as dst : pour l'index, window dans src.block_windows(2) : red = src.read(2, window=window) nir = src.read(3 , window=window) #calculer ndvi en tant que tableau NumPy 2d, dtype float32 dst.write_band(1,ndvi,window=window)

Pour vérifier l'intégrité, j'ai essayé de remplir le tableau ndvi avec des zéros. Cela a fonctionné en dehors de la boucle, mais pas à l'intérieur, donc j'ai dû mal comprendre quelque chose à propos de l'écriture par bloc avec rasterio. Tout ce que je sais sur rasterio, c'est ce manuel (y compris les autres fichiers doc du même référentiel). Alors, comment enregistrer les données NDVI dans un raster par bloc ?

Je suis sur Ubuntu 14.04 et j'utilise Python 2.7, Gdal 1.10.1, NumPy 1.8.2 et Rasterio 0.26.0 installés à partir des sources de la manière suggérée pour Linux sur le site Rasterio.


La demande de @geowurster sur la trace de la pile m'a fait faire un autre tour de débogage. Les dimensions du raster étaient de 5033x5665 pixels, et j'ai constaté qu'il se bloque lors de l'écriture de la tuile, y compris les pixels (0-63)x(4992-5055). J'ai affecté les dimensions au nouveau raster dans le mauvais ordre, il a donc essayé d'écrire en dehors du raster. j'ai changé lefaçonnerindex et ça marche:

avec rasterio.open(ndviPath,'w',driver='GTiff', width=src.shape[1], height=src.shape[0], count=1, dtype=np.float32) comme dst :

Voir la vidéo: 201 - Working with geotiff files using rasterio in python also quick demo of NDVI calculation