栅格重投影

利用 gdal.AutoCreateWarpedVRT 将栅格数据从一个投影变换到另一个投影。

重采样方法

常量 描述
GRA_NearestNeighbour 最邻近法是最快的重采样方法;因为没有新值创建,此方法可将像素值的更改内容最小化。
适用于离散数据,例如土地覆被。
GRA_Bilinear 双线性插值可通过计算(距离权重)周围 4 像素的平均值来计算每个像素的值。
适用于连续数据。
GRA_Cubic 三次卷积插值法通过根据周围的 16 像素拟合平滑曲线来计算每个像素的值。此操作将生成平滑影像,但可创建位于源数据中超出范围外的值。
适用于连续数据。
GRA_Mode 众数重采样法基于 3 x 3 窗口中出现频率最高的值来确定每个像素的值。
适用于离散数据。
GRA_CubicSpline 三次样条
GRA_Lanczos Lanczos窗口
GRA_Average 平均
GRA_Max 最大
GRA_Med 中值
GRA_Min 最小
GRA_Q1 第一个四分位数
GRA_Q3 第三个四分位数

VRT

以 XML 格式保存的虚拟文件。参考:GDAL Virtual Format Tutorial

AutoCreateWarpedVRT

Function
AutoCreateWarpedVRT(*args)
AutoCreateWarpedVRT(Dataset src_ds, char const src_wkt=None, char const dst_wkt=None, GDALResampleAlg eResampleAlg, double maxerror=0.0) -> Dataset

AutoCreateWarpedVRT 函数不会在磁盘上创建 VRT 文件,返回一个数据集对象(Dataset),然后使用 CreateCopy 将其保存为其他格式。以下示例保存为 GeoTIFF 格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def reproject_raster(in_raster, out_raster, wkid, resampling_type=gdal.GRA_Bilinear):
"""
栅格重投影
:param in_raster: 输入栅格
:param out_raster: 输出栅格
:param wkid: wkid
:param resampling_type: 重采样方法
:return:
"""

srs = osr.SpatialReference()
srs.ImportFromEPSG(wkid)
in_ds = gdal.Open(in_raster)
vrt_ds = gdal.AutoCreateWarpedVRT(in_ds, in_ds.GetProjection(), srs.ExportToWkt(), resampling_type)
gdal.GetDriverByName('GTiff').CreateCopy(out_raster, vrt_ds)
in_ds = None

重投影及结果

1
reproject_raster('cq_4326.tif', 'cq_3857.tif', 3857)

1


0%