了解gdal.Warp
gdal.Warp
是GDAL库中用于地理空间数据变换的函数。它可以执行多种变换操作,包括数据重采样、数据裁剪、重投影以及改变数据结构等。gdal.Warp
通过一系列参数,允许我们自定义输出数据的格式、分辨率、坐标系等属性,从而满足不同的数据处理需求。
数据裁剪
数据裁剪是GIS中常见的操作,它允许从较大的数据集中提取感兴趣区域(ROI)。在gdal.Warp
中,可以使用cutlineDSName
参数来指定裁剪的矢量边界,并通过cropToCutline
参数来控制是否按边界输出。
以下是一个Python函数,展示了如何使用gdal.Warp
进行数据裁剪:
from osgeo import gdal
def tif_clip(tiff_out_path, input_raster, geojson):
result = gdal.Warp(
tiff_out_path,
input_raster,
format='GTiff',
cutlineDSName=geojson, # 指定裁剪矢量文件,#shpfile也行
cropToCutline=True, # 按边界输出
dstNodata=0 # 设置输出结果无效值为0
)
result.FlushCache() # 确保所有数据都被写入磁盘
# 使用示例
tiff_out_path = r'F:\text\result\ceshiclip4.tif'
input_raster = r'F:\text\dongchengqu\Sentinel2_2023_J50E001010.tif'
geojson = r"C:\Users\DELL\Desktop\东城区.geojson"
tif_clip(tiff_out_path, input_raster, geojson)
在这个函数中,首先定义了输出路径、输入栅格数据集和裁剪矢量文件的路径。通过gdal.Warp
,我们指定了输出格式为GTiff,并设置cutlineDSName
为裁剪矢量文件的路径。cropToCutline
参数设置为True,表示希望输出的栅格数据集仅包含裁剪边界内的像素。最后,使用FlushCache
方法确保所有数据都被写入磁盘。
结果展示:
坐标系转换
坐标系转换是GIS数据处理中的另一项重要操作,它允许将数据从一个坐标参考系统(CRS)转换到另一个CRS。在gdal.Warp
中,我们可以使用dstSRS
参数来指定目标CRS。
以下是一个Python函数,展示了如何使用gdal.Warp
进行坐标系转换:
def wgs84_to_cgcs2000(input_raster, output_raster):
result = gdal.Warp(
output_raster,
input_raster,
format='GTiff',
resampleAlg='bilinear', # 指定重采样算法
dstSRS='EPSG:4490', # 设置目标CRS为CGCS2000
dstNodata=0 # 设置输出结果无效值为0
)
result.FlushCache()
# 使用示例
input_raster_path = r'F:\text\dongchengqu\Sentinel2_2023_J50E001010.tif'
output_raster_path = r'F:\text\result\ceshigcs2.tif'
wgs84_to_cgcs2000(input_raster_path, output_raster_path)
在这个函数中,定义了输入栅格数据集和输出路径。使用gdal.Warp
,指定输出格式为GTiff,并设置dstSRS
为CGCS2000的EPSG代码(这里以EPSG:4490为例)。还指定了resampleAlg
为双线性插值算法,这是一种常用的重采样方法,适用于大多数情况。
结果:感觉这两个坐标系差别不大,没有很明显的偏移