簡體   English   中英

如何使用python將RGB多波段GeoTIFF投影到指定區域范圍?

[英]How to project RGB multiband GeoTIFF to specified area extent using python?

我想繪制多波段GeoTIFF的RGB圖像(因為是衛星圖像)並將其投影到指定的區域范圍。

最近,我成功地使用“ georaster”對單波段柵格進行了此操作。 但是,當我嘗試對多波段柵格進行同樣的操作時,在調用image = georaster.MultiBandRaster(file, bands='all', load_data=extent)以與georaster.SingleBandRaster相同的方式加載子集數據后,以下錯誤:

追溯(最近一次通話最近):文件“ slovakia.py”,第15行,圖像= georaster.MultiBandRaster(文件,bands =“全部”,load_data =范圍)文件“ /usr/local/lib/python2.7/ dist-packages / georaster / georaster.py“,行1249,如果self.r == None,則在init初始化 :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方法,我也將不勝感激。

使用georaster.MultiBandRaster時,我遇到了非常相似的問題。 切換到georaster.SingleBandRaster后,錯誤消息“ ValueError:具有多個元素的數組的真實值不明確。” 走了,我就能顯示一個波段圖。 為了與底圖輪廓匹配,還需要使用以下語句執行180度翻轉操作:np.flipud(image.r)。 總之,似乎存在一個問題,可能與Python> = 3.6或numpy版本有關,這會在函數georaster.MultiBandRaster期間導致錯誤消息。 我將為此開設新職位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM