source: trunk/src/ffgrid2_gc_nof_pos.py @ 56

Last change on this file since 56 was 11, checked in by lahlod, 10 years ago

ajout d'un fichier test Laura

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