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