2014-09-28 1 views
0

Привет: В Windows 7 я вызываю GDAL_translate.exe и GDALwarp.exe из Python для повторной выборки и перепрограммирования однодиапазонного геотифа. Я попытался запустить GDALwarp самостоятельно, но он жаловался, что ему нужна информация о привязке в его входном файле. Таким образом, я сначала запускаю GDAL_translate и задаю координаты углов файла через флаг -a_ullr.GDAL_Translate создает выходной файл без значений данных - все нули и NaN

Я застреваю в GDAL_translate, который работает, но мой выходной файл содержит ничего, кроме NaNs и нулей. Кто-нибудь знает, что я делаю неправильно?

Обратите внимание, что необходимо указать флаг --config GDAL_DATA или получить «ERROR 4: Не удается открыть файл поддержки EPSG gcs.csv.»

# learn file upper left coordinate and lower right coordinate 
ulXgeo = geoTrans[0] + 0 * geoTrans[1] + 0 * geoTrans[2] 
ulYgeo = geoTrans[3] + 0 * geoTrans[4] + 0 * geoTrans[5] 
lrXgeo = geoTrans[0] + cols * geoTrans[1] + rows * geoTrans[2] 
lrYgeo = geoTrans[3] + cols * geoTrans[4] + rows * geoTrans[5] 
cornerCoors = ' ' + str(ulXgeo) + ' ' + str(ulYgeo) + ' ' + str(lrXgeo) + ' ' + str(lrYgeo) 

# infile and outfile 
inFile = os.path.abspath("file.tif") 
location = os.path.split(inFile) 
outFile = os.path.normpath(location[0] + r"\fileOut.tif") 

# GDAL_Translate to get reference coordinates in the output file 
gdalTranslate = r'C:\Program Files\GDAL\gdal_translate.exe' 
transcmd = r' --config GDAL_DATA "C:\Program Files\GDAL\gdal-data" -a_srs EPSG:4326 -a_ullr ' + cornerCoors + ' ' 
call(gdalTranslate + transcmd + inFile + ' ' + outFile) 

Спасибо!

ответ

1

Выяснил это! Перед запуском GDAL_translate, я создал выходной файл с помощью GDAL:

драйвер = gdal.GetDriverByName ('') GTiff outDs = driver.Create ('fileOut.tif', перевалы, строк, 1, GDT_Float32)

Я забыл выделить объект outDs перед вызовом GDAL_translate.

outDs = None

+0

Это [известная "Гоча"] (http://trac.osgeo.org/gdal/wiki/PythonGotchas). Вы также можете рассмотреть возможность использования [rasterio] (https://github.com/mapbox/rasterio), который лучше справляется с закрытием набора данных, используя метод 'with'-block или' close() ' , –