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