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")
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)
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)
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
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