GeoTIFF

GeoTIFF


python读取tif的包很多,但大都只能读出图像像素值,不能读取到经纬度信息。原因:TIFF 简单理解就是一种图像格式,类似于 jpg、png 等。GeoTIFF 就是在普通 TIFF 文件上增加了地理位置、投影信息、坐标信息等,常用于遥感数据,所以要使用读取GeoTIFF的库进行信息读取。

GeoTIFF使用gdal进行读取,GDAL 是一个开源的操作栅格数据和矢量数据的库,可用于读写、获取坐标系、获取指定位置像元值等。

GDAL读取tif文件:02 |

GDAL输出tif文件:03 |
输出tiff相关信息:07 |



来源


GeoTiff是一种遥感影像数据格式,它是一种栅格数据,这种数据是以像素点矩阵的形式存储的。

文件中的空间信息包括:投影信息仿射变换信息

其中,仿射变换(经纬度等)的信息分别为:

左上角的坐标(经度和纬度)、东西和南北方向的像素分辨率(也就是每个像素点的经纬度偏移量)以及图像的旋转系数(正北方向时为零)。

这样,每个像素点的坐标就可以通过它与左上角的偏移量和每个像素的分辨率值计算出来。

切图产生的新图的投影信息是不变的,但仿射信息会发生变化,因为左上角的原点可能跟原图不一样了。因此,需要重新计算仿射信息并设置(投影信息也需要设置,但不需要重新计算)。

ds = gdal.Open(base_tif)
proj = ds.GetProjection() # 投影信息
geotransform = ds.GetGeoTransform() # 仿射变换信息
结果:

GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]

(113.0, 0.00041174855888004394, 0.0, 23.0, 0.0, -0.00041174855888004394)

从仿射变化信息可以获取以下坐标值:

# x_min = geotransform[0]  ## 左上x
# y_max = geotransform[3]  ## 左上y
# x_max = x_min + geotransform[1] * ds.RasterXSize  # 右下x
# y_min = y_max + geotransform[5] * ds.RasterYSize  # 右下y



用GDAL切图/裁剪(GeoTiff格式)




BypInformation