Exemplo n.º 1
0
    def testFillGap_onCartesianParameters(self):
        data = numpy.zeros((6, 6), numpy.uint8)
        data[1][2] = 1
        data[2][1] = 1
        data[3][2] = 1
        data[2][3] = 1

        obj = _cartesian.new()

        param = _cartesianparam.new()
        param.setData(data)
        param.nodata = 255.0
        param.quantity = "DBZH"
        obj.addParameter(param)

        param = _cartesianparam.new()
        data[1][2] = 2
        data[2][1] = 2
        data[3][2] = 2
        data[2][3] = 2
        param.setData(data)
        param.nodata = 255.0
        param.quantity = "TH"
        obj.addParameter(param)

        t = _transform.new()
        result = t.fillGap(obj)

        data = result.getParameter("DBZH").getData()
        self.assertEqual(1, data[2][2])
        data = result.getParameter("TH").getData()
        self.assertEqual(2, data[2][2])
Exemplo n.º 2
0
    def test_sum_different_quantity(self):
        p1 = _cartesianparam.new()
        p1.quantity = "DBZH"
        p1.setData(reshape(array((NO_DATA, 111, 0, 111), uint8), (2, 2)))
        p1.nodata, p1.undetect, p1.gain, p1.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d1 = _ravefield.new()
        d1.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d1.setData(reshape(array((0, 100, 75, 50), uint8), (2, 2)))
        d1.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p1.addQualityField(d1)

        p2 = _cartesianparam.new()
        p2.quantity = "TH"
        p2.setData(reshape(array((NO_DATA, 111, 0, 111), uint8), (2, 2)))
        p2.nodata, p2.undetect, p2.gain, p2.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d2 = _ravefield.new()
        d2.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d2.setData(reshape(array((0, 100, 75, 50), uint8), (2, 2)))
        d2.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p2.addQualityField(d2)

        obj = _acrr.new()
        obj.sum(p1, 200.0, 1.6)
        try:
            obj.sum(p2, 200.0, 1.6)
            self.fail("Expected IOError")
        except IOError:
            pass

        self.assertEqual(True, obj.isInitialized())
        self.assertEqual("DBZH", obj.getQuantity())
Exemplo n.º 3
0
    def test_accumulate_distfield_nodata(self):

        distance_field1 = (10, 20, 30, ACRR_NO_DATA)
        distance_field2 = (10, 20, 30, ACRR_NO_DATA)

        p1 = _cartesianparam.new()
        p1.quantity = "DBZH"
        p1.setData(reshape(array((111, 111, UNDETECT, NO_DATA), uint8),
                           (2, 2)))
        p1.nodata, p1.undetect, p1.gain, p1.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d1 = _ravefield.new()
        d1.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d1.setData(reshape(array(distance_field1, uint8), (2, 2)))
        d1.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p1.addQualityField(d1)

        p2 = _cartesianparam.new()
        p2.quantity = "DBZH"
        p2.setData(reshape(array((111, 111, 111, NO_DATA), uint8), (2, 2)))
        p2.nodata, p2.undetect, p2.gain, p2.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d2 = _ravefield.new()
        d2.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d2.setData(reshape(array(distance_field2, uint8), (2, 2)))
        d2.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p2.addQualityField(d2)

        obj = _acrr.new()
        obj.nodata = ACRR_NO_DATA
        obj.undetect = UNDETECT
        obj.sum(p1, 200.0, 1.6)
        obj.sum(p2, 200.0, 1.6)

        result = obj.accumulate(0.0, 2, 1.0)

        self.assertAlmostEqual(1.0, result.getAttribute("what/prodpar"), 4)
        self.assertEqual("ACRR", result.quantity)
        self.assertAlmostEqual(ACRR_NO_DATA, result.nodata, 4)
        self.assertAlmostEqual(UNDETECT, result.undetect, 4)

        refAcrr = [1.0, 1.0, 0.5, ACRR_NO_DATA]
        refDist = self.calculateAvgDistanceField(
            [distance_field1, distance_field2], DEFAULT_DISTANCE_GAIN)
        Acrr = result.getData().flatten()
        qfield = result.getQualityFieldByHowTask(
            "se.smhi.composite.distance.radar")
        self.assertAlmostEqual(0.0, qfield.getAttribute("what/offset"), 4)
        self.assertAlmostEqual(1000.0, qfield.getAttribute("what/gain"), 4)
        Dist = qfield.getData().flatten()
        for i in range(len(refAcrr)):
            self.assertAlmostEqual(Acrr[i], refAcrr[i], 2)
            self.assertAlmostEqual(Dist[i], refDist[i], 2)
