本文整理匯總了Python中osgeo.gdal.GRA_Average方法的典型用法代碼示例。如果您正苦於以下問題:Python gdal.GRA_Average方法的具體用法?Python gdal.GRA_Average怎麽用?Python gdal.GRA_Average使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類osgeo.gdal
的用法示例。
在下文中一共展示了gdal.GRA_Average方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _upsample_from_gdalobj
# 需要導入模塊: from osgeo import gdal [as 別名]
# 或者: from osgeo.gdal import GRA_Average [as 別名]
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()
示例2: gdal_average
# 需要導入模塊: from osgeo import gdal [as 別名]
# 或者: from osgeo.gdal import GRA_Average [as 別名]
def gdal_average(dst_ds, src_ds, src_ds_mem, thresh):
"""
Perform subsampling of an image by averaging values
:param gdal.Dataset dst_ds: Destination gdal dataset object
:param str input_tif: Input geotif
:param float thresh: NaN fraction threshold
:return resampled_average: resampled image data
:rtype: ndarray
:return src_ds_mem: Modified in memory src_ds with nan_fraction in Band2. The nan_fraction
is computed efficiently here in gdal in the same step as the that of
the resampled average (band 1). This results is huge memory and
computational efficiency
:rtype: gdal.Dataset
"""
src_gt = src_ds.GetGeoTransform()
src_ds_mem.SetGeoTransform(src_gt)
data = src_ds_mem.GetRasterBand(1).ReadAsArray()
# update nan_matrix
# if data==nan, then 1, else 0
nan_matrix = np.isnan(data) # all nans due to phase data + coh masking if used
src_ds_mem.GetRasterBand(2).WriteArray(nan_matrix)
gdal.ReprojectImage(src_ds_mem, dst_ds, '', '', gdal.GRA_Average)
# dst_ds band2 average is our nan_fraction matrix
nan_frac = dst_ds.GetRasterBand(2).ReadAsArray()
resampled_average = dst_ds.GetRasterBand(1).ReadAsArray()
resampled_average[nan_frac >= thresh] = np.nan
return resampled_average, src_ds_mem
示例3: test_reproject_average_resampling
# 需要導入模塊: from osgeo import gdal [as 別名]
# 或者: from osgeo.gdal import GRA_Average [as 別名]
def test_reproject_average_resampling(self):
data = np.array([[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 2, 2, 7.],
[4, 7, 7, 2, 2, 7.],
[4, 7, 7, 10, 2, 7.]], dtype=np.float32)
src_ds = gdal.GetDriverByName('MEM').Create('', 6, 6, 1,
gdalconst.GDT_Float32)
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('', 3, 3, 1,
gdalconst.GDT_Float32)
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_Average)
got_data = dst_ds.GetRasterBand(1).ReadAsArray()
expected_data = np.array([[5.5, 7, 7],
[5.5, 7, 7],
[5.5, 8, 7]])
np.testing.assert_array_equal(got_data, expected_data)
示例4: test_reproject_average_resampling_with_2bands
# 需要導入模塊: from osgeo import gdal [as 別名]
# 或者: from osgeo.gdal import GRA_Average [as 別名]
def test_reproject_average_resampling_with_2bands(self):
data = np.array([[[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 2, 2, 7.],
[4, 7, 7, 2, 2, 7.],
[4, 7, 7, 10, 2, 7.]],
[[2, 0, 0, 0, 0, 0.],
[2, 0, 0, 0, 0, 2.],
[0, 1., 0, 0, 0, 1.],
[0, 0, 0, 0, 0, 2],
[0, 0, 0, 0, 0, 0.],
[0, 0, 0, 0, 0, 0.]]], dtype=np.float32)
src_ds = gdal.GetDriverByName('MEM').Create('', 6, 6, 2,
gdalconst.GDT_Float32)
src_ds.GetRasterBand(1).WriteArray(data[0, :, :])
src_ds.GetRasterBand(1).SetNoDataValue(2)
src_ds.GetRasterBand(2).WriteArray(data[1, :, :])
# src_ds.GetRasterBand(1).SetNoDataValue()
src_ds.SetGeoTransform([10, 1, 0, 10, 0, -1])
dst_ds = gdal.GetDriverByName('MEM').Create('', 3, 3, 2,
gdalconst.GDT_Float32)
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_Average)
got_data = dst_ds.GetRasterBand(1).ReadAsArray()
expected_data = np.array([[5.5, 7, 7],
[5.5, 7, 7],
[5.5, 8, 7]])
np.testing.assert_array_equal(got_data, expected_data)
band2 = dst_ds.GetRasterBand(2).ReadAsArray()
np.testing.assert_array_equal(band2, np.array([[1., 0., 0.5],
[0.25, 0., 0.75],
[0., 0., 0.]]))
示例5: get_raster_elevation
# 需要導入模塊: from osgeo import gdal [as 別名]
# 或者: from osgeo.gdal import GRA_Average [as 別名]
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
示例6: check
# 需要導入模塊: from osgeo import gdal [as 別名]
# 或者: from osgeo.gdal import GRA_Average [as 別名]
def check(driver_type):
temp_tif = tempfile.mktemp(suffix='.tif')
data = np.array([[[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 7, 2, 7.],
[4, 7, 7, 2, 2, 7.],
[4, 7, 7, 2, 2, 7.],
[4, 7, 7, 10, 2, 7.]],
[[2, 0, 0, 0, 0, 0.],
[2, 0, 0, 0, 0, 2.],
[0, 1., 0, 0, 0, 1.],
[0, 0, 0, 0, 0, 2],
[0, 0, 0, 0, 0, 0.],
[0, 0, 0, 0, 0, 0.]]], dtype=np.float32)
src_ds = gdal.GetDriverByName(driver_type).Create(temp_tif, 6, 6, 2,
gdalconst.GDT_Float32)
src_ds.GetRasterBand(1).WriteArray(data[0, :, :])
src_ds.GetRasterBand(1).SetNoDataValue(2)
src_ds.GetRasterBand(2).WriteArray(data[1, :, :])
src_ds.GetRasterBand(2).SetNoDataValue(3)
src_ds.SetGeoTransform([10, 1, 0, 10, 0, -1])
src_ds.FlushCache()
dst_ds = gdal.GetDriverByName('MEM').Create('', 3, 3, 2,
gdalconst.GDT_Float32)
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_Average)
band1 = dst_ds.GetRasterBand(1).ReadAsArray()
np.testing.assert_array_equal(band1, np.array([[5.5, 7, 7],
[5.5, 7, 7],
[5.5, 8, 7]]))
band2 = dst_ds.GetRasterBand(2).ReadAsArray()
np.testing.assert_array_equal(band2, np.array([[1., 0., 0.5],
[0.25, 0., 0.75],
[0., 0., 0.]]))
if os.path.exists(temp_tif):
try:
os.remove(temp_tif)
except PermissionError:
print("File opened by another process.")