在python中利用GDAL對(duì)tif文件進(jìn)行讀寫的方法
利用GDAL庫(kù)對(duì)tif影像進(jìn)行讀取
示例代碼默認(rèn)波段為[B、G、R、NIR的順序,且為四個(gè)波段]
import gdal def readTif(fileName): dataset = gdal.Open(fileName) if dataset == None: print(fileName+"文件無法打開") return im_width = dataset.RasterXSize #柵格矩陣的列數(shù) im_height = dataset.RasterYSize #柵格矩陣的行數(shù) im_bands = dataset.RasterCount #波段數(shù) im_data = dataset.ReadAsArray(0,0,im_width,im_height)#獲取數(shù)據(jù) im_geotrans = dataset.GetGeoTransform()#獲取仿射矩陣信息 im_proj = dataset.GetProjection()#獲取投影信息 im_blueBand = im_data[0,0:im_height,0:im_width]#獲取藍(lán)波段 im_greenBand = im_data[1,0:im_height,0:im_width]#獲取綠波段 im_redBand = im_data[2,0:im_height,0:im_width]#獲取紅波段 im_nirBand = im_data[3,0:im_height,0:im_width]#獲取近紅外波段
寫tif影像函數(shù)
#保存tif文件函數(shù)
import gdal
import numpy as np
def writeTiff(im_data,im_width,im_height,im_bands,im_geotrans,im_proj,path):
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
elif len(im_data.shape) == 2:
im_data = np.array([im_data])
else:
im_bands, (im_height, im_width) = 1,im_data.shape
#創(chuàng)建文件
driver = gdal.GetDriverByName("GTiff")
dataset = driver.Create(path, im_width, im_height, im_bands, datatype)
if(dataset!= None):
dataset.SetGeoTransform(im_geotrans) #寫入仿射變換參數(shù)
dataset.SetProjection(im_proj) #寫入投影
for i in range(im_bands):
dataset.GetRasterBand(i+1).WriteArray(im_data[i])
del dataset
以上這篇在python中利用GDAL對(duì)tif文件進(jìn)行讀寫的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何解決Keras載入mnist數(shù)據(jù)集出錯(cuò)的問題
這篇文章主要介紹了解決Keras載入mnist數(shù)據(jù)集出錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python進(jìn)階之多線程的實(shí)現(xiàn)方法總結(jié)
在python中主要有兩種實(shí)現(xiàn)多線程的方式:通過threading.Thread?()?方法創(chuàng)建線程和通過繼承?threading.Thread?類的繼承重寫run方法,接下來我們分別說一下多線程的兩種實(shí)現(xiàn)形式吧2023-04-04
Python?gRPC流式通信協(xié)議詳細(xì)講解
這篇文章主要介紹了Python?gRPC流式通信協(xié)議,最近幾天在搞golang的grpc,跑通之后想用php作為客戶端調(diào)用一下grpc服務(wù),結(jié)果拉了,一個(gè)php的grpc服務(wù)安裝,搞了好幾天,總算搞定了2022-11-11
python3實(shí)現(xiàn)抓取網(wǎng)頁資源的 N 種方法
這兩天學(xué)習(xí)了python3實(shí)現(xiàn)抓取網(wǎng)頁資源的方法,發(fā)現(xiàn)了很多種方法,所以,今天添加一點(diǎn)小筆記。2017-05-05
Python基于遞歸算法實(shí)現(xiàn)的漢諾塔與Fibonacci數(shù)列示例
這篇文章主要介紹了Python基于遞歸算法實(shí)現(xiàn)的漢諾塔與Fibonacci數(shù)列,結(jié)合實(shí)例形式分析了漢諾塔與Fibonacci數(shù)列的遞歸實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04
python調(diào)用可執(zhí)行文件.exe的2種實(shí)現(xiàn)方法
Python是一種流行的編程語言,可以輕松地通過腳本調(diào)用各種應(yīng)用程序,本文就詳細(xì)的介紹了python調(diào)用可執(zhí)行文件.exe的2種實(shí)現(xiàn)方法,感興趣的可以了解一下2023-08-08

