def test_n_pixels(self): """ Test that the correct number of random pixels are returned. The default return value is 100 pixels. """ dims = (100, 100) idx = ut.random_pixel_locations(dims) n = idx[0].shape[0] self.assertTrue(n == 100)
def test_lon_array(self): """ Test that the interpolated longitude array has sensible values. :notes: The default image that is used is a 1000 by 1000. This might be too small for a recursive depth of 7 (default within the NBAR framework). As such a depth of 3 is used and produced correct results. If a larger image is used, then the depth level should probably be increased. """ acq = acquisitions(LS5_SCENE1).get_acquisitions()[0] geobox = acq.gridded_geo_box() fid = create_lon_lat_grids(acq, depth=5) dataset_name = ppjoin(GroupName.LON_LAT_GROUP.value, DatasetName.LON.value) lon = fid[dataset_name][:] ids = ut.random_pixel_locations(lon.shape) # We'll transform (reproject) to WGS84 sr = osr.SpatialReference() sr.SetFromUserInput(CRS) # Get a list of x reprojected co-ordinates reprj = [] for i in range(ids[0].shape[0]): # Get pixel (x,y) xy = (ids[1][i], ids[0][i]) # Convert pixel to map mapXY = geobox.convert_coordinates(xy, centre=True) # Transform map to another crs x, _ = geobox.transform_coordinates(mapXY, to_crs=sr) reprj.append(x) reprj = numpy.array(reprj) lon_values = lon[ids] # A decimal degree co-ordinate should be correct up to the 6th dp self.assertIsNone(npt.assert_almost_equal(lon_values, reprj, decimal=5))