Проблема создания файлов CFloat64 ENVI с GDAL 1.6.1 - PullRequest
1 голос
/ 15 февраля 2011

Я пытаюсь записать файлы ENVI CFloat64 с помощью GDAL:

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, который я не могу написать ...

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Я думаю, что проблема была связана с удалением поддержки формата GDAL из-за конфликта с ArcGIS (невероятно!), См. отчет об ошибке .Короткий ответ: я не могу сделать это, потому что это невозможно с моей версией.

К сожалению, до сих пор нет установщика Windows для более новых версий (до 1.8 сейчас) и сборки из исходного кода на Windowsпочти невозможно.

1 голос
/ 16 февраля 2011

В двух словах, когда driver.Create(...) или gdal.Open(...) и т. Д. Возвращают None, это способ gdal поднять IOError или указать, что данное имя драйвера недопустимо. (Или, возможно, указывает на то, что произошла ошибка другого типа, но эти два, похоже, наиболее вероятны)

(Я пропущу разглагольствование о том, насколько мне не нравятся привязки gdal к Python ...)

Вы явно не делаете ничего плохого (в этом примере на моем компьютере создается файл .bin со всеми нулями и должным образом отформатированным файлом .hdr.).

Учитывая, что он создает пустой файл, у вас, похоже, есть разрешение на запись в файл, так что это не проблема ввода-вывода.

Это означает, что либо:

  1. Ваша версия gdal не поддерживает файлы ENVI (например, gdal.GetDriverByName("something random") также вернет None.)
  2. Gdal сталкивается с некоторой внутренней ошибкой при создании драйвера для набора данных ENVI.

Проверьте вывод gdalinfo --formats и убедитесь, что gdal скомпилирован с поддержкой файлов ENVI (хотя я думаю, что это должно быть по умолчанию).

Если нет, проверьте, можете ли вы написать геотиф (или любой другой формат) со всеми нулевыми значениями. Если ничего не работает, вам нужно переустановить gdal.

Надеюсь, что вас направят в правильном направлении!

...