Python 批量拼接Landsat遙感影像

2021-09-26 10:38:08 字數 1947 閱讀 2887

#!/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.listdir(path): #讀出path中所有的目錄為item

item_path=os.path.join(path,item) #加深資料夾

if os.path.isdir(item_path): #判斷加深之後的目錄是否是資料夾

mosaic(item_path,name)#如果是在繼續尋找更深層,目前為止都是對讀出的第乙個目錄進行操作

elif os.path.isfile(item_path): # 判斷加深之後的目錄中是否包含檔案

if name in item: # 判斷name(特徵)是否在item中

a,b=os.path.split(item_path)

bb = item[15:21]

sanjiangping=os.path.join(outfolder,bb+'sanjiangping.tif')

if os.path.exists(sanjiangping):

i=i+1

print(bb+'sanjiangping.tif'+'yicunzai')

# 指定該工作空間下的一副影像為基礎影像,為後面的引數提取做準備

else:

arcpy.env.workspace = a

base = item

# 以下一段**是為執行拼接做引數準備

out_coor_system = arcpy.describe(base).spatialreference # 獲取座標系統

datatype = arcpy.describe(base).datatype # 獲取元素型別

bandcount = arcpy.describe(base).bandcount # 獲取bandcount

piexl_type = arcpy.describe(base).pixeltype

cellwidth = arcpy.describe(base).meancellwidth # 獲取柵格單元的的寬度

# 列印一些資訊

print(out_coor_system.name)

print(bandcount)

arcpy.checkoutextension("spatial")

# 提取待拼接影像的檔名,且中間以;隔開,例如:a.tif;b.tif;c.tif

rasters =

for ras in arcpy.listrasters("*.tif"): # for迴圈,對wrokspace下的所有以dem.tif結尾的影像進行過濾

ras_list = ";".join(rasters) # 字串拼接

# 列印出來,看看什麼結果吧

print(ras_list)

# 指定輸出資料夾

# 執行拼接操作

arcpy.mosaictonewraster_management(ras_list, outfolder, bb+"sanjiangping.tif", out_coor_system,

"16_bit_signed", cellwidth, bandcount, "maximum", "first")

else:

continue

print("zongjiwancheng"+str(i))

if __name__=='__main__':

mosaic(path=r'h:\wangyu\pcos\2000useful\07',name='.tif')

python 全景拼接

1 影象拼接的關鍵兩步是 配準 registration 和融合 blending 配準的目的是根據幾何運動模型,將影象註冊到同乙個座標系中 融合則是將配準後的影象合成為一張大的拼接影象。影象的平移模型是指影象僅在兩維空間發生了 方向和 方向的位移,如果攝像機僅僅發生了平移運動,則可以採用平移模型。...

python多表拼接

多表的橫向拼接 在橫向將兩個表依據公共列拼接在一起 連線表的型別 1。一對一 就是兩個表的公共列是一對一的 import pandas as pd df1 pd.read excel users caizhengjie desktop 資料分析資料 多表拼接 資料1.xlsx df2 pd.read...

python批量匯入檔案 python 批量匯入

usr bin envpythoncoding utf 8importmysqldbdefdb execute sql dbs mysqldb.connect host localhost user root passwd root db db port 3306 cursor dbs.cursor...