Example #1
0
def gdllval(uuin, vvin, lat, lon, nij, grtyp, refparam, xyAxis, hasAxis, ij0):
    """Interpolate scalar or vector fields to scattered (lat, lon) points
    vararg = Fstdc.gdllval(uuin, vvin, lat, lon,
        (ni, nj), grtyp, (grref, ig1, ig2, ig3, ig4), (xs, ys), hasAxis, (i0, j0))
    @param (uuin, vvin): Fields to interpolate from; if vvin is None then
                        perform scalar interpolation
    @param lat, lon:  Latitude and longitude coordinates for interpolation
    @param ni ... j0: grid definition parameters
    @return Zout or (UU, VV): scalar or tuple of grid-directed,
                             vector-interpolated fields, as appropriate
    """
    try:
        gid = _getGridHandle(nij[0], nij[1], grtyp,
                             refparam[0], refparam[1], refparam[2],
                             refparam[3], refparam[4],
                             ij0[0], ij0[1], xyAxis[0], xyAxis[1])
    except:
        raise error("gdllval: Invalid Grid Desc")
    try:
        if vvin == None:
            return _rmn.gdllsval(gid, lat, lon, uuin)
        else:
            return _rmn.gdllvval(gid, lat, lon, uuin, vvin)
    except:
        raise error("gdllval: Problem interpolating")
Example #2
0
def gdllval(uuin, vvin, lat, lon, nij, grtyp, refparam, xyAxis, hasAxis, ij0):
    """Interpolate scalar or vector fields to scattered (lat, lon) points
    vararg = Fstdc.gdllval(uuin, vvin, lat, lon,
        (ni, nj), grtyp, (grref, ig1, ig2, ig3, ig4), (xs, ys), hasAxis, (i0, j0))
    @param (uuin, vvin): Fields to interpolate from; if vvin is None then
                        perform scalar interpolation
    @param lat, lon:  Latitude and longitude coordinates for interpolation
    @param ni ... j0: grid definition parameters
    @return Zout or (UU, VV): scalar or tuple of grid-directed,
                             vector-interpolated fields, as appropriate
    """
    try:
        gid = _getGridHandle(nij[0], nij[1], grtyp,
                             refparam[0], refparam[1], refparam[2],
                             refparam[3], refparam[4],
                             ij0[0], ij0[1], xyAxis[0], xyAxis[1])
    except:
        raise error("gdllval: Invalid Grid Desc")
    try:
        if vvin == None:
            return _rmn.gdllsval(gid, lat, lon, uuin)
        else:
            return _rmn.gdllvval(gid, lat, lon, uuin, vvin)
    except:
        raise error("gdllval: Problem interpolating")
Example #3
0
 def test_gdllsval(self):
     gp1 = self.getGridParams_L()
     gid1 = rmn.ezqkdef(gp1)
     self.assertTrue(gid1>=0)
     zin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN')
     for x in xrange(gp1['ni']):
         zin[:,x] = x
     lat = np.array([gp1['lat0']+gp1['dlat']/2.],dtype=np.float32,order='FORTRAN')
     lon = np.array([(gp1['lon0']+gp1['dlon'])/2.],dtype=np.float32,order='FORTRAN')
     zout = rmn.gdllsval(gid1,lat,lon,zin)
     self.assertEqual(lat.shape,zout.shape)
     self.assertTrue(abs((zin[0,0]+zin[1,1])/2. - zout[0]) < self.epsilon)
     rmn.gdrls(gid1)
Example #4
0
 def test_gdllsval(self):
     gp1 = self.getGridParams_L()
     gid1 = rmn.ezqkdef(gp1)
     self.assertTrue(gid1>=0)
     zin = np.empty(gp1['shape'],dtype=np.float32,order='FORTRAN')
     for x in range(gp1['ni']):
         zin[:,x] = x
     lat = np.array([gp1['lat0']+gp1['dlat']/2.],dtype=np.float32,order='FORTRAN')
     lon = np.array([(gp1['lon0']+gp1['dlon'])/2.],dtype=np.float32,order='FORTRAN')
     zout = rmn.gdllsval(gid1,lat,lon,zin)
     self.assertEqual(lat.shape,zout.shape)
     self.assertTrue(abs((zin[0,0]+zin[1,1])/2. - zout[0]) < self.epsilon)
     rmn.gdrls(gid1)
Example #5
0
                                dtype=np.float32,
                                unpack=True)
        ## lat = np.asfortranarray(lat, dtype=np.float32)
        ## lon = np.asfortranarray(lon, dtype=np.float32)
    except:
        raise IOError('Problem reading the lola file: %s' % (options.lolafile))

    # Interpolate input data to lat lon and print
    rmn.ezsetopt(rmn.EZ_OPT_INTERP_DEGREE, inttypelist[inttype])
    #rmn.ezsetopt(rmn.EZ_OPT_EXTRAP_DEGREE,rmn.EZ_EXTRAP_MAX)

    (ni, nj) = data.shape
    outfile = open(options.outfile, 'w')
    for n in range(lat.size):
        (lat2, lon2) = (np.asarray([lat[n]]), np.asarray([lon[n]]))
        lldata2 = rmn.gdllsval(grid, lat2, lon2, data)
        xypos2 = rmn.gdxyfll(grid, lat2, lon2)
        extrap = ''
        if (xypos2['x'][0] < 1. or xypos2['x'][0] > ni or xypos2['y'][0] < 1.
                or xypos2['y'][0] > nj):
            extrap = 'extrap'
        outfile.write("%9.5f, %9.5f, %9.5f, %s\n" %
                      (lon[n], lat[n], lldata2[0], extrap))
        del lldata2, lat2, lon2, xypos2
    outfile.close()

    # Close the RPN STD file
    try:
        rmn.fstcloseall(funit)
    except:
        pass
Example #6
0
    try:    
        (lon,lat) = np.loadtxt(options.lolafile, dtype=np.float32, unpack=True)
        ## lat = np.asfortranarray(lat, dtype=np.float32)
        ## lon = np.asfortranarray(lon, dtype=np.float32)
    except:
        raise IOError('Problem reading the lola file: %s' % (options.lolafile))
    
    # Interpolate input data to lat lon and print
    rmn.ezsetopt(rmn.EZ_OPT_INTERP_DEGREE,inttypelist[inttype])
    #rmn.ezsetopt(rmn.EZ_OPT_EXTRAP_DEGREE,rmn.EZ_EXTRAP_MAX)

    (ni,nj) = data.shape
    outfile = open(options.outfile, 'w')
    for n in xrange(lat.size):
        (lat2,lon2) = (np.asarray([lat[n]]),np.asarray([lon[n]]))
        lldata2 = rmn.gdllsval(grid, lat2, lon2, data)
        xypos2  = rmn.gdxyfll(grid, lat2, lon2)
        extrap  = ''
        if (xypos2['x'][0] < 1. or xypos2['x'][0] > ni or
            xypos2['y'][0] < 1. or xypos2['y'][0] > nj):
            extrap='extrap'
        outfile.write("%9.5f, %9.5f, %9.5f, %s\n" %
                      (lon[n], lat[n], lldata2[0], extrap))
        del lldata2, lat2, lon2, xypos2
    outfile.close()

    # Close the RPN STD file
    try:
        rmn.fstcloseall(funit)
    except:
        pass