Python 使用GDAL 1.6.1创建CFloat64 ENVI文件时出现问题
我正在尝试使用GDAL编写ENVI CFloat64文件:Python 使用GDAL 1.6.1创建CFloat64 ENVI文件时出现问题,python,image-processing,numpy,gdal,Python,Image Processing,Numpy,Gdal,我正在尝试使用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_
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
;但是,会创建空文件。你知道我做错了什么吗
编辑:我应该指定我可以读写EnviFloat32文件,这样驱动程序就在那里了。简而言之,当
driver.Create(…)
或gdal.Open(…)
等返回None
时,只有CFloat64我不能写…,这是gdal引发IOError
或指示给定驱动程序名称无效的方式。(或可能表明发生了另一种错误,但这两种情况似乎最有可能发生)
(我将跳过关于我多么不喜欢gdal的python绑定的咆哮…)
很明显,您没有做错任何事情(该示例在我的机器上创建了一个带全零的.bin文件和一个格式正确的.hdr文件)
假设它创建了一个空文件,那么您似乎拥有写入该文件的权限,因此这不是IO问题
这意味着:
gdal.GetDriverByName(“随机的”)
也将返回None
)gdalinfo--formats
的输出,并确保gdal是在支持ENVI文件的情况下编译的(不过我认为默认情况下应该是这样)
如果没有,请检查是否可以使用所有零值编写geotiff(或任何其他格式)。如果没有工作,则需要重新安装gdal
希望这能为你指明正确的方向 我认为问题与GDAL由于与ArcGIS冲突而放弃对该格式的支持有关(难以置信!),请参见此。简单的回答是:我不能这样做,因为我的版本是不可能的
不幸的是,目前还没有适用于较新版本的windows安装程序(到1.8版为止),而且在windows上从源代码构建几乎是不可能的。我的版本默认支持ENVI格式,gdal.GetDriverByName(“ENVI”)可以正常工作。我可以编写ENVI Float32文件没有问题,问题似乎只是在使用GDT_CFloat64编写文件时。对于事后添加ENVI标记方式的人来说,这与ENVI软件或编程无关,而是一种称为“ENVI”的格式。标记没有用处。