Exemple #1
0
    def testPPI(self):
        volume = _raveio.open(self.VOLUMENAME).object

        transformer = _rave.transform()
        transformer.method = _rave.NEAREST

        a = area.area("ang_240")
        param = _rave.cartesianparam()
        param.nodata = 255.0
        param.undetect = 0.0
        param.quantity = "DBZH"
        param.setData(numpy.zeros((a.ysize, a.xsize), numpy.uint8))

        cartesian = _rave.cartesian()
        cartesian.xscale = a.xscale
        cartesian.yscale = a.yscale
        cartesian.areaextent = a.extent
        cartesian.date = "20100101"
        cartesian.time = "090000"
        cartesian.source = volume.source
        cartesian.product = _rave.Rave_ProductType_CAPPI
        cartesian.objectType = _rave.Rave_ObjectType_IMAGE
        cartesian.areaextent = a.extent
        cartesian.projection = _rave.projection(a.Id, a.name,
                                                pcs.pcs(a.pcs).tostring())

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

        scan = volume.getScan(0)
        transformer.ppi(scan, cartesian)

        rio = _raveio.new()
        rio.object = cartesian
        rio.save("cartesian_ppi.h5")
Exemple #2
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())
Exemple #3
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)
Exemple #4
0
 def test_projection(self):
     obj = _cartesian.new()
     proj = _rave.projection(
         "x", "y",
         "+proj=stere +ellps=bessel +lat_0=90 +lon_0=14 +lat_ts=60 +datum=WGS84"
     )
     obj.projection = proj
     self.assertTrue(proj == obj.projection)
Exemple #5
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)
Exemple #6
0
 def test_translate_from_projection_to_wkt_mercator(self):
     proj = _rave.projection(
         "myid", "mercator",
         "+proj=merc +lat_ts=0 +lon_0=0 +k_0=1.0 +R=6378137.0 +no_defs")
     result = _rave.translate_from_projection_to_wkt(proj)
     self.check_value_in_list(result, "grid_mapping_name", "mercator")
     self.check_value_in_list(result, "longitude_of_projection_origin", 0.0)
     self.check_value_in_list(result, "standard_parallel", 0.0)
     self.check_value_in_list(result, "scale_factor_at_projection_origin",
                              1.0)
     self.check_value_in_list(result, "earth_radius", 6378137.0)
Exemple #7
0
 def test_translate_from_projection_to_wkt_aea(self):
     proj = _rave.projection(
         "myid", "aea",
         "+proj=aea +lat_0=1 +lon_0=2 +x_0=14 +y_0=60 +lat_1=12 +lat_2=13")
     result = _rave.translate_from_projection_to_wkt(proj)
     self.check_value_in_list(result, "grid_mapping_name",
                              "albers_conical_equal_area")
     self.check_value_in_list(result, "latitude_of_projection_origin", 1.0)
     self.check_value_in_list(result, "longitude_of_central_meridian", 2.0)
     self.check_value_in_list(result, "false_easting", 14.0)
     self.check_value_in_list(result, "false_northing", 60.0)
     self.check_value_in_list(result, "standard_parallel", [12.0, 13.0])
Exemple #8
0
 def Xtest_translate_from_projection_to_wkt_leac(self):
     proj = _rave.projection(
         "myid", "leac",
         "+proj=leac +lat_ts=0 +lon_0=0 +k_0=1.0 +R=6378137.0 +no_defs")
     result = _rave.translate_from_projection_to_wkt(proj)
     self.check_value_in_list(result, "grid_mapping_name",
                              "lambert_cylindrical_equal_area")
     self.check_value_in_list(result, "longitude_of_projection_origin", 0.0)
     self.check_value_in_list(result, "standard_parallel", 0.0)
     self.check_value_in_list(result, "scale_factor_at_projection_origin",
                              1.0)
     self.check_value_in_list(result, "earth_radius", 6378137.0)
Exemple #9
0
 def test_translate_from_projection_to_wkt_laea(self):
     proj = _rave.projection(
         "myid", "laea",
         "+proj=laea +lat_0=1 +lon_0=2 +x_0=14 +y_0=60 +R=6378137.0")
     result = _rave.translate_from_projection_to_wkt(proj)
     self.check_value_in_list(result, "grid_mapping_name",
                              "lambert_azimuthal_equal_area")
     self.check_value_in_list(result, "latitude_of_projection_origin", 1.0)
     self.check_value_in_list(result, "longitude_of_projection_origin", 2.0)
     self.check_value_in_list(result, "false_easting", 14.0)
     self.check_value_in_list(result, "false_northing", 60.0)
     self.check_value_in_list(result, "earth_radius", 6378137.0)
Exemple #10
0
    def test_isTransformable_nodata(self):
        proj = _rave.projection(
            "x", "y",
            "+proj=stere +ellps=bessel +lat_0=90 +lon_0=14 +lat_ts=60 +datum=WGS84"
        )

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

        obj.projection = proj

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