Exemplo n.º 4
0
    def test_addParameter(self):
        obj = _cartesian.new()
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(numpy.zeros((240, 240), numpy.uint8))
        param2 = _cartesianparam.new()
        param2.quantity = "MMH"
        param2.setData(numpy.zeros((240, 240), numpy.uint8))

        self.assertFalse(obj.hasParameter("DBZH"))
        obj.addParameter(param)
        self.assertTrue(obj.hasParameter("DBZH"))
        obj.addParameter(param2)
        self.assertTrue(obj.hasParameter("DBZH"))
        self.assertTrue(obj.hasParameter("MMH"))
Exemplo n.º 5
0
def readCT(filename):
    ct, cp = _cartesian.new(), _cartesianparam.new()

    nodelist = _pyhl.read_nodelist(filename)
    for n in NODENAMES:
        nodelist.selectNode(n)
    nodelist.fetch()

    ct.defaultParameter = "CT"
    ct.projection = _projection.new("MSG", "no description",
                                    nodelist.getNode("/PROJECTION").data())

    cp.setData(nodelist.getNode("/CT").data())

    ysize = nodelist.getNode("/CT/N_LINES").data()
    xsize = nodelist.getNode("/CT/N_COLS").data()
    ULx = nodelist.getNode("/XGEO_UP_LEFT").data()
    ULy = nodelist.getNode("/YGEO_UP_LEFT").data()
    LRx = nodelist.getNode("/XGEO_LOW_RIGHT").data()
    LRy = nodelist.getNode("/YGEO_LOW_RIGHT").data()
    yscale = (ULy - LRy) / ysize
    xscale = (LRx - ULx) / xsize
    xoffset, yoffset = xscale / 2, yscale / 2  # Offsets to adjust LL and UR corners
    LLx = LRx - (xsize * xscale) - xoffset
    LLy = ULy - (ysize * yscale) - yoffset
    URx = LRx + xoffset
    URy = ULy + yoffset
    ct.areaextent = (LLx, LLy, URx, URy)  # Differs ~5 cm from PPS and PyTROLL
    ct.xscale, ct.yscale = xscale, yscale
    cp.quantity = "CT"
    cp.gain, cp.offset = 1.0, 0.0
    cp.nodata, cp.undetect = -1.0, 0.0
    ct.addParameter(cp)

    return ct
Exemplo n.º 6
0
    def test_apply(self):
        distance = _ravefield.new()
        distance.setData(numpy.zeros((2, 2), numpy.float64))
        distance.setValue(0, 0, 0.1)
        distance.setValue(0, 1, 0.2)
        distance.setValue(1, 0, 0.3)
        distance.setValue(1, 1, 0.4)
        distance.addAttribute("what/gain", 10000.0)
        distance.addAttribute("what/offset", 0.0)

        param = _cartesianparam.new()
        param.setData(numpy.zeros((2, 2), numpy.float64))
        param.setValue((0, 0), 1)
        param.setValue((0, 1), 2)
        param.setValue((1, 0), 3)
        param.setValue((1, 1), 4)
        param.quantity = "ACRR"
        param.gain = 10.0
        param.offset = 2.0

        gra = _gra.new()
        gra.A = 1.0
        gra.B = 2.0
        gra.C = 3.0

        result = gra.apply(distance, param)
        self.assertAlmostEqual(47.77, result.getConvertedValue((0, 0))[1], 2)
        self.assertAlmostEqual(1102.61, result.getConvertedValue((0, 1))[1], 2)
        self.assertAlmostEqual(3200.0, result.getConvertedValue((1, 0))[1], 4)
        self.assertAlmostEqual(4200.0, result.getConvertedValue((1, 1))[1], 4)
Exemplo n.º 7
0
    def test_setGetValue(self):
        obj = _cartesianparam.new()
        obj.nodata = 255.0
        obj.undetect = 0.0
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.float64), numpy.float64)
        a = numpy.reshape(a, (12, 10)).astype(numpy.float64)
        obj.setData(a)

        data = [
            ((0, 1), 10.0, _rave.RaveValueType_DATA),
            ((1, 1), 20.0, _rave.RaveValueType_DATA),
            ((2, 2), 30.0, _rave.RaveValueType_DATA),
            ((9, 4), 49.0, _rave.RaveValueType_DATA),
            ((8, 4), obj.nodata, _rave.RaveValueType_NODATA),
            ((4, 8), obj.undetect, _rave.RaveValueType_UNDETECT),
        ]

        for v in data:
            obj.setValue(v[0], v[1])

        # Verify
        for v in data:
            r = obj.getValue(v[0])
            self.assertAlmostEqual(v[1], r[1], 4)
            self.assertEqual(v[2], r[0])
