最近要做個遙感相關的小系統,需要波段組合功能,網上找了可以使用arcgis安裝時自帶的arcpy包,但是python3.7不能使用現有arcgis10.2版本,也不想再裝其他版本,所以只能自己想了個辦法解決。不過有點笨啊。
思路是:
上**:
from osgeo import gdal
import os
import numpy as np
class grid:
#讀影象檔案
def read_img(self,filename):
dataset=gdal.open(filename) #開啟檔案
im_width = dataset.rasterxsize #柵格矩陣的列數
im_height = dataset.rasterysize #柵格矩陣的行數
im_geotrans = dataset.getgeotransform() #仿射矩陣
im_proj = dataset.getprojection() #地圖投影資訊
im_data = dataset.readasarray(0,0,im_width,im_height) #將資料寫成陣列,對應柵格矩陣
del dataset #關閉物件,檔案dataset
return im_proj,im_geotrans,im_data,im_width,im_height
#寫檔案,以寫成tif為例
def write_img(self,filename,im_proj,im_geotrans,im_data):
#判斷柵格資料的資料型別
if 'int8' in im_data.dtype.name:
datatype = gdal.gdt_byte
elif 'int16' in im_data.dtype.name:
datatype = gdal.gdt_uint16
else:
datatype = gdal.gdt_float32
#判讀陣列維數
if len(im_data.shape) == 3:
im_bands, im_height, im_width = im_data.shape
else:
im_bands, (im_height, im_width) = 1,im_data.shape
#建立檔案
driver = gdal.getdriverbyname("gtiff") #資料型別必須有,因為要計算需要多大記憶體空間
dataset = driver.create(filename, im_width, im_height, im_bands, datatype)
dataset.setgeotransform(im_geotrans) #寫入仿射變換引數
dataset.setprojection(im_proj) #寫入投影
if im_bands == 1:
dataset.getrasterband(1).writearray(im_data) #寫入陣列資料
else:
for i in range(im_bands):
dataset.getrasterband(i+1).writearray(im_data[i])
del dataset
if __name__ == "__main__":
os.chdir(r'e:\python\temp\data') #切換路徑到待處理影象所在資料夾
run = grid()
#第一步
proj,geotrans,data1,row1,column1 = run.read_img('band_5_clip.tif') #讀資料
proj,geotrans,data2,row2,column2= run.read_img('band_4_clip.tif') # 讀資料
proj,geotrans,data3,row3,column3 = run.read_img('band_3_clip.tif') # 讀資料
#第二步
data = np.array((data1, data2, data3),dtype = data1.dtype) #按序將3個波段像元值放入
#第三步
run.write_img('com543.tif', proj, geotrans, data) # 寫為3波段資料
ok!!和arcgis處理的對比一下,發現差別不大(上:arcmap 下:python)。
方法較笨,如果各位大神有更好的方法,我們可以私下交流交流。
python遙感影像波段疊加
功能描述 與envi中的layer stacking功能相同。可根據自己需求將若干景同位置,不同時項影像進行疊加。可用於多時序影像分析。users wxl anaconda3 bin python3.7 coding utf 8 author isr contact 846924329 qq.com...
遙感影像波段與波段合成
目錄 全色波段 多光譜波段 高光譜波段 假彩色真彩色 偽彩色 pseudo color 真彩色 假彩色和偽彩色的區別 全色波段,一般指使用0.5微公尺到0.75微公尺左右的單波段,即從綠色往後的可見光波段。全色遙感影象也就是對地物輻射中全色波段的影象攝取,因為是單波段,在圖上顯示是灰度。全色遙感影象...
遙感影像鑲嵌及實現 一
遙感影像鑲嵌及實現 一 影像鑲嵌是將多幅帶有地理資訊的影像輸出為一幅大範圍覆蓋影像的一種遙感影像處理功能。這些影像是需要經過正射校正,融合 勻光勻色,然後進行鑲嵌。鑲嵌的關鍵是構建輸入影像的鑲嵌線網路,然後根據鑲嵌線輸出影像。在遙感處理流程中,主要的流程是 輸入全色及多光譜1a級影像,為了克服各種因...