Пустые выходы с питоном GDAL - PullRequest
3 голосов
/ 27 января 2012

Здравствуйте, я новичок в Gdal, и я борюсь с моими кодами.В моем коде все идет хорошо, но выходные полосы в конце пусты.Значение no data установлено равным 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"

1 Ответ

1 голос
/ 30 января 2012

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

  • Если у вас есть ="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;Подробнее см. учебник .
...