日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...

發(fā)布時間:2023/12/2 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(1)利用python GDAL庫讀寫geotiff格式的遙感影像方法,具有很好的參考價值,不錯!

from osgeo import gdal

import numpy as np

def read_tiff(inpath):

ds=gdal.Open(inpath)

row=ds.RasterXSize

col=ds.RasterYSize

band=ds.RasterCount

geoTransform=ds.GetTransform()

proj=ds.GetTransform()

data=np.zeros([row,col,band])

for i in range(band):

dt=ds.GetRasterBand(1)

data[:,:,i]=dt.ReadAsArray(0,0,col,row)

return data,geoTransform,proj

def array2raster(outpath,array,geoTransform,proj):

cols=array.shape[1]

rows=array.shape[0]

driver=gdal.GetDriverByName('Gtiff')

outRaster=driver.Create(newRasterfn,cols,rows,1,gdal.GDT_Byte)

outRaster.SetGeoTransform(geoTransform)#參數(shù)2,6為水平垂直分辨率,參數(shù)3,5表示圖片是指北的

outband=outRaster.GetRasterBand(1)

outband.WriteArray(array)

outRaster.SetProjection(proj)#將幾何對象的數(shù)據(jù)導出為wkt格式

outRaster.FlushCache()

if __name__=="_main_":

data,geoTransform,proj=read_tiff('d:/a.tif')

array2raster("d:/b.tif",np.zeros[2400,2400],geoTransform,proj)

(2)具體細節(jié)參數(shù)

#1*************波段組成圖像,波段指揮顏色************

import gdal ?#導入庫

dataset=gdal.open("filename") ?#文件名,如*.tif

dir(dataset) ????#可通過dir()來顯示信息,或者某個函數(shù)的用法or ?print(dataset)

#基本函數(shù)

dataset.GetDescription() ??#獲得柵格的描述信息

dataset.RasterCount ???????#獲得柵格數(shù)據(jù)集的波段數(shù)

band=dataset.GetRasterBand(1) ?#獲得柵格數(shù)據(jù)集的波段

width=dataset.RasterXSize ?#讀取圖像的寬度,x方向上的像素個數(shù)

height=dataset.RasterYSize ?#讀取圖像的高度,y方向上的像素個數(shù)

#讀取二進制

dataset.ReadRaster(xoff,yoff,xsize,ysize,buf_xsize=None,buf_ysize=None,buf_type=None,band_list=None)

#xoff,yoff指定想要讀取的部分原點位置在整張圖像中距離全圖原點的位置

#xsize和ysize指定要讀取部分圖像的矩形大小

#buf_xsize,buf_ysize代表縮放大小,buf_type可設置讀取的數(shù)據(jù)類型

#讀取數(shù)組

dateset.ReadAsArray(xoff,yoff,xsize,ysize)

#舉個例dataset.ReadRaster(230,270,10,10)#把圖像中位于230,270,寬度為10高度為10的數(shù)據(jù)讀取出來了

band.XSize

band.YSize ?#波段圖像的寬和高

band.DataType ?#圖像中實際數(shù)值的數(shù)據(jù)類型,具體的數(shù)據(jù)類型定義在gdalconst模塊里,需import gdalconst

band.GetNoDataValue() #獲取無意義值

band.GetMaximum()

band.GetMininum() ?#由于是文件格式?jīng)]有固有的最值,所以不會顯示出來,用下面這個函數(shù)

band.ComputeRasterMinMax()#能算出排除了無意義值后的最值

band.GetRasterColorInterpretation()

gdalconst.GCI_PaletteIndex

colormap=band.GetRasterColorTable() #獲得顏色表

colormap.GetCount() ??#獲得顏色的數(shù)量

colormap.GetPaletteInterpretation() #知道獲得的顏色表是什么顏色表,比如是RGB顏色表

#比如GPI_GRAY,GPI_RGB,GPI_CYMP,GPI_HLS

gdal.GPI_RGB

for i in range(colormap.GetCount()):

print(colormap.GetColorEntry(i)) ?#獲得顏色表中的值,有四個值,其中前三個有意義

#2**************細節(jié)**************

band.ReadAsArray(xoff,yoff,win_xsize,win_ysize,buf_xsize,buf_ysize)

#xoff,yoff是取值窗口的左上角在實際數(shù)據(jù)中所處象元的xy位置。

#win_xsize,win_ysize是取值窗口覆蓋的區(qū)域大小

#buf_xsize,buf_ysize是取值窗口取出數(shù)組進行縮放后數(shù)組的大小,縮的時候是取周圍點的平均值,如果不設置,則跟3、4參數(shù)一致

#例子1:橫向讀取和縱向讀取的效率

import gdal

import time

dataset=gdal.Open("filename")

band=dataset.GetRasterBand(1)

width=dataset.RasterXSize

height=dataset.RasterYSize

bw=128

bh=128

bxsize=width/128

bysize=height/128

start=time.time()

band.ReadAsArray(0,0,width,height)

print(time.time()-start)

start2=time.time()

for i in range(bysize):

for j in range(bxsize):

band.ReadAsArray(bw*j,bh*i,bw,bh)

print(time.time()-start2)

#調換循環(huán)順序

for j in range(bxsize):

for i in range(bysize):

band.ReadAsArray(bw*j,bh*i,bw,bh)

【參考】

點滴分享,福澤你我!Add?oil!

轉載本文請聯(lián)系原作者獲取授權,同時請注明本文來自張偉科學網(wǎng)博客。

鏈接地址:http://blog.sciencenet.cn/blog-3428464-1250704.html

上一篇:Python代碼調試錯誤集合(1)

下一篇:查詢Anaconda安裝路徑、安裝包位置及授予訪問權限

總結

以上是生活随笔為你收集整理的python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。