使用python将png转tif文件

将第一个png文件转为tif格式文件,再从第二个tif文件中读取地理信息并写入新生成的tif文件中
注意:在运行脚本之前,需要安装 GDAL 库。可以使用以下命令在 Python 中进行安装:

pip install gdal
import os
import sys
from osgeo import gdal

def png_to_tif(png_file, tif_file):
    input_dataset = gdal.Open(png_file)
    output_driver = gdal.GetDriverByName('GTiff')
    output_dataset = output_driver.CreateCopy(tif_file, input_dataset)
    input_dataset = None
    output_dataset = None

def set_geotransform(tif_file, new_tif_file):
    input_dataset = gdal.Open(tif_file)
    output_dataset = gdal.Open(new_tif_file, gdal.GA_Update)
    output_dataset.SetGeoTransform(input_dataset.GetGeoTransform())
    output_dataset.SetProjection(input_dataset.GetProjection())
    input_dataset = None
    output_dataset = None

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print("Usage: png_to_tif.py input_file output_file")
        sys.exit(1)
    png_file = sys.argv[1]
    tif_file = sys.argv[2]
    new_tif_file = os.path.splitext(png_file)[0] + "_new.tif"
    png_to_tif(png_file, new_tif_file)
    set_geotransform(tif_file, new_tif_file)
    print("PNG to TIFF conversion and geotransform assignment complete.")

使用方法:

将上述代码保存在 png_to_tif.py 文件中;
在命令行中运行 python png_to_tif.py input_file tif_file 命令,其中 input_file 是待转换的 PNG 文件路径,tif_file 是用于提取地理信息的 TIFF 文件路径。

首先,我们定义了一个 png_to_tif() 函数,它将输入的 PNG 文件转换为 TIFF 文件。该函数使用 gdal.Open() 方法打开输入 PNG 文件,并使用 gdal.GetDriverByName() 方法获取创建 GeoTIFF 文件的驱动程序。然后,使用 CreateCopy() 方法创建一个新的 TIFF 文件,并将输入 PNG 文件的数据复制到新的 TIFF 文件中。最后,关闭数据集以释放资源。

接下来,我们定义了一个 set_geotransform() 函数,它从指定的 TIFF 文件中提取地理信息,并将其赋予新的 TIFF 文件。该函数使用 gdal.Open() 方法打开指定的 TIFF 文件,然后使用 GetGeoTransform() 和 GetProjection() 方法从该文件中获取地理信息,并使用 SetGeoTransform() 和 SetProjection() 方法将这些信息赋予新的 TIFF 文件。最后,关闭数据集以释放资源。

在主函数中,我们首先检查命令行参数的数量是否正确,如果不正确,则打印出用法信息并退出脚本。然后,我们从命令行参数中获取输入 PNG 文件路径和用于提取地理信息的 TIFF 文件路径。我们使用 os.path.splitext() 方法来获取输入 PNG 文件的文件名,并将其与 _new.tif 连接起来,以创建新的 TIFF 文件名。接下来,我们调用 png_to_tif() 函数将输入 PNG 文件转换为新的 TIFF 文件,并调用 set_geotransform() 函数将指定 TIFF 文件的地理信息赋予新的 TIFF 文件。最后,我们打印出完成信息。

请注意,这个脚本假设输入的 PNG 文件和指定的 TIFF 文件具有相同的空间参考和分辨率。如果它们不一样,那么输出的 TIFF 文件可能会有问题。

你可能感兴趣的:(labelme相关脚本,python,开发语言)