Exemplo n.º 8
0
    def test_getValue(self):
        obj = _cartesian.new()

        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.nodata = 255.0
        param.undetect = 0.0

        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.float64), numpy.float64)
        a = numpy.reshape(a, (12, 10)).astype(numpy.float64)
        a[0][1] = param.nodata
        a[1][0] = param.undetect

        param.setData(a)

        obj.addParameter(param)
        obj.defaultParameter = "DBZH"
        pairs = [(0, 0, 0.0, _rave.RaveValueType_UNDETECT),
                 (1, 0, param.nodata, _rave.RaveValueType_NODATA),
                 (0, 1, param.undetect, _rave.RaveValueType_UNDETECT),
                 (2, 0, 2.0, _rave.RaveValueType_DATA),
                 (0, 3, 30.0, _rave.RaveValueType_DATA)]

        for cval in pairs:
            result = obj.getValue((cval[0], cval[1]))
            self.assertAlmostEqual(cval[2], result[1], 4)
            self.assertEqual(cval[3], result[0])
Exemplo n.º 9
0
    def test_isTransformable_noscale(self):
        proj = _rave.projection(
            "x", "y",
            "+proj=stere +ellps=bessel +lat_0=90 +lon_0=14 +lat_ts=60 +datum=WGS84"
        )
        data = numpy.zeros((10, 10), numpy.float64)

        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(data)

        obj = _cartesian.new()
        obj.xscale = 1000.0
        obj.yscale = 1000.0

        obj.projection = proj
        obj.addParameter(param)

        self.assertEqual(True, obj.isTransformable())
        obj.xscale = 1000.0
        obj.yscale = 0.0
        self.assertEqual(False, obj.isTransformable())
        obj.xscale = 0.0
        obj.yscale = 1000.0
        self.assertEqual(False, obj.isTransformable())
Exemplo n.º 10
0
    def test_setGetConvertedValue(self):
        obj = _cartesianparam.new()
        obj.nodata = 255.0
        obj.undetect = 0.0
        obj.gain = 2.0
        obj.offset = 1.0
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.float64), numpy.float64)
        a = numpy.reshape(a, (12, 10)).astype(numpy.float64)
        obj.setData(a)

        obj.setValue((0, 1), 10.0)
        obj.setValue((1, 1), 20.0)
        obj.setConvertedValue((2, 2), 14.5)
        obj.setConvertedValue((3, 3), 15.0)

        r = obj.getConvertedValue((0, 1))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(21.0, r[1], 4)

        r = obj.getConvertedValue((1, 1))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(41.0, r[1], 4)

        r = obj.getConvertedValue((2, 2))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(14.5, r[1], 4)

        r = obj.getConvertedValue((3, 3))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(15.0, r[1], 4)
Exemplo n.º 11
0
    def test_getConvertedValueAtLonLat(self):
        obj = _cartesian.new()
        obj.projection = _rave.projection(
            "gnom", "gnom",
            "+proj=gnom +R=6371000.0 +lat_0=56.3675 +lon_0=12.8544")
        obj.xscale = 100.0
        obj.yscale = 100.0

        xy = obj.projection.fwd(deg2rad((12.8544, 56.3675)))
        obj.areaextent = (xy[0] - 4 * 100.0, xy[1] - 5 * 100.0,
                          xy[0] + 6 * 100.0, xy[1] + 5 * 100.0)
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.nodata = 255.0
        param.undetect = 0.0

        a = numpy.arange(99)
        a = numpy.array(a.astype(numpy.float64), numpy.float64)
        a = numpy.reshape(a, (11, 9)).astype(numpy.float64)

        param.setData(a)

        obj.addParameter(param)
        obj.defaultParameter = "DBZH"

        expected = obj.getConvertedValue((4, 5))
        actual = obj.getConvertedValueAtLonLat(deg2rad((12.8544, 56.3675)))
        self.assertEqual(expected[0], actual[0])
        self.assertAlmostEqual(expected[1], actual[1], 4)
