【问题标题】:GDAL Raster OutputGDAL 光栅输出
【发布时间】:2011-10-06 07:48:05
【问题描述】:

我正在尝试在 python 中使用 GDAL 创建一个 .tif 文件。它正在创建一个文件,但每当我浏览它时都会说“没有可用的预览”。现在,我只是想让它复制输入文件。这是我的代码:



gdal.AllRegister()

inDs = gdal.Open("C:\\Documents and Settings\\patrick\\Desktop\\tiff elevation\\EBK1KM\\color_a2.tif")
if inDs is None:
  print 'Could not open image file'
  sys.exit(1)
else:
    print "successfully opened input file"

rows = inDs.RasterYSize
cols = inDs.RasterXSize
myband = inDs.GetRasterBand(1)
elev_data = myband.ReadAsArray(0,0,cols,rows)
driver = inDs.GetDriver()
outDs = driver.Create('C:\\Documents and Settings\\patrick\\Desktop\\tiff elevation\\EBK1KM\\new.tif', cols, rows, 1, GDT_Int32)

if outDs is None:
    print "couldn't open output file"
    sys.exit(1)

outBand = outDs.GetRasterBand(1)
outData = numpy.zeros((rows,cols),numpy.int16)
outBand.WriteArray(elev_data)
outBand.FlushCache()
outBand.SetNoDataValue(-99)
outDs.SetGeoTransform(inDs.GetGeoTransform())
outDs.SetProjection(inDs.GetProjection())
del outData

=============================更新===================== ===================== 有了一些发现…… 我研究了使用统计归一化从一种数字格式转换为另一种数字格式的方法。我处理了输入数据并使用以下算法将其转换为 uint8:
std = elev_data.std() #standard dev
avg = elev_data.mean()
arr = numpy.zeros((rows,cols),numpy.uint8)
for _i_ in _range_(_rows_):
    for _j_ in _range_(_cols_):
        arr[i,j] = (((out_elev[i,j]-avg)/std)*127)+128 #normalization formula
        #this puts all vals in range 1 to 255 (uint8)
dr = gdal.GetDriverByName("GTiff")
outDs = dr.Create("name",cols,rows,3,GDT_Byte) 
#creates and RGB file, accepts uint8 for input
outDs.GetRasterBand(1).WriteArray(arr) #write the output as shades of red
#this writes out a format viewable by microsoft products

我想复制的主要原因是为了证明我可以读入,然后根据计算写出更新的数据。

有什么方法可以让我使用色带而不是仅使用一种颜色的阴影来写出输出数据?

【问题讨论】:

    标签: python io arcgis raster gdal


    【解决方案1】:

    您的意思是在尝试将 TIFF 文件预览为图像时,您从 Windows 图片和传真查看器应用程序中得到“没有可用的预览”? (见下面的截图。)

    请记住,有many different flavors of TIFF,并非所有都相同。特别是,Windows 图片和传真查看器不支持所有类型的 TIFF。

    有一篇 Microsoft 知识库文章 You Cannot View TIFF Images Using Windows Picture and Fax Viewer 部分内容如下:

    Windows XP 中的 Windows 图片和传真查看器使用 Windows 图形设备接口 (GDI+)。 GDI+ 支持许多标准的传真压缩算法。但是,它可能与一些不常用的编码方案不兼容。

    如果您正在寻找用于查看栅格数据(包括 GeoTIFF 栅格)的工具,我建议您免费使用 OpenEV,您可以将其作为 FWTools 软件包的一部分获得。

    【讨论】:

      【解决方案2】:

      我注意到的几件事:

      1. 您只复制源数据集的一个波段。如果是一种颜色 图像,它可能有 3 个波段,或一个彩色图。如果有彩色图, 你也需要复制它。如果是 3 或 4 个波段,你有 复制所有数据。
      2. CreateCopy() 是一种更简单的方式来满足您的需求。

      【讨论】:

      • 我发现了我的问题 - 我没有合适的查看器来查看我正在创建的输出文件的类型。微软产品不支持 Int16 进行查看。我下载并安装了 Brava Reader,它能够查看我可以生成的大多数形式的输出。
      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多