我想从多波段 GeoTIFF 绘制和 RGB 图像(因为它是卫星图像)并将其投影到指定的区域范围。
最近,我使用“georaster”成功地使用单波段栅格做到了这一点。但是,当我尝试对多波段栅格执行相同操作时,在调用image = georaster.MultiBandRaster(file, bands='all', load_data=extent)
以与 georaster.SingleBandRaster 相同的方式加载子集数据后,出现以下错误:
回溯(最后一次调用):文件“slovakia.py”,第 15 行,在 image = georaster.MultiBandRaster(file, band='all', load_data=extent) File "/usr/local/lib/python2.7/ dist-packages/georaster/georaster.py",第 1249 行,init if self.r == None: ValueError: 具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
当我无法加载多波段数据的子集时,我尝试从 GeoTIFF 中包含的 3 个波段创建 RGB 图像,而不将其投影到底图。然而,结果相当令人惊讶。
import georaster
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.pyplot import figure
import numpy as np
import matplotlib.cm as cm
file = "/home/lubomir/Desktop/Sentinel3_SLSTR/RGB/SLSTR_201901100859_Natural_Color.tif"
defllon = 16
defllat = 47
defulon = 23
defulat = 50.5
extent = (defllon,defulon,defllat,defulat)
image = georaster.MultiBandRaster(file, bands='all')
resulting_image = np.array(image.r[:,:,:], dtype='float32')
print resulting_image.shape
m = Basemap(epsg=3395,llcrnrlat=47,urcrnrlat=50.5,\
llcrnrlon=16,urcrnrlon=23,resolution='i')
m.drawcoastlines(linewidth=1, color='g', zorder=2)
m.drawcountries(linewidth=1, color='m', zorder=2)
m.imshow(resulting_image, origin='upper', zorder=1, cmap=cm.gray)
plt.savefig('test.tiff',dpi=600,transparent=True,bbox_inches=None,frameon=False)
plt.show()
resulting_image=None
投影到指定区域的单波段栅格: Single_band
由 3 个波段组成的 RGB 图像: RGB_image
GeoTIF 的波段 2 如下所示: band2_greyscale
我将欢迎有关 MultiBandRaster 的子集数据加载或MultiBandRaster 的 RGB 绘图的任何帮助或建议。我也将感谢任何其他有关如何执行此操作的 python 方法。