【问题标题】:Conversion of numpy 2d array to ENVI binary file through gdal通过 gdal 将 numpy 2d 数组转换为 ENVI 二进制文件
【发布时间】:2017-03-16 12:36:48
【问题描述】:

我有 SAR CEOS 格式文件,由数据文件、前导文件、空卷目录文件和卷目录文件组成。

我正在使用 gdal ReadAsArray 读取数据文件,然后我正在对这个二维数组进行操作,现在我想将此二维数组保存为 ENVI 二进制文件。

请指导如何在 Python 3.5 中执行此操作。

【问题讨论】:

    标签: python-3.x numpy gis geospatial gdal


    【解决方案1】:
    • 寻求教程网站的帮助:https://pcjericks.github.io/py-gdalogr-cookbook/
    • 比如

      的例子
      import gdal, ogr, os, osr
      import numpy as np
      
      def array2raster(newRasterfn,rasterOrigin,pixelWidth,pixelHeight,array):
          cols = array.shape[1]
          rows = array.shape[0]
          originX = rasterOrigin[0]
          originY = rasterOrigin[1]
      
          driver = gdal.GetDriverByName('ENVI')
          outRaster = driver.Create(newRasterfn, cols, rows, 1, gdal.GDT_Byte)
          outRaster.SetGeoTransform((originX, pixelWidth, 0, originY, 0, pixelHeight))
          outband = outRaster.GetRasterBand(1)
          outband.WriteArray(array)
          outRasterSRS = osr.SpatialReference()
          outRasterSRS.ImportFromEPSG(4326)
          outRaster.SetProjection(outRasterSRS.ExportToWkt())
          outband.FlushCache()
      
      def main(newRasterfn,rasterOrigin,pixelWidth,pixelHeight,array):
          reversed_arr = array[::-1] # reverse array so the tif looks like the array
          array2raster(newRasterfn,rasterOrigin,pixelWidth,pixelHeight,reversed_arr) # convert array to raster
      
      if __name__ == "__main__":
          rasterOrigin = (-123.25745,45.43013)
          pixelWidth = 10
          pixelHeight = 10
          newRasterfn = 'test.tif'
          array = np.array([[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                            [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                            [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1],
                            [ 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1],
                            [ 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1],
                            [ 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1],
                            [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1],
                            [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                            [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                            [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
      
          main(newRasterfn,rasterOrigin,pixelWidth,pixelHeight,array)
      

    【讨论】:

    • 您可能想提供一些信息,为什么我们需要“反转”数组。
    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 2013-06-30
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多