gdal - 使用python GDAL清空输出

标签 gdal ogr

您好,我是Gdal的新手,正在为我的代码苦苦挣扎。在我的代码中,一切似乎进展顺利,但最后的输出区域为空。当我指定255时,无数据值设置为256,所以我真的不知道出了什么问题。谢谢任何帮助,将不胜感激!

这是我的代码

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"

最佳答案

一些提示:

  • 如果您有="none",则必须将它们设置为= None才能关闭/清理对象,否则,您将对象设置为字符数组:n o n e,这不是您想要的。
  • 为什么其他的NoData值为0,为什么会有band1.SetNoDataValue(-1)?此数据源是签名的还是未签名的?如果未签名,则-1不存在。
  • 如果使用不带访问选项的 gdal.Open 打开栅格,则默认为gdal.GA_ReadOnly,这意味着您随后的SetNoDataValue调用将不执行任何操作。如果要修改数据集,则需要使用gdal.GA_Update作为gdal.Open的第二个参数。
  • 创建新栅格的另一种策略是使用driver.CreateCopy;有关详细信息,请参见tutorial
  • 关于gdal - 使用python GDAL清空输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037003/

    相关文章:

    r - 如何将 RgoogleMaps PNG 转换为 R 中的 SpatialGridDataFrame?

    python - 在图像分析中将阴影与其来源相关联

    c - 如何在 C++ 中创建多边形 ESRI shapefile?

    postgresql - RTPostgis 库在进行检查时失败

    Python gdal undefined symbol GDALRasterBandGetVirtualMem

    django - 无法使用以下驱动程序打开数据源 `'

    python - 创建形状文件

    python - 导入 GDAL 会打印很多错误消息,但仍然有效

    r - 如何将所有字段/扩展数据(不仅仅是 'name' 和 'description' )从 KML 层加载到 R 中

    streaming - ogr2ogr 中的 VSI 文件 API 支持