Bonjour a tous!

J'essaye d'effectuer des reliefs ombragés à partir de modele numérique de terrain.

J'utilise le code suivant dans python:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
import geo_image_lib as geo
import pylab as pl
import numpy as np
from matplotlib.colors import LightSource
 
#lit l'image et extrait les coordonnées
a=geo.read_geo_image('out.tif')#je lis mon image .tif qui est est un array contenant des valeurs d'elevation en metres
lonmin,lonmax,latmin,latmax=geo.get_im_extent('out.tif')
#enleve les valleurs en dessous de zero
w=np.where(a<0)
a[w]=0.
 
ls = LightSource(azdeg=50,altdeg=65)
rgb = ls.shade(a,cmap=pl.cm.Greys)
#plot
pl.imshow(rgb,extent=(lonmin,lonmax,latmin,latmax),interpolation='bilinear')
pl.show()
Seulement au niveau de l'utilisation de ls.shade, le programme bloque et me renvoie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
    202             else:
    203                 filename = fname
--> 204             __builtin__.execfile(filename, *where)
 
/home/judith/Desktop/Program3_PlotImage_bis.py in <module>()
     12 
     13 ls = LightSource(azdeg=50,altdeg=65)
---> 14 rgb = ls.shade(a,cmap=pl.cm.Greys)
     15 
     16 pl.imshow(rgb,extent=(lonmin,lonmax,latmin,latmax),interpolation='bilinear')
 
/usr/lib/pymodules/python2.7/matplotlib/colors.pyc in shade(self, data, cmap)
   1359 
   1360         rgb0 = cmap((data - data.min()) / (data.max() - data.min()))
-> 1361         rgb1 = self.shade_rgb(rgb0, elevation=data)
   1362         rgb0[:, :, 0:3] = rgb1
   1363         return rgb0
 
/usr/lib/pymodules/python2.7/matplotlib/colors.pyc in shade_rgb(self, rgb, elevation, fraction)
   1380         slope = 0.5 * np.pi - np.arctan(np.hypot(dx, dy))
   1381         aspect = np.arctan2(dx, dy)
-> 1382         intensity = (np.sin(alt) * np.sin(slope) + np.cos(alt) *
   1383                      np.cos(slope) * np.cos(-az - aspect - 0.5 * np.pi)
Je ne comprend pas trop d'ou vient le pb vu que j'utilisais déja ce code sur ma machine précedente et cela fonctionnait bien. Mon image TIF n'est pas specialement volumineuse non plus (60MO). Pensez vous que cela peut venir de ma machine? J'utilise actuellement un lenovo T420 32bit de 2011 avec 8gb de memoire et un processeur intel core i5. Le systeme d'exploitation est ubuntu 14.04. Cela m'étonnerait néanmoins car ma précedente machine etait moins performante...

J'ai aussi essayé les liens suivants, mais j'ai toujours le meme pb de mémoire:
http://geoexamples.blogspot.com/2014...al-python.html
http://rnovitsky.blogspot.com.es/201...intensity.html

Auriez des conseils pour éviter ce probleme?

Merci d'avance