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