【问题标题】:GeoTiff can't be produced properly with python无法使用 python 正确生成 GeoTiff
【发布时间】:2021-01-31 09:41:43
【问题描述】:

我在使用 python 和 gdal 导出 GeoTIFF 文件时遇到问题。 我想要做的是将 NumPy 数组转换为 GeoTIFF 文件。 有参考 GeoTIFF 文件,所以我想确保生成的 GeoTIFF 文件具有正确的几何坐标。

问题是tiff文件好像生成了,但是里面包含的值不好。 我尝试使用 QGIS 查看文件,但图像的外观完全是黑色的。除了图像外观的问题外,值也从原始的 NumPy 数组发生了变化。比如NumPy数组的最大值是149,但是QGIS说文件里没有这个值。

这个问题的原因是什么,我该如何解决?

代码在这里。

#Check the metadata of the reference file.
with rio.open('/content/drive/My Drive/Colab Notebooks/satellite_data/MCD12Q1/MCD12Q1.A2019001.IGBP.Buryat.geotiff.tif') as filename : filename.bounds
filename.meta["transform"]

#Output=> {'count': 1,'crs': CRS.from_epsg(4326),'driver': 'GTiff','dtype': 'uint8','height': 1920, 'nodata': None, 'transform': Affine(0.00416666, 0.0, 97.99955519999997, 0.0, -0.00416666, 58.0000512),
'width': 4800}

srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)

#Set some parameters
xsize=filename.meta["width"]
ysize=filename.meta["height"]
band=1
dtype = gdal.GDT_UInt16

output = gdal.GetDriverByName('GTiff').Create('/content/drive/My Drive/Colab Notebooks/outputs/output.tif', xsize, ysize, band, dtype)
output.SetGeoTransform((filename.meta["transform"][0],filename.meta["transform"][1],filename.meta["transform"][2],filename.meta["transform"][3],filename.meta["transform"][4],filename.meta["transform"][5]))
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
output.SetProjection(srs.ExportToWkt())
output.GetRasterBand(1).WriteArray(NumOfFiresExpanded["2019"]) #The "NumOfFireExpanded["2019"] is the target numpy array.
output.FlushCache()
output = None

【问题讨论】:

  • 您的代码实际上是这样缩进的吗?另外,你为什么要使用rasterio gdal。你可以很容易地坚持使用rasterio(或gdal
  • 感谢您的评论!我想制作一个与参考图像具有相同坐标和投影的 GeoTiff 文件。但是,部分代码是从其他来源复制的,所以我还没有完全理解代码在做什么......我将使用 rasterio,因为它对我来说似乎更容易使用。
  • 但是要写光栅,你使用gdal。您只能使用rasterio 来执行您需要的所有操作
  • 好的,谢谢!由于我是 rasterio 包的新手,因此我将寻找一些有用的材料,用于使用 rasterio 进行地理空间分析。
  • Rasterio hast very good documentation 了解如何打开栅格进行读写。

标签: python numpy gdal


【解决方案1】:

我这里有一个例子,它采用 numpy 数组并构建一个 GeoTiff。

How do I write/create a GeoTIFF RGB image file in python?

使用gdalinfo -stats <geotiff> 查看 GeoTiff 并确保范围合适。查看 16 位图像可能是不确定的,具体取决于查看者。 QGIS 是一个很好的测试查看器。

【讨论】:

  • 感谢您的建议!您发送的链接对我非常有用。
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多