我正在尝试用GDAL编写ENVI CFloat64文件:
import numpy
from osgeo import gdal
from osgeo.gdalconst import GDT_CFloat64
a = numpy.zeros((1000, 1000), dtype='complex64')
driver = gdal.GetDriverByName("ENVI")
outfile = driver.Create("test.bin", 1000, 1000, 1, GDT_CFloat64)
outfile.GetRasterBand(1).WriteArray(a, 0, 0)
outfile = None但我不能将数组写入outfile.GetRasterBand(1).WriteArray(a, 0, 0)中的波段,因为outfile为None;但是,会创建空文件。你知道我做错了什么吗?
编辑:我应该指定我可以读写ENVI Float32文件,所以驱动程序就在那里。只有我不会写的CFloat64 ...
发布于 2011-03-18 03:33:30
我认为这个问题与GDAL由于与ArcGIS冲突而放弃对该格式的支持有关(难以置信!),请参阅此bug report。简短的回答是:我做不到,因为我的版本不可能做到。
不幸的是,仍然没有用于更新版本的windows安装程序(到目前为止是1.8 ),在Windows上从源代码构建几乎是不可能的。
发布于 2011-02-16 07:03:30
简而言之,当driver.Create(...)或gdal.Open(...)等返回None时,这是gdal引发IOError或指示给定驱动程序名称无效的方式。(或者可能表明发生了另一种类型的错误,但这两种错误似乎最有可能)
(我将跳过关于我有多不喜欢gdal的python绑定的大肆宣传……)
您显然没有做错什么(本例在我的机器上创建了一个全为零的.bin文件和一个格式正确的.hdr文件)。
假设它创建了一个空文件,您似乎有权限写入该文件,因此这不是IO问题。
这意味着:
gdal.GetDriverByName("something random")也将返回None )。检查gdalinfo --formats的输出,并确保gdal编译时支持ENVI文件(我认为它应该是默认的)。
如果不是,请检查是否可以使用全零值编写geotiff (或任何其他格式)。如果什么都不能工作,你需要重新安装gdal。
希望这能让你找到正确的方向!
https://stackoverflow.com/questions/5006911
复制相似问题