> 文档中心 > python使用gdal读取tif经纬度

python使用gdal读取tif经纬度


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

python使用gdal读取tif经纬度

  • 前言
  • 一、tif是什么?
  • 二、使用gdal读取经纬度
  • 总结

前言

博主作为一个GIS开发者,开发过程中不免遇到一些处理tif的问题和心得,所以在这里向大家分享一下有关tif文件的经纬度坐标读取

一、tif是什么?

TIFF(Tag Image File Format)图像文件是图形图像处理中常用的格式之一,其图像格式很复杂,但由于它对图像信息的存放灵活多变,可以支持很多色彩系统,而且独立于操作系统,因此得到了广泛应用。在各种地理信息系统、摄影测量与遥感等应用中,要求图像具有地理编码信息,例如图像所在的坐标系、比例尺、图像上点的坐标、经纬度、长度单位及角度单位等等,这些都是tif的应用范围。简单说,tif是一张具有地理编码信息的图像。

二、使用gdal读取经纬度

1.引入库

GDAL是一个用于栅格和矢量地理空间数据格式的转换程序库,在X/MIT风格的开放源代码下发布许可 ,首先我们安装gdal

pip install gdal

2.读取坐标

代码如下:

from osgeo import gdalfilePath = '1.tif'  # tif文件路径dataset = gdal.Open(filePath)  # 打开tifadfGeoTransform = dataset.GetGeoTransform()  # 读取地理信息# 左上角地理坐标print(adfGeoTransform[0])print(adfGeoTransform[3])nXSize = dataset.RasterXSize  # 列数nYSize = dataset.RasterYSize  # 行数print(nXSize, nYSize)arrSlope = []  # 用于存储每个像素的(X,Y)坐标for i in range(nYSize):    row = []    for j in range(nXSize): px = adfGeoTransform[0] + i * adfGeoTransform[1] + j * adfGeoTransform[2] py = adfGeoTransform[3] + i * adfGeoTransform[4] + j * adfGeoTransform[5] col = [px, py]  # 每个像素的经纬度 row.append(col) print(col)    arrSlope.append(row)

上面的代码其实已经实现获取tif中经纬度,如果大家仔细研究一下会发现,其实我们使用的就是gdal里面的GetGeoTransform方法读取坐标,简单介绍一下该方法,该方法会返回以下六个参数

GT(0) 左上像素左上角的x坐标。
GT(1) w-e像素分辨率/像素宽度。
GT(2) 行旋转(通常为零)。
GT(3) 左上像素左上角的y坐标。
GT(4) 列旋转(通常为零)。
GT(5) n-s像素分辨率/像素高度(北上图像为负值)

总结

如果上述内容存在问题,欢迎大家批评指正