python:GDAL的gdal.Warp功能及应用示例:裁剪与坐标系转换

本文介绍了GDAL库中的gdal.Warp函数,详细讲解了如何使用它进行数据裁剪(通过cutlineDSName和cropToCutline参数)以及坐标系转换(通过dstSRS参数),提供了Python示例代码以展示其在实际应用中的操作和效果。
摘要由CSDN通过智能技术生成

了解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为双线性插值算法,这是一种常用的重采样方法,适用于大多数情况。

结果:感觉这两个坐标系差别不大,没有很明显的偏移

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guyuecc0906

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值