Relief ombrage et pb de memoire avec python
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:
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:
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