python 拼接 遥感影像_python_拼接遥感影像Mosaic to New Raster

在使用Python GDAL将MODIS的HDF数据转换为tif之后,可使用Python中的ArcGIS Mosaic to New Raster工具来拼接多幅影像。或者也可继续使用GDAL 来拼接。数据文件名如:MOD11A2.A2000049.h23v04.006.2015058135050.tif

# -*- coding: utf-8 -*-

"""

Created on Thu Aug 8 22:05:41 2019

@author: zoe

"""

import arcpy

import glob

import os

#指定影像所在目录

inws =r'E:\MOD11A2_LandSurfaceTem\2000_0208\try' #输入路径

outws = r'E:\MOD11A2_LandSurfaceTem\2000_0208\out' #输出路径

mask = r"E:\map\A_TLM_2\unionCopy2.prj" #投影文件,虽然在转换HDF为tif时已经重新投影过

#判断日期函数,由于MODIS数据文件是以年内天数命名,为了将其转为日期,并给镶嵌后的文件重新命名,如2001001变为2001_01_01

def out_date(year,day):

fir_day = datetime.datetime(year,1,1)

zone = datetime.timedelta(days=day-1)

return datetime.datetime.strftime(fir_day + zone, "%Y_%m_%d")

#利用glob包,将inws下的所有tif文件读存放到rasters中

rasters = glob.glob(os.path.join(inws, "*.tif"))

raser_list=[]

#循环rasters中的所有影像,进行按掩模提取操作

for ras in rasters:

info=os.path.basename(ras).split('.')[1]

if info[5:]=='049': #文件内属于当年某天的数据

#将栅格数据添加至列表

raser_list.append(ras)

print info

year_info=info[1:5]

days_info=info[5:]

print 'year%s,days%s'%(year_info,days_info)

#删除日期天数开头0

if days_info[0]=='0':

days=days_info.lstrip('0')

print days

#生成文件名日期

finame_1=out_date(int(year_info),int(days))

print finame_1

#完整文件名

outname=os.path.basename(ras).split('.')[0]+'1km_'+finame_1+'.tif'

print outname

try:

##Mosaic several TIFF images to a new TIFF image

arcpy.MosaicToNewRaster_management(raser_list,outws, outname, mask,\

"32_BIT_UNSIGNED", "", "1", "LAST","FIRST")

except:

print "Mosaic To New Raster example failed."

print arcpy.GetMessages()

print 'mosaic finish'

结果比较:

1 使用ArcGIS 拼接,白色为Nodata,与MRT拼接区别在于,直接将nodata范围的值设置了Nodata,而MRT拼接的好像还需要在ARCGIS中再设置,否则直接打开就是如图3一样

2 使用 Python 调用arcpy 拼接

3 使用MRT拼接

你可能感兴趣的:(python,拼接,遥感影像)