Exemplo n.º 12
0
    def test_getParameter(self):
        obj = _cartesian.new()
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(numpy.zeros((240, 240), numpy.uint8))
        param2 = _cartesianparam.new()
        param2.quantity = "MMH"
        param2.setData(numpy.zeros((240, 240), numpy.uint8))
        obj.addParameter(param)
        obj.addParameter(param2)

        result = obj.getParameter("DBZH")
        result2 = obj.getParameter("MMH")
        self.assertTrue(param == result)
        self.assertTrue(param2 == result2)

        self.assertTrue(None == obj.getParameter("MMHH"))
Exemplo n.º 13
0
 def test_quantity_typeError(self):
     obj = _cartesianparam.new()
     try:
         obj.quantity = 10
         self.fail("Expected TypeError")
     except TypeError:
         pass
     self.assertEqual(None, obj.quantity)
Exemplo n.º 14
0
    def test_addParameter_differentSizes(self):
        obj = _cartesian.new()
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(numpy.zeros((240, 240), numpy.uint8))
        param2 = _cartesianparam.new()
        param2.quantity = "MMH"
        param2.setData(numpy.zeros((241, 241), numpy.uint8))

        obj.addParameter(param)
        try:
            obj.addParameter(param2)
            self.fail("Expected AttributeError")
        except AttributeError:
            pass

        self.assertTrue(obj.hasParameter("DBZH"))
        self.assertFalse(obj.hasParameter("MMH"))
Exemplo n.º 15
0
 def test_undetect_typeError(self):
     obj = _cartesianparam.new()
     self.assertAlmostEqual(0.0, obj.undetect, 4)
     try:
         obj.undetect = 10
         self.fail("Expected TypeError")
     except TypeError:
         pass
     self.assertAlmostEqual(0.0, obj.undetect, 4)
Exemplo n.º 16
0
 def test_datatype(self):
     obj = _cartesianparam.new()
     self.assertEqual(_rave.RaveDataType_UNDEFINED, obj.datatype)
     try:
         obj.datatype = _rave.RaveDataType_INT
         self.fail("Expected AttributeError")
     except AttributeError:
         pass
     self.assertEqual(_rave.RaveDataType_UNDEFINED, obj.datatype)
Exemplo n.º 17
0
 def test_attribute_visibility(self):
     attrs = [
         'xsize', 'ysize', 'quantity', 'gain', 'offset', 'nodata',
         'undetect', 'datatype'
     ]
     obj = _cartesianparam.new()
     alist = dir(obj)
     for a in attrs:
         self.assertEqual(True, a in alist)
Exemplo n.º 18
0
 def test_ysize(self):
     obj = _cartesianparam.new()
     self.assertEqual(0, obj.ysize)
     try:
         obj.ysize = 10
         self.fail("Expected AttributeError")
     except AttributeError:
         pass
     self.assertEqual(0, obj.ysize)
Exemplo n.º 19
0
 def test_nodata_typeError(self):
     obj = _cartesianparam.new()
     self.assertAlmostEqual(0.0, obj.nodata, 4)
     try:
         obj.nodata = 10
         self.fail("Expected TypeError")
     except TypeError:
         pass
     self.assertAlmostEqual(0.0, obj.nodata, 4)
Exemplo n.º 20
0
 def test_gain_typeError(self):
     obj = _cartesianparam.new()
     self.assertAlmostEqual(1.0, obj.gain, 4)
     try:
         obj.gain = 10
         self.fail("Expected TypeError")
     except TypeError:
         pass
     self.assertAlmostEqual(1.0, obj.gain, 4)
Exemplo n.º 21
0
    def test_getParameterCount(self):
        obj = _cartesian.new()
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(numpy.zeros((240, 240), numpy.uint8))
        param2 = _cartesianparam.new()
        param2.quantity = "MMH"
        param2.setData(numpy.zeros((240, 240), numpy.uint8))
        param3 = _cartesianparam.new()
        param3.quantity = "MMH"
        param3.setData(numpy.zeros((240, 240), numpy.uint8))

        self.assertEqual(0, obj.getParameterCount())
        obj.addParameter(param)
        self.assertEqual(1, obj.getParameterCount())
        obj.addParameter(param2)
        self.assertEqual(2, obj.getParameterCount())
        obj.addParameter(param3)
        self.assertEqual(2, obj.getParameterCount())
