首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GDAL 1.6.1创建CFloat64 ENVI文件时出现问题

使用GDAL 1.6.1创建CFloat64 ENVI文件时出现问题
EN

Stack Overflow用户
提问于 2011-02-16 01:08:24
回答 2查看 714关注 0票数 1

我正在尝试用GDAL编写ENVI CFloat64文件:

代码语言:javascript
复制
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 ...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-18 03:33:30

我认为这个问题与GDAL由于与ArcGIS冲突而放弃对该格式的支持有关(难以置信!),请参阅此bug report。简短的回答是:我做不到,因为我的版本不可能做到。

不幸的是,仍然没有用于更新版本的windows安装程序(到目前为止是1.8 ),在Windows上从源代码构建几乎是不可能的。

票数 1
EN

Stack Overflow用户

发布于 2011-02-16 07:03:30

简而言之,当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。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5006911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档