【问题标题】:Simplest way to save array into raster file in Python在 Python 中将数组保存到光栅文件中的最简单方法
【发布时间】:2016-06-06 01:27:30
【问题描述】:

有一个 (100, 100) 形状的二维数组,我想将它保存到 .tiff 格式的光栅文件中。

我可以使用gdal 包来读取已经存在的tiff 文件。但我仍然找不到将二维数组转换为 tiff 文件的简单方法。

使用plt.imsave("xx.tif",array)

def array_to_raster(array):
    """Array > Raster
    Save a raster from a C order array.
    :param array: ndarray
     """
    dst_filename = 'xxx.tiff'
    x_pixels = 100  # number of pixels in x
    y_pixels = 100  # number of pixels in y
    driver = gdal.GetDriverByName('GTiff')
    dataset = driver.Create(
           dst_filename,
           x_pixels,
           y_pixels,
           1,
           gdal.GDT_Float32, )
    dataset.GetRasterBand(1).WriteArray(array)
    dataset.FlushCache()  # Write to disk.
    return dataset, dataset.GetRasterBand(1)  

他们都没有达到我的目标。第二种方法改编自here,它可以将数组转换为带有投影的geotiff

有没有一些简单的方法可以将数组保存到.tiff,所以下次我可以通过导入tiff文件来调用它。

任何建议将不胜感激。

【问题讨论】:

    标签: python arrays gis tiff raster


    【解决方案1】:

    tif 栅格可以被视为“array+proj+geotransforms”。 如果你想写一个数组到tif,可以参考下面的代码

    dst_filename = 'xxx.tiff'
    x_pixels = 100  # number of pixels in x
    y_pixels = 100  # number of pixels in y
    driver = gdal.GetDriverByName('GTiff')
    dataset = driver.Create(dst_filename,x_pixels, y_pixels, 1,gdal.GDT_Float32)
    dataset.GetRasterBand(1).WriteArray(array)
    
    # follow code is adding GeoTranform and Projection
    geotrans=data0.GetGeoTransform()  #get GeoTranform from existed 'data0'
    proj=data0.GetProjection() #you can get from a exsited tif or import 
    dataset.SetGeoTransform(geotrans)
    dataset.SetProjection(proj)
    dataset.FlushCache()
    dataset=None
    

    【讨论】:

    • 作为记录,最后 4 行应为:dataset.SetGeoTransform(geotrans)dataset.SetProjection(proj)dataset.FlushCache()dataset=None
    • outds 是什么?
    【解决方案2】:

    使用 imageio 的最简单方法

    如果你不关心它的投影,它就是一个单线:

    import imageio
    imageio.imwrite('test.tiff', [[0,255],[255,0]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-15
      • 2018-09-01
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多