我一直在使用此处发布的代码将栅格的像元大小与另一个栅格相匹配。更具体地说,我有 20m 单元格\像素大小的 sentinel-2 波段(jp2 格式)波段,我想将其拆分\重新采样\调整大小为 10m。到目前为止,我所做的非常有效的是使用我添加的链接中的脚本,我在其中输入了两个栅格:20m 波段和另一个 10m 波段。它们都具有相同的空间范围,相同的 crs。我现在遇到的奇怪问题是这个脚本仍然可以工作,但是输出光栅大小约为 500mb,而原始大小约为 1000kb。我不明白为什么会发生这种情况。有任何想法吗?我在 win 10 机器上使用 python 3。如果您有另一种使用gdal
或拆分单元格大小的方法rasterio
或其他 python 库,它也可以提供帮助。我只想将每 20m 像素拆分为 4 个 10m 像素,具有相同的值,即每个新的 10m 单元格将具有与 20m 单元格相同的值。我正在发布我正在使用的代码:
from osgeo import gdal, gdalconst
# Source
src_filename = r'C:\SN2 sr\T36SXB_20180406T081601_B05_20m.jp2'
src = gdal.Open(src_filename, gdalconst.GA_ReadOnly)
src_proj = src.GetProjection()
src_geotrans = src.GetGeoTransform()
# We want a section of source that matches this:
match_filename = r"C:\SN2 sr\T36SXB_20180406T081601_B04_10m.jp2"
match_ds = gdal.Open(match_filename, gdalconst.GA_ReadOnly)
match_proj = match_ds.GetProjection()
match_geotrans = match_ds.GetGeoTransform()
wide = match_ds.RasterXSize
high = match_ds.RasterYSize
# Output / destination
dst_filename = r'C:\SN2 sr\try5.jp2'
dst = gdal.GetDriverByName('Gtiff').Create(dst_filename, wide, high, 1, gdalconst.GDT_Float32)
dst.SetGeoTransform( match_geotrans )
dst.SetProjection( match_proj)
# Do the work
gdal.ReprojectImage(src, dst, src_proj, match_proj, gdalconst.GRA_NearestNeighbour)
del dst # Flush
print ("finish")