[Tutor] 2.5 to 2.4 problem with Int
John
washakie at gmail.com
Thu Sep 13 21:55:44 CEST 2007
In all it's glory: I'm just a bit embarrassed because I'm sure it's poor
coding:
def gridarea(H):
""" returns an array of area corresponding to each nx,ny,nz
%===========================================
%
%-------------------------------------------
% input
% - H : Header dict object with nx, ny, nz
%
% output
% - Numpy array area corresponding to nx,ny,nz
%-------------------------------------------
%
%-------------------------------------------
% last changes: ww, 2007
%===========================================
"""
import math
import numpy as N
pih=math.pi/180.
r_earth=6.371e6
cosfunc = lambda y : math.cos(y*pih)*r_earth
nz=H['nz']
nx=H['nx']
ny=H['ny']
outlat0=H['outlat0']
dyout=H['dyout']
dxout=H['dxout']
area=N.zeros((nx,ny)) #creates numpy array
for iy in range(ny):
ylata=outlat0+(float(iy)+0.5)*dyout
ylatp=ylata+0.5*dyout
ylatm=ylata-0.5*dyout
if (ylatm<0 and ylatp>0): hzone=dyout*r_earth*pih
else:
cosfact=cosfunc(ylata)
cosfactp=cosfunc(ylatp)
cosfactm=cosfunc(ylatm)
if cosfactp<cosfactm: hzone=math.sqrt(r_earth**2-cosfactp**2)-math.sqrt
(r_earth**2-cosfactm**2)
else: hzone=math.sqrt(r_earth**2-cosfactm**2)-math.sqrt
(r_earth**2-cosfactp**2)
gridarea=2.*math.pi*r_earth*hzone*dxout/360.
for ix in range(nx):
print nx, ix, iy
area[ix,iy]=gridarea
return area #returns numpy array of area
Here's the traceback:
...
360 357 9
360 358 9
360 359 9
360 0 10
OverflowError: long int too large to convert to int
Traceback:
File "<string>", line 1, in ?
File "c:\07\Programming\Python\mod_fp\getfp.py", line 11, in ?
H,fail=readheader(pathname,1,0)
File "c:\07\Programming\Python\mod_fp\mod_fp.py", line 170, in readheader
H['area'] = gridarea(H)
File "c:\07\Programming\Python\mod_fp\mod_fp.py", line 332, in gridarea
area[ix,iy]=gridarea
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070913/0d07e64c/attachment-0002.htm
More information about the Tutor
mailing list