python读取和保存GeoTiff格式数据

前言

空间数据组织有两种基本形式:矢量数据和栅格数据,与计算机存储图像组织形式类似。GeoTIFF是一种基于 TIFF 的地理空间栅格数据存储格式,是目前被支持最广泛、最通用的空间栅格数据格式之一。
GeoTIFF是TIFF 格式的一种扩展, 支持地理空间参考的TIFF. GeoTIFF 是TIFF规范的一部分。

一、GDAL

GDAL是一个开源栅格空间数据转换库,ArcGIS、Google Earth等软件都在用它。用它来保存GeoTiff最合适不过。GDAL成为OSGeo的子项目后,作为一个Python的第三方库,GDAL被包含在osgeo这个名字空间里,所以安装时用:

conda install gdal
二、写入GeoTiff
from osgeo import gdal

def array2raster(outpath, data_array, geoTransform):
    """
    将数据写入GeoTiff栅格
    :param outpath:输出GeoTiff栅格文件路径+文件名
    :param data_array: 原写入数据
    :param geoTransform: 仿射矩阵,含有 6 个元素的元组, [左上角的x坐标, 像素宽度, 
    行旋转(通常为零), 左上角的y坐标, 列旋转(通常为零), 像素高度(北半球上图像为负值)]
    :return:
    """
    cols = data_array.shape[1]
    rows = data_array.shape[0]
    driver = gdal.GetDriverByName('Gtiff')
    outRaster = driver.Create(outpath, cols, rows, 1, gdal.GDT_Int16, options=["TILED=YES", "COMPRESS=LZW"])    # 压缩方式为LZW
    outRaster.SetGeoTransform(geoTransform)  # 参数2,6为水平垂直分辨率,参数3,5表示图片是指北的
    # 获取地理坐标系统信息,用于选取需要的地理坐标系统
    sr = osr.SpatialReference()
    sr.SetWellKnownGeogCS('WGS84')
    # 给新建图层赋予投影信息
    outRaster.SetProjection(sr.ExportToWkt())  # 将几何对象的数据导出为wkt格式
    outband = outRaster.GetRasterBand(1)
    outband.SetNoDataValue(-9999)      # NoData值设置
    outband.WriteArray(data_array)
    outRaster.FlushCache() # 将数据写入硬盘
三、读取GeoTiff

读取详细代码见上一篇博客中的第三部分数据解析,此处略。

END
参考资料
  • https://zhuanlan.zhihu.com/p/81860600/
  • https://www.jianshu.com/p/db376ac3f57f

你可能感兴趣的:(Python,天气雷达,GIS,python)