def makeCanadianPvol(flist): from ec_quality_plugin import ec_dopvolFilter_plugin import ec_dopvolqc rio = _iris2odim.readIRIS(flist[0]) convol = rio.object checkDT(convol) # Sanity check on date/time dpvol = { "dopvol1a": None, "dopvol1b": None, "dopvol1c": None, "dopvol2": None } if len(flist) > 1: for fstr in flist[1:]: dobj = _iris2odim.readIRIS(fstr).object task = "".join(dobj.getAttribute('how/task').lower().split("_")) dpvol[task] = dobj dopvol = ec_dopvolqc.mergeDopvol(dopvol1a=dpvol["dopvol1a"], dopvol1b=dpvol["dopvol1b"], dopvol1c=dpvol["dopvol1c"], dopvol2=dpvol["dopvol2"]) try: ec_dopvolqc.dopvolFilter(convol, dopvol) except: pass # Keep convol even if the filter fails rio.object = convol return rio
def makeCanadianPETScan(flist): import ecWxR_precipet, ecWxR_meta from Proj import dr # First run PRECIP-ET meta_fstr = flist[0] + ".meta" # Same file string with new extension if not ecWxR_precipet.precipET(flist[0], flist[1], meta_fstr): if os.path.isfile(meta_fstr): os.remove(meta_fstr) raise IOError, "ecWxR_precipet.precipET failed on %s" % flist[0] # Second, read the result and merge with lowest CONVOL sweep pet_scan = ecWxR_meta.readMeta2Scan(meta_fstr) rio = _iris2odim.readIRIS(flist[0]) convol = rio.object beamw = convol.getAttribute('how/beamwH') * dr checkDT(convol) # Sanity check on date/time convol.sortByElevations(1) convol_scan = convol.getScan(0).clone() ecWxR_precipet.mergePET(convol_scan, pet_scan) # Will cast an IOError if it fails convol_scan.beamwidth = beamw convol.beamwidth = beamw while convol.getNumberOfScans(): convol.removeScan(0) convol.addScan(convol_scan) rio.object = convol # Now contains DBZH from PRECIP-ET if os.path.isfile(meta_fstr): os.remove(meta_fstr) return rio
def testReadScan(self): new_rio = _iris2odim.readIRIS(self.SCAN) self.assertTrue(new_rio.objectType is _rave.Rave_ObjectType_SCAN) scan = new_rio.object ref_scan = _raveio.open(self.REF_SCAN).object validateTopLevel(self, scan, ref_scan) validateScan(self, scan, ref_scan)
def testReadPvol(self): new_rio = _iris2odim.readIRIS(self.PVOL) self.assertTrue(new_rio.objectType is _rave.Rave_ObjectType_PVOL) pvol = new_rio.object ref_pvol = _raveio.open(self.REF_PVOL).object self.assertEqual(pvol.getNumberOfScans(), ref_pvol.getNumberOfScans()) validateTopLevel(self, pvol, ref_pvol) for i in range(pvol.getNumberOfScans()): scan = pvol.getScan(i) ref_scan = ref_pvol.getScan(i) validateScan(self, scan, ref_scan)