Exemplo n.º 22
0
    def test_setData_uint64(self):
        obj = _cartesianparam.new()
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.uint64), numpy.uint64)
        a = numpy.reshape(a, (12, 10)).astype(numpy.uint64)

        obj.setData(a)

        self.assertEqual(_rave.RaveDataType_ULONG, obj.datatype)
        self.assertEqual(10, obj.xsize)
        self.assertEqual(12, obj.ysize)
Exemplo n.º 23
0
    def test_setConvertedValue_roundOff(self):
        obj = _cartesianparam.new()
        obj.nodata = 255.0
        obj.undetect = 0.0
        obj.gain = 0.4
        obj.offset = -30.0

        # test uint8
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.uint8), numpy.uint8)
        a = numpy.reshape(a, (12, 10)).astype(numpy.uint8)
        obj.setData(a)

        obj.setConvertedValue((0, 1), -0.5)

        r = obj.getValue((0, 1))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(74.0, r[1], 4)

        #test int8
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.int8), numpy.int8)
        a = numpy.reshape(a, (12, 10)).astype(numpy.int8)
        obj.setData(a)

        obj.setConvertedValue((0, 1), 1.5)

        r = obj.getValue((0, 1))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(79.0, r[1], 4)

        #test uint
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.uint), numpy.uint)
        a = numpy.reshape(a, (12, 10)).astype(numpy.uint)
        obj.setData(a)

        obj.setConvertedValue((0, 1), 2.25)

        r = obj.getValue((0, 1))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(81.0, r[1], 4)

        #test int
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.int), numpy.int)
        a = numpy.reshape(a, (12, 10)).astype(numpy.int)
        obj.setData(a)

        obj.setConvertedValue((0, 1), -1.75)

        r = obj.getValue((0, 1))
        self.assertEqual(_rave.RaveValueType_DATA, r[0])
        self.assertAlmostEqual(71.0, r[1], 4)
Exemplo n.º 24
0
    def test_getConvertedQualityValueAtLonLat(self):
        obj = _cartesian.new()
        obj.projection = _rave.projection(
            "gnom", "gnom",
            "+proj=gnom +R=6371000.0 +lat_0=56.3675 +lon_0=12.8544")
        obj.xscale = 100.0
        obj.yscale = 100.0

        xy = obj.projection.fwd(deg2rad((12.8544, 56.3675)))
        obj.areaextent = (xy[0] - 4 * 100.0, xy[1] - 5 * 100.0,
                          xy[0] + 6 * 100.0, xy[1] + 5 * 100.0)
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.nodata = 255.0
        param.undetect = 0.0

        a = numpy.zeros((11, 9))
        a = numpy.array(a.astype(numpy.float64), numpy.float64)
        a = numpy.reshape(a, (11, 9)).astype(numpy.float64)

        param.setData(a)

        qf = numpy.arange(99)
        qf = numpy.array(qf.astype(numpy.float64), numpy.float64)
        qf = numpy.reshape(qf, (11, 9)).astype(numpy.float64)

        qf2 = numpy.arange(99)
        qf2 = numpy.array(qf.astype(numpy.float64), numpy.float64)
        qf2 = numpy.reshape(qf, (11, 9)).astype(numpy.float64)
        qf2[5][4] = 199.0

        field1 = _ravefield.new()
        field1.addAttribute("how/task", "se.task.1")
        field1.addAttribute("what/offset", 10.0)
        field1.addAttribute("what/gain", 2.0)
        field1.setData(qf)
        param.addQualityField(field1)

        field2 = _ravefield.new()
        field2.addAttribute("how/task", "se.task.2")
        field2.addAttribute("what/gain", 3.0)
        field2.setData(qf2)
        param.addQualityField(field2)

        obj.addParameter(param)
        obj.defaultParameter = "DBZH"

        #expected = obj.getConvertedValue((4,5))
        result = obj.getConvertedQualityValueAtLonLat(
            deg2rad((12.8544, 56.3675)), "se.task.1")
        self.assertAlmostEqual(10.0 + 2.0 * 49.0, result, 4)
        result = obj.getConvertedQualityValueAtLonLat(
            deg2rad((12.8544, 56.3675)), "se.task.2")
        self.assertAlmostEqual(3.0 * 199.0, result, 4)
Exemplo n.º 25
0
    def test_addParameter_no_quantity(self):
        obj = _cartesian.new()

        param = _cartesianparam.new()
        param.setData(numpy.zeros((10, 10), numpy.uint8))

        try:
            obj.addParameter(param)
            self.fail("Expected AttributeError")
        except AttributeError:
            pass
