source: trunk/src/python_script/ffgrid2_gc_nof.py @ 6

Last change on this file since 6 was 6, checked in by gaclod, 12 years ago

add GC python scripts

  • Property svn:executable set to *
File size: 2.6 KB
Line 
1#modificado para grilla irregular griddata.py
2import numpy as np
3from numpy import *
4
5
6 
7x=xx
8y=yy
9z=zz
10dx=0.1
11dy=1   
12dparx=0.05
13dpary=0.5
14n0=0
15#### z0 y z1 dependen del dato tb, emis....
16z0=0
17z1=2
18y11= -50
19x0, x1 = -180, 180
20y0, y1 = -90, 90
21dx=0.1
22dy=1.0
23
24n=size(lon)   
25xvec = arange(x0,x1,dx)
26yvec = arange(y0,y11,dy)
27nx = size(xvec)
28ny = size(yvec)
29
30ix = zeros(n, float)   
31iy = zeros(n, float)   
32
33for kk in range(0,n):
34    if x[kk] == -180:
35       ix[kk] = 3600
36    else:
37       ix[kk] = math.ceil((x[kk] - x0)/dx)-1
38
39for kk in range(0,n):
40    if y[kk] == -90:
41       iy[kk] = 0
42    else:
43       iy[kk] = math.ceil((y[kk] - y0)/dy)-1
44
45#save txt file
46#np.savetxt('ix_py.txt', ix, fmt='%.18e', delimiter=';')   
47
48
49inx = (ix >= 0) & (ix < nx) 
50iny = (iy >= 0) & (iy < ny)
51inz = (z >= z0) & (z <= z1) 
52inn = inx & iny & inz
53iix = ix[inn]
54iiy = iy[inn]
55zz = z[inn]
56
57N = size(iix)# how many datapoints are left now?
58
59    #calculation of the each arc legth
60Rt=6371
61beta=math.pi/180
62R=beta*Rt
63L=zeros(ny,float)#arc vector
64L[0]=2*math.pi*R
65
66for i in range(1, ny):
67    L[i]=2*math.pi*R*(i+1)
68
69nnx=zeros(ny,float)
70nnx=L/L[0]
71nnx=200/nnx
72nnx=nnx.round()
73
74div=(1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,30,36,40,45,48,50,60,
7572,75,80,90,100,120,144,150,180,200,225,240,300,360,400,450,
76600,720,900,1200,1800,3600)
77vnx=zeros(ny,float)
78
79for i in range(0, ny):
80    a=nnx[i]
81    for j in range(0, ny):
82        b=div[j]
83        if b<=a:
84           vnx[i]=b
85
86vnx[13:40]=12
87li=(L/3600)*vnx
88dxx=vnx
89
90ngrid = zeros([nx, ny], float)# no of obs per grid cell
91nngrid = zeros([nx, ny], float)
92zgrid = zeros([nx, ny], float)# z-coordinate
93zzgrid = zeros([nx, ny], float)# z-coordinate grouped
94z2grid = zeros([nx, ny], float)# z-coordinate
95zz2grid = zeros([nx, ny], float)# z-coordinate  grouped
96
97for i in range(0, N):
98    zgrid[iix[i], iiy[i]] = zgrid[iix[i],iiy[i]]+zz[i]
99    z2grid[iix[i], iiy[i]] = z2grid[iix[i],iiy[i]]+zz[i]*zz[i]
100    ngrid[iix[i], iiy[i]] = ngrid[iix[i],iiy[i]]+ 1 
101       
102for i in range(0,ny):
103    jj=round(3600/dxx[i])
104    c=reshape(ngrid[:,i],(jj,dxx[i]))
105    b=c.sum(axis=1)
106    d=reshape(zgrid[:,i],(jj,dxx[i]))
107    e=d.sum(axis=1)
108    f=reshape(z2grid[:,i],(jj,dxx[i]))
109    g=f.sum(axis=1) 
110    for j in range(0, nx):
111        ii=ceil((j+1)/dxx[i])-1
112        nngrid[j,i]=b[ii]
113        zzgrid[j,i]=e[ii]
114        zz2grid[j,i]=g[ii]
115
116zzpgrid = zeros([nx, ny], float)   
117zzpgrid = zzgrid/nngrid
118sigma_grid=sqrt(zz2grid/nngrid-zzpgrid*zzpgrid)
119   
120
121zgrid = np.transpose(zgrid)
122zzgrid = np.transpose(zzgrid)
123zzpgrid = np.transpose(zzpgrid)
124sigma_grid=np.transpose(sigma_grid)
125zz2grid = np.transpose(zz2grid)
126ngrid = np.transpose(ngrid)
127nngrid = np.transpose(nngrid)
128
129
Note: See TracBrowser for help on using the repository browser.