from osgeo import gdal
# 讀影象檔案
defread_img
(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)
.astype(np.
float
)# 將資料寫成陣列,對應柵格矩陣
del dataset # 關閉物件,檔案dataset
return im_proj, im_geotrans, im_data, im_height, im_width
defwrite_img
(filename, im_proj, im_geotrans, im_data)
:# gdal資料型別包括
# gdal.gdt_byte,
# gdal .gdt_uint16, gdal.gdt_int16, gdal.gdt_uint32, gdal.gdt_int32,
# gdal.gdt_float32, gdal.gdt_float64
# 判斷柵格資料的資料型別
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
# 判讀陣列維數
iflen
(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__'
: proj, geotrans, values, row, column = read_img(輸入資料)
# 讀資料
write_img(r'輸出位址'
, proj, geotrans, 輸出影像名稱)
#寫資料
Python 批量拼接Landsat遙感影像
usr local bin python coding utf 8 import arcpy,os def mosaic path name 指定工作目錄,即存放影像的目錄 outfolder r h wangyu pcos 2000useful 07 i 0for item in os.listd...
如何製作用於遙感影像分類的高解析度遙感影像資料集?
how to make high resolution remote sensing image dataset?github位址 0.引言 根據自身需要製作遙感影像資料還是很具有現實意義 第一,高解析度遙感影像資料集目前整體上是缺乏的,主流的有uc merced dataset,whu rs da...
Python學習之讀取TIFF檔案
匯入cv模組 import cv2 as cv import numpy as np 讀取影象,支援 bmp jpg png tiff 等常用格式 第二個引數是通道數和位深的引數,有四種選擇,參考 img cv.imread filename.tif 2 print img 在這裡一開始我寫成了im...