2012-01-27 2 views
3

Привет, новый для Gdal и im, борющийся с моими кодами. Все, кажется, хорошо работает в моем коде, а выходные полосы в конце пустые. Значение no data равно 256, когда я укажу 255, поэтому я действительно не знаю, что случилось. Спасибо, любая помощь будет оценена !!!Пустые выходы с python GDAL

Вот мой код

from osgeo import gdal 
from osgeo import gdalconst 
from osgeo import osr 
from osgeo import ogr 
import numpy 

#graticule 
src_ds = gdal.Open("E:\\NFI_photo_plot\\photoplotdownloadAllCanada\\provincial_merge\\Aggregate\\graticule1.tif") 
band = src_ds.GetRasterBand(1) 
band.SetNoDataValue(0) 
graticule = band.ReadAsArray() 
print('graticule done') 
band="none" 

#Biomass 
dataset1 = gdal.Open("E:\\NFI_photo_plot\\photoplotdownloadAllCanada\provincial_merge\\Aggregate\\Biomass_NFI.tif") 
band1 = dataset1.GetRasterBand(1) 
band1.SetNoDataValue(-1) 
Biomass = band1.ReadAsArray() 
maskbiomass = numpy.greater(Biomass, -1).astype(int) 
print("biomass done") 
Biomass="none" 
band1="none" 
dataset1="none" 

#Baseline 
dataset2 = gdal.Open("E:\\NFI_photo_plot\\Baseline\\TOTBM_250.tif") 
band2 = dataset2.GetRasterBand(1) 
band2.SetNoDataValue(0) 
baseline = band2.ReadAsArray() 
maskbaseline = numpy.greater(baseline, 0).astype(int) 
print('baseline done') 
baseline="none" 
band2="none" 
dataset2="none" 

#sommation 
biosource=(graticule+maskbiomass+maskbaseline) 
biosource1=numpy.uint8(biosource) 
biosource="none" 

#Écriture 
dst_file="E:\\NFI_photo_plot\\photoplotdownloadAllCanada\\provincial_merge\\Aggregate\\Biosource.tif" 
dst_driver = gdal.GetDriverByName('GTiff') 
dst_ds = dst_driver.Create(dst_file, src_ds.RasterXSize, 
src_ds.RasterYSize, 1, gdal.GDT_Byte) 

#projection 
dst_ds.SetProjection(src_ds.GetProjection()) 
dst_ds.SetGeoTransform(src_ds.GetGeoTransform()) 
outband=dst_ds.GetRasterBand(1) 
outband.WriteArray(biosource1,0,0) 
outband.SetNoDataValue(255) 
biosource="none" 
graticule="none" 

ответ

1

Несколько указателей:

  • Где у вас есть ="none", они должны быть = None закрыть/очистки объектов, в противном случае вы настраиваете объекты на массив символов: none, что вы не намерены делать.
  • Почему у вас есть band1.SetNoDataValue(-1), в то время как другие значения NoData равны 0? Является ли этот источник данных подписанным или неподписанным? Если unsigned, то -1 не существует.
  • Когда вы открываете растры с gdal.Open без опции доступа, по умолчанию он равен gdal.GA_ReadOnly, что означает, что ваши последующие вызовы SetNoDataValue ничего не делают. Если вы хотите изменить набор данных, вам необходимо использовать gdal.GA_Update в качестве второго параметра для gdal.Open.
  • Другой стратегией создания нового растра является использование driver.CreateCopy; см. tutorial.
Смежные вопросы