source: trunk/src/python_script/ffgrid2_gc.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.3 KB
Line 
1# griddata.py - 2010-07-11 ccampo
2import numpy as np
3from numpy import *
4import bina
5
6def ffgrid(xx, yy, zz, vnx):
7
8    x=xx
9    y=yy
10    z=zz
11    dx=0.1
12    dy=1       
13    dparx=0.05
14    dpary=0.5
15    n0=0
16    z0=100
17    z1=300
18    y11= -50
19    x0, x1 = -180, 180
20    y0, y1 = -90, 90
21    dx=0.1
22    dy=1.0
23    n=size(x)   
24    xvec = arange(x0,x1,dx)
25    yvec = arange(y0,y11,dy)
26    nx = size(xvec)
27    ny = size(yvec)
28    ix = zeros(n, float)   
29    iy = zeros(n, float)   
30
31    for kk in range(0,n):
32        if x[kk] == -180:
33           ix[kk] = 3600
34        else:
35           ix[kk] = math.ceil((x[kk] - x0)/dx)-1
36
37    for kk in range(0,n):
38        if y[kk] == -90:
39           iy[kk] = 0
40        else:
41           iy[kk] = math.ceil((y[kk] - y0)/dy)-1
42
43    inx = (ix >= 0) & (ix < nx) 
44    iny = (iy >= 0) & (iy < ny)
45    inz = (z >= z0) & (z <= z1) 
46    inn = inx & iny & inz
47    iix = ix[inn]
48    iiy = iy[inn]
49    zz = z[inn]
50    N = size(iix)# how many datapoints are left now?
51    #calculation of the each arc legth
52
53    dxx=vnx
54    ngrid = zeros([nx, ny], float)# no of obs per grid cell
55    nngrid = zeros([nx, ny], float)
56    zgrid = zeros([nx, ny], float)# z-coordinate
57    zzgrid = zeros([nx, ny], float)# z-coordinate grouped
58    zdgrid = zeros([nx, ny], float)# z-coordinate 2
59    zzdgrid = zeros([nx, ny], float)# z-coordinate 2 grouped
60
61    for i in range(0, N):
62        zgrid[iix[i], iiy[i]] = zgrid[iix[i],iiy[i]]+zz[i]
63        z2grid[iix[i], iiy[i]] = z2grid[iix[i],iiy[i]]+zz[i]*zz[i]
64        ngrid[iix[i], iiy[i]] = ngrid[iix[i],iiy[i]]+ 1 
65       
66    for i in range(0,ny):
67        jj=round(3600/dxx[i])
68        c=reshape(ngrid[:,i],(jj,dxx[i]))
69        b=c.sum(axis=1)
70        d=reshape(zgrid[:,i],(jj,dxx[i]))
71        e=d.sum(axis=1)
72        f=reshape(zdgrid[:,i],(jj,dxx[i]))
73        g=f.sum(axis=1) 
74        for j in range(0, nx):
75            ii=ceil((j+1)/dxx[i])-1
76            nngrid[j,i]=b[ii]
77            zzgrid[j,i]=e[ii]
78            zzdgrid[j,i]=g[ii]
79
80    zzpgrid = zeros([nx, ny], float)   
81    zzpgrid = zzgrid/nngrid
82    sigma_grid=sqrt(zzdgrid/nngrid-zzpgrid*zzpgrid)
83    zgrid = np.transpose(zgrid)
84    zzgrid = np.transpose(zzgrid)
85    zzpgrid = np.transpose(zzpgrid)
86    zzdgrid = np.transpose(zzdgrid)
87    ngrid = np.transpose(ngrid)
88    nngrid = np.transpose(nngrid)
89    return zgrid, zzgrid, ngrid, nngrid, sigma_grid, xvec, yvec
Note: See TracBrowser for help on using the repository browser.