Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)