1

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だけ…

4

2 に答える 2

1

この問題は、ArcGIS との競合のために GDAL がフォーマットのサポートを中止したことに関連していると思います (信じられない!)。このバグ レポートを参照してください。簡単に言えば、私のバージョンでは不可能なので、できません。

残念ながら、新しいバージョン (現在は 1.8 まで) 用の Windows インストーラーはまだなく、Windows でソースからビルドすることはほとんど不可能です。

于 2011-03-17T19:33:29.613 に答える
1

一言で言えば、driver.Create(...)orgdal.Open(...)などが returnの場合、指定されたドライバー名が無効であることを or で示すNonegdal の方法です。IOError(または、別の種類のエラーが発生したことを示している可能性がありますが、これらの 2 つが最も可能性が高いようです)

(gdalのpythonバインディングがどれだけ嫌いかについての暴言はスキップします...)

明らかに何か間違ったことをしているわけではありません (この例では、すべてゼロの .bin ファイルと適切にフォーマットされた .hdr ファイルが、私のマシンで作成されます)。

空のファイルが作成されることを考えると、ファイルへの書き込み権限があるように見えるため、IO の問題ではありません。

これは、次のいずれかを意味します。

  1. お使いのバージョンの gdal は ENVI ファイルをサポートしていません (たとえば、同様gdal.GetDriverByName("something random")に返さNoneれます)。
  2. ENVI データセットのドライバーを作成するときに、Gdal で何らかの内部エラーが発生します。

の出力をgdalinfo --formats確認し、gdal が ENVI ファイルをサポートするようにコンパイルされていることを確認します (ただし、デフォルトではサポートされているはずです)。

そうでない場合は、すべてゼロの値で geotiff (またはその他の形式) を記述できるかどうかを確認してください。何も機能しない場合は、gdal を再インストールする必要があります。

あなたが正しい方向に向けられることを願っています!

于 2011-02-15T23:03:30.363 に答える