检查tif四个角的坐标 以及总的像素个数

from osgeo import gdal  
import os

def print_corners_coordinates(tif_file):  
    if (tif_file.endswith('.TIF') or tif_file.endswith('.tif')):
        print('this is a tif file')
        # 打开TIF文件  
        dataset = gdal.Open(tif_file)  
        
        if dataset is None:  
            print("无法打开文件。")  
            return  
        
        # 获取TIF文件的宽度和高度  
        width = dataset.RasterXSize  
        height = dataset.RasterYSize  
        
        # 获取仿射变换参数  
        geotransform = dataset.GetGeoTransform()  
        print("当前geotransform的Y单位为:",geotransform[5])
        
        if not geotransform:  
            print("无法获取仿射变换参数。")  
            return  
        
        # 计算四个角的坐标  
        corners = {  
            "左上角": (0, 0),  
            "右上角": (width - 1, 0),  
            "左下角": (0, height - 1),  
            "右下角": (width - 1, height - 1)  
        }  

        # 打印四个角的坐标  
        for corner, (col, row) in corners.items():  
            x = geotransform[0] + col * geotransform[1] + row * geotransform[2]  
            y = geotransform[3] + col * geotransform[4] + row * geotransform[5]  
            print(f"{corner}: X={x}, Y={y}")  

    else:
        # 打开HDF中的band1文件
        print('this is  a hdf file')
        hdf_ds = gdal.Open(tif_file, gdal.GA_ReadOnly)
        subdatasets = hdf_ds.GetSubDatasets()
        subdataset = subdatasets[11][0] #MODIS_Grid_500m_2D:sur_refl_b01_1'
        dataset = gdal.Open(subdataset, gdal.GA_ReadOnly)
        if dataset is None:  
            print("无法打开文件。")  
            return  
        
        # 获取TIF文件的宽度和高度  
        width = dataset.RasterXSize  
        height = dataset.RasterYSize  
        
        # 获取仿射变换参数  
        geotransform = dataset.GetGeoTransform()  
        #geotransform[0]  10007554.677
        #geotransform[1]  463.31271652791725
        #geotransform[2]  0.0
        #geotransform[3]  4447802.078667
        #geotransform[4]  0.0
        #geotransform[5]  -463.3127165279167

        if not geotransform:  
            print("无法获取仿射变换参数。")  
            return  
        
        # 计算四个角的坐标  
        corners = {  
            "左上角": (0, 0),  
            "右上角": (width, 0),  
            "左下角": (0, height),  
            "右下角": (width, height)  
        }  

        # 打印四个角的坐标  
        for corner, (col, row) in corners.items():  
            x = geotransform[0] + col * geotransform[1] + row * geotransform[2]  
            y = geotransform[3] + col * geotransform[4] + row * geotransform[5]  
            print(f"{corner}: X={x}, Y={y}")  


# 使用示例  

print('my experiment data :')
hdf_subdataset_file_path = 'experiment_process/1experiment_data/MOD09GA.A2016013.h27v05.061.2021342065746.hdf'  
print('------------------coordinate range of original_landsat_file------------------')
print_corners_coordinates(hdf_subdataset_file_path)

使用gdal库,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值