使用gdal1.6.1创建CFloat64 ENVI文件时出现问题

2024-10-04 07:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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)中的带区,因为outfileNone;但是,空文件确实被创建了。你知道我做错了什么吗?在

编辑:我应该指定我可以读写ENVI Float32文件,这样驱动程序就在那里了。只有我不会写的CFloat64。。。在


Tags: 文件fromimportnumpynonedriveroutfilegdal
2条回答

简而言之,当driver.Create(...)gdal.Open(...)等返回None,这是gdal提出IOError或指示比给定的驱动名更无效的方法。(或潜在地表明发生了另一种错误,但这两种似乎最有可能)

(我将跳过关于我有多么不喜欢gdal的python绑定的咆哮…)

显然您没有做错什么(这个例子在我的机器上创建了一个全是零的.bin文件和一个格式正确的.hdr文件)。在

假设它创建了一个空文件,那么您似乎有写入该文件的权限,因此这不是IO问题。在

这意味着:

  1. 您的gdal版本不支持ENVI文件(例如,gdal.GetDriverByName("something random")也将返回None
  2. Gdal在为ENVI数据集创建驱动程序时遇到了某种内部错误。在

检查gdalinfo formats的输出,并确保gdal是在支持ENVI文件的情况下编译的(不过,我认为默认情况下应该是这样)。在

如果不能,请检查是否可以用所有零值编写geotiff(或任何其他格式)。如果没有任何工作,您需要重新安装gdal。在

希望你能找到正确的方向!在

与地理信息系统的支持冲突是令人难以置信的,请参见bug report。简而言之,我不能这么做,因为我的版本是不可能的。在

不幸的是,仍然没有更新版本的windows安装程序(到现在的1.8),而且在windows上从源代码构建几乎是不可能的。在

相关问题 更多 >