目的
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、浦北網(wǎng)站維護(hù)、網(wǎng)站推廣。現(xiàn)有兩幅柵格圖像,一個(gè)是某地區(qū)道路柵格圖,一個(gè)是某地區(qū)土地利用類(lèi)型圖,需要將道路疊加到土地利用類(lèi)型圖中,即疊加后,重合的像元值以道路圖為準(zhǔn),其余的像元值仍是土地利用類(lèi)型圖原有的像元值。
圖1 道路信息圖
圖2 土地利用類(lèi)型圖
圖3 結(jié)果圖
具體實(shí)現(xiàn)
from gdalconst import * from osgeo import gdal import osr import sys import copy #疊加兩個(gè)柵格圖像(一個(gè)道路柵格圖,一個(gè)土地利用類(lèi)型圖),兩幅圖像重疊的像元值都是第一個(gè)圖像的值, #未重疊的像元值還是土地利用類(lèi)型圖上的值,最終結(jié)果便是土地利用類(lèi)型圖上面多了道路信息。 roadFile = 'E:\\Exercise\\test\\grasstest\\road_rastercalc.tif' landuseFile = 'E:\\Exercise\\test\\grasstest\\landuse.tif' roadDs = gdal.Open(roadFile, GA_ReadOnly) landuseDs = gdal.Open(landuseFile, GA_ReadOnly) if roadDs is None: print 'Can not open ', roadFile sys.exit(1) geotransform = roadDs.GetGeoTransform() projection=roadDs.GetProjection() cols = roadDs.RasterXSize rows = roadDs.RasterYSize roadBand = roadDs.GetRasterBand(1) roadData = roadBand.ReadAsArray(0,0,cols,rows) roadNoData = roadBand.GetNoDataValue() landuseBand = landuseDs.GetRasterBand(1) landuseData = landuseBand.ReadAsArray(0,0,cols,rows) landuseNoData = landuseBand.GetNoDataValue() result = landuseData for i in range(0,rows): for j in range(0,cols): if(abs(roadData[i,j] - 20) < 0.0001): result[i,j] = 20 if((abs(landuseData[i,j] - landuseNoData)>0.0001) and (abs(roadData[i,j] - roadNoData) < 0.0001)): result[i,j] = landuseData[i,j] if((abs(landuseData[i,j] - landuseNoData)<0.0001) and (abs(roadData[i,j] - roadNoData) < 0.0001)): result[i,j] = landuseNoData #write result to disk resultPath = 'E:\\Exercise\\test\\grasstest\\result_landuse.tif' format = "GTiff" driver = gdal.GetDriverByName(format) ds = driver.Create(resultPath, cols, rows, 1, GDT_Float32) ds.SetGeoTransform(geotransform) ds.SetProjection(projection) ds.GetRasterBand(1).SetNoDataValue(landuseNoData) ds.GetRasterBand(1).WriteArray(result) ds = None print 'ok---------'
當(dāng)前名稱(chēng):Python疊加兩幅柵格圖像的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://jinyejixie.com/article20/ddeejo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)