Пустые выходные данные с помощью python GDAL

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

Вот мой код

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"

person thomas    schedule 27.01.2012    source источник


Ответы (1)


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

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