Exemplo n.º 26
0
    def test_accumulate_tofewfiles(self):
        p1 = _cartesianparam.new()
        p1.quantity = "DBZH"
        p1.setData(reshape(array((NO_DATA, 0, 0, 0), uint8), (2, 2)))
        p1.nodata, p1.undetect, p1.gain, p1.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d1 = _ravefield.new()
        d1.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d1.setData(reshape(array((0, 100, 75, 50), uint8), (2, 2)))
        d1.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p1.addQualityField(d1)

        p2 = _cartesianparam.new()
        p2.quantity = "DBZH"
        p2.setData(reshape(array((0, NO_DATA, 0, 0), uint8), (2, 2)))
        p2.nodata, p2.undetect, p2.gain, p2.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d2 = _ravefield.new()
        d2.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d2.setData(reshape(array((10, 20, 25, 50), uint8), (2, 2)))
        d2.addAttribute("how/task", "se.smhi.composite.distance.radar")
        p2.addQualityField(d2)

        obj = _acrr.new()
        obj.nodata = ACRR_NO_DATA
        obj.undetect = UNDETECT
        obj.sum(p1, 200.0, 1.6)
        obj.sum(p2, 200.0, 1.6)

        result = obj.accumulate(0.0, 3, 1.0)

        self.assertAlmostEqual(1.0, result.getAttribute("what/prodpar"), 4)
        self.assertEqual("ACRR", result.quantity)
        self.assertAlmostEqual(ACRR_NO_DATA, result.nodata, 4)
        self.assertAlmostEqual(UNDETECT, result.undetect, 4)

        refAcrr = [ACRR_NO_DATA, ACRR_NO_DATA, ACRR_NO_DATA, ACRR_NO_DATA]
        Acrr = result.getData().flatten()
        for i in range(len(refAcrr)):
            self.assertAlmostEqual(Acrr[i], refAcrr[i], 2)
Exemplo n.º 27
0
    def test_getParameterNames(self):
        obj = _cartesian.new()
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(numpy.zeros((240, 240), numpy.uint8))
        param2 = _cartesianparam.new()
        param2.quantity = "MMH"
        param2.setData(numpy.zeros((240, 240), numpy.uint8))

        result = obj.getParameterNames()
        self.assertEqual(0, len(result))

        obj.addParameter(param)
        result = obj.getParameterNames()
        self.assertEqual(1, len(result))
        self.assertTrue("DBZH" in result)

        obj.addParameter(param2)
        result = obj.getParameterNames()
        self.assertEqual(2, len(result))
        self.assertTrue("DBZH" in result)
        self.assertTrue("MMH" in result)
Exemplo n.º 28
0
    def test_datatypes_fromData(self):
        types = [(numpy.int8, _rave.RaveDataType_CHAR),
                 (numpy.uint8, _rave.RaveDataType_UCHAR),
                 (numpy.int16, _rave.RaveDataType_SHORT),
                 (numpy.int32, _rave.RaveDataType_INT),
                 (numpy.int64, _rave.RaveDataType_LONG),
                 (numpy.float32, _rave.RaveDataType_FLOAT),
                 (numpy.float64, _rave.RaveDataType_DOUBLE)]

        obj = _cartesianparam.new()
        for type in types:
            d = numpy.zeros((10, 10), type[0])
            obj.setData(d)
            self.assertEqual(type[1], obj.datatype)
Exemplo n.º 29
0
    def test_getData_int8(self):
        obj = _cartesianparam.new()
        a = numpy.arange(120)
        a = numpy.array(a.astype(numpy.int8), numpy.int8)
        a = numpy.reshape(a, (12, 10)).astype(numpy.int8)

        obj.setData(a)
        obj.setValue((3, 2), 5)
        obj.setValue((4, 4), 7)

        result = obj.getData()
        self.assertEqual(5, result[2][3])
        self.assertEqual(7, result[4][4])
        self.assertEqual("int8", result.dtype.name)
Exemplo n.º 30
0
    def test_isTransformable_noproj(self):
        data = numpy.zeros((10, 10), numpy.float64)

        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.setData(data)

        obj = _cartesian.new()
        obj.xscale = 1000.0
        obj.yscale = 1000.0

        obj.addParameter(param)

        self.assertEqual(False, obj.isTransformable())