Python osgeo.gdal.GRA_NearestNeighbour() Examples
The following are 10
code examples of osgeo.gdal.GRA_NearestNeighbour().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
osgeo.gdal
, or try the search function
.
Example #1
Source File: gdal_python.py From PyRate with Apache License 2.0 | 6 votes |
def resample_nearest_neighbour(input_tif, extents, new_res, output_file): """ Nearest neighbor resampling and cropping of an image. :param str input_tif: input geotiff file path :param list extents: new extents for cropping :param list[float] new_res: new resolution for resampling :param str output_file: output geotiff file path :return: dst: resampled image :rtype: ndarray """ dst, resampled_proj, src, _ = _crop_resample_setup(extents, input_tif, new_res, output_file) # Do the work gdal.ReprojectImage(src, dst, '', resampled_proj, gdalconst.GRA_NearestNeighbour) return dst.ReadAsArray()
Example #2
Source File: gdal_python.py From PyRate with Apache License 2.0 | 6 votes |
def _alignment(input_tif, new_res, resampled_average, src_ds_mem, src_gt, tmp_ds): """ Correction step to match python multi-look/crop output to match that of Legacy data. Modifies the resampled_average array in place. """ src_ds = gdal.Open(input_tif) data = src_ds.GetRasterBand(1).ReadAsArray() xlooks = ylooks = int(new_res[0] / src_gt[1]) xres, yres = _get_resampled_data_size(xlooks, ylooks, data) nrows, ncols = resampled_average.shape # Legacy nearest neighbor resampling for the last # [yres:nrows, xres:ncols] cells without nan_conversion # turn off nan-conversion src_ds_mem.GetRasterBand(1).SetNoDataValue(LOW_FLOAT32) # nearest neighbor resapling gdal.ReprojectImage(src_ds_mem, tmp_ds, '', '', gdal.GRA_NearestNeighbour) # only take the [yres:nrows, xres:ncols] slice if nrows > yres or ncols > xres: resampled_nearest_neighbor = tmp_ds.GetRasterBand(1).ReadAsArray() resampled_average[yres - nrows:, xres - ncols:] = \ resampled_nearest_neighbor[yres - nrows:, xres - ncols:]
Example #3
Source File: test_gdal_python.py From PyRate with Apache License 2.0 | 6 votes |
def test_reproject_with_no_data(self): data = np.array([[2, 7], [2, 7]]) src_ds = gdal.GetDriverByName('MEM').Create('', 2, 2) src_ds.GetRasterBand(1).WriteArray(data) src_ds.GetRasterBand(1).SetNoDataValue(2) src_ds.SetGeoTransform([10, 1, 0, 10, 0, -1]) dst_ds = gdal.GetDriverByName('MEM').Create('', 1, 1) dst_ds.GetRasterBand(1).SetNoDataValue(3) dst_ds.GetRasterBand(1).Fill(3) dst_ds.SetGeoTransform([10, 2, 0, 10, 0, -2]) gdal.ReprojectImage(src_ds, dst_ds, '', '', gdal.GRA_NearestNeighbour) got_data = dst_ds.GetRasterBand(1).ReadAsArray() expected_data = np.array([[7]]) np.testing.assert_array_equal(got_data, expected_data)
Example #4
Source File: test_gdal_python.py From PyRate with Apache License 2.0 | 6 votes |
def test_reproject_with_no_data_2(self): data = np.array([[2, 7, 7, 7], [2, 7, 7, 2]]) height, width = data.shape src_ds = gdal.GetDriverByName('MEM').Create('', width, height) src_ds.GetRasterBand(1).WriteArray(data) src_ds.GetRasterBand(1).SetNoDataValue(2) src_ds.SetGeoTransform([10, 1, 0, 10, 0, -1]) dst_ds = gdal.GetDriverByName('MEM').Create('', 2, 1) dst_ds.GetRasterBand(1).SetNoDataValue(3) dst_ds.GetRasterBand(1).Fill(3) dst_ds.SetGeoTransform([10, 2, 0, 10, 0, -2]) gdal.ReprojectImage(src_ds, dst_ds, '', '', gdal.GRA_NearestNeighbour) got_data = dst_ds.GetRasterBand(1).ReadAsArray() expected_data = np.array([[7, 3]]) np.testing.assert_array_equal(got_data, expected_data)
Example #5
Source File: test_gdal_python.py From PyRate with Apache License 2.0 | 6 votes |
def test_reproject_with_no_data_3(self): data = np.array([[2, 7, 7, 7], [2, 7, 7, 7], [2, 7, 7, 7], [2, 7, 7, 2], [2, 7, 7, 2]]) src_ds = gdal.GetDriverByName('MEM').Create('', 4, 5) src_ds.GetRasterBand(1).WriteArray(data) src_ds.GetRasterBand(1).SetNoDataValue(2) src_ds.SetGeoTransform([10, 1, 0, 10, 0, -1]) dst_ds = gdal.GetDriverByName('MEM').Create('', 2, 2) dst_ds.GetRasterBand(1).SetNoDataValue(3) dst_ds.GetRasterBand(1).Fill(3) dst_ds.SetGeoTransform([10, 2, 0, 10, 0, -2]) gdal.ReprojectImage(src_ds, dst_ds, '', '', gdal.GRA_NearestNeighbour) got_data = dst_ds.GetRasterBand(1).ReadAsArray() expected_data = np.array([[7, 7], [7, 3]]) np.testing.assert_array_equal(got_data, expected_data)
Example #6
Source File: test_gdal_python.py From PyRate with Apache License 2.0 | 6 votes |
def test_reproject_with_no_data_5(self): data = np.array([[2, 7, 7, 7, 2], [2, 7, 7, 7, 2], [2, 7, 7, 7, 2], [2, 7, 7, 2, 2], [2, 7, 7, 2, 2], [2, 7, 7, 2, 2]]) src_ds = gdal.GetDriverByName('MEM').Create('', 5, 6) src_ds.GetRasterBand(1).WriteArray(data) src_ds.GetRasterBand(1).SetNoDataValue(2) src_ds.SetGeoTransform([10, 1, 0, 10, 0, -1]) dst_ds = gdal.GetDriverByName('MEM').Create('', 2, 3) dst_ds.GetRasterBand(1).SetNoDataValue(3) dst_ds.GetRasterBand(1).Fill(3) dst_ds.SetGeoTransform([10, 2, 0, 10, 0, -2]) gdal.ReprojectImage(src_ds, dst_ds, '', '', gdal.GRA_NearestNeighbour) got_data = dst_ds.GetRasterBand(1).ReadAsArray() expected_data = np.array([[7, 7], [7, 3], [7, 3]]) np.testing.assert_array_equal(got_data, expected_data)
Example #7
Source File: base.py From geoio with MIT License | 5 votes |
def _upsample_from_gdalobj(self,src,dst,method='bilinear'): """Hidden to run the actual reprojection gdal code that is called from two higher level methods.""" # Set reprojection method if isinstance(method,int): pass elif method == "nearest": method = gdal.GRA_NearestNeighbour elif method == "bilinear": method = gdal.GRA_Bilinear elif method == "cubic": method = gdal.GRA_Cubic elif method == "average": method = gdal.GRA_Average else: raise ValueError("requested method is not understood.") # Do the reprojection gdal.ReprojectImage(src, dst, self.meta.projection_string, dst.GetProjection(), method) # Return data and free the temp image. return dst.ReadAsArray()
Example #8
Source File: gdal2tiles.py From gdal2tiles with MIT License | 4 votes |
def scale_query_to_tile(dsquery, dstile, tiledriver, options, tilefilename=''): """Scales down query dataset to the tile dataset""" querysize = dsquery.RasterXSize tilesize = dstile.RasterXSize tilebands = dstile.RasterCount if options.resampling == 'average': # Function: gdal.RegenerateOverview() for i in range(1, tilebands+1): # Black border around NODATA res = gdal.RegenerateOverview(dsquery.GetRasterBand(i), dstile.GetRasterBand(i), 'average') if res != 0: exit_with_error("RegenerateOverview() failed on %s, error %d" % ( tilefilename, res)) elif options.resampling == 'antialias': # Scaling by PIL (Python Imaging Library) - improved Lanczos array = numpy.zeros((querysize, querysize, tilebands), numpy.uint8) for i in range(tilebands): array[:, :, i] = gdalarray.BandReadAsArray(dsquery.GetRasterBand(i+1), 0, 0, querysize, querysize) im = Image.fromarray(array, 'RGBA') # Always four bands im1 = im.resize((tilesize, tilesize), Image.ANTIALIAS) if os.path.exists(tilefilename): im0 = Image.open(tilefilename) im1 = Image.composite(im1, im0, im1) im1.save(tilefilename, tiledriver) else: if options.resampling == 'near': gdal_resampling = gdal.GRA_NearestNeighbour elif options.resampling == 'bilinear': gdal_resampling = gdal.GRA_Bilinear elif options.resampling == 'cubic': gdal_resampling = gdal.GRA_Cubic elif options.resampling == 'cubicspline': gdal_resampling = gdal.GRA_CubicSpline elif options.resampling == 'lanczos': gdal_resampling = gdal.GRA_Lanczos # Other algorithms are implemented by gdal.ReprojectImage(). dsquery.SetGeoTransform((0.0, tilesize / float(querysize), 0.0, 0.0, 0.0, tilesize / float(querysize))) dstile.SetGeoTransform((0.0, 1.0, 0.0, 0.0, 0.0, 1.0)) res = gdal.ReprojectImage(dsquery, dstile, None, None, gdal_resampling) if res != 0: exit_with_error("ReprojectImage() failed on %s, error %d" % (tilefilename, res))
Example #9
Source File: raster.py From wradlib with MIT License | 4 votes |
def get_raster_elevation(dataset, resample=None, **kwargs): """Return surface elevation corresponding to raster dataset The resampling algorithm is chosen based on scale ratio Parameters ---------- dataset : gdal.Dataset raster image with georeferencing (GeoTransform at least) resample : GDALResampleAlg If None the best algorithm is chosen based on scales. GRA_NearestNeighbour = 0, GRA_Bilinear = 1, GRA_Cubic = 2, GRA_CubicSpline = 3, GRA_Lanczos = 4, GRA_Average = 5, GRA_Mode = 6, GRA_Max = 8, GRA_Min = 9, GRA_Med = 10, GRA_Q1 = 11, GRA_Q3 = 12 kwargs : keyword arguments passed to wradlib.io.dem.get_strm() Returns ------- elevation : :class:`numpy:numpy.ndarray` Array of shape (rows, cols, 2) containing elevation """ extent = get_raster_extent(dataset) src_ds = wradlib.io.dem.get_srtm(extent, **kwargs) driver = gdal.GetDriverByName("MEM") dst_ds = driver.CreateCopy("ds", dataset) if resample is None: src_gt = src_ds.GetGeoTransform() dst_gt = dst_ds.GetGeoTransform() src_scale = min(abs(src_gt[1]), abs(src_gt[5])) dst_scale = min(abs(dst_gt[1]), abs(dst_gt[5])) ratio = dst_scale / src_scale resample = gdal.GRA_Bilinear if ratio > 2: resample = gdal.GRA_Average if ratio < 0.5: resample = gdal.GRA_NearestNeighbour gdal.ReprojectImage( src_ds, dst_ds, src_ds.GetProjection(), dst_ds.GetProjection(), resample ) elevation = read_gdal_values(dst_ds) return elevation
Example #10
Source File: gdal2tiles.py From gdal2tiles with MIT License | 4 votes |
def scale_query_to_tile(dsquery, dstile, tiledriver, options, tilefilename=''): """Scales down query dataset to the tile dataset""" querysize = dsquery.RasterXSize tilesize = dstile.RasterXSize tilebands = dstile.RasterCount if options.resampling == 'average': # Function: gdal.RegenerateOverview() for i in range(1, tilebands + 1): # Black border around NODATA res = gdal.RegenerateOverview(dsquery.GetRasterBand(i), dstile.GetRasterBand(i), 'average') if res != 0: exit_with_error("RegenerateOverview() failed on %s, error %d" % ( tilefilename, res)) elif options.resampling == 'antialias': # Scaling by PIL (Python Imaging Library) - improved Lanczos array = numpy.zeros((querysize, querysize, tilebands), numpy.uint8) for i in range(tilebands): array[:, :, i] = gdalarray.BandReadAsArray(dsquery.GetRasterBand(i + 1), 0, 0, querysize, querysize) im = Image.fromarray(array, 'RGBA') # Always four bands im1 = im.resize((tilesize, tilesize), Image.ANTIALIAS) if os.path.exists(tilefilename): im0 = Image.open(tilefilename) im1 = Image.composite(im1, im0, im1) im1.save(tilefilename, tiledriver) else: if options.resampling == 'near': gdal_resampling = gdal.GRA_NearestNeighbour elif options.resampling == 'bilinear': gdal_resampling = gdal.GRA_Bilinear elif options.resampling == 'cubic': gdal_resampling = gdal.GRA_Cubic elif options.resampling == 'cubicspline': gdal_resampling = gdal.GRA_CubicSpline elif options.resampling == 'lanczos': gdal_resampling = gdal.GRA_Lanczos # Other algorithms are implemented by gdal.ReprojectImage(). dsquery.SetGeoTransform((0.0, tilesize / float(querysize), 0.0, 0.0, 0.0, tilesize / float(querysize))) dstile.SetGeoTransform((0.0, 1.0, 0.0, 0.0, 0.0, 1.0)) res = gdal.ReprojectImage(dsquery, dstile, None, None, gdal_resampling) if res != 0: exit_with_error("ReprojectImage() failed on %s, error %d" % (tilefilename, res))