您的位置:首页 > 编程语言 > Python开发

窗体版Python批量处理地理数据--栅格裁剪

2015-12-20 16:21 776 查看
一、说明

       之前写过用Python代码块处理地理数据的例子,如裁剪、投影、格式转换等,曾想过用C#制作个窗体,嵌入Python代码,今天无意发现Python也能用tKinter构建简单的窗体,眼前一亮,先写个批量裁剪的例子吧。这样就不用对数据路径改来改去了,只需确定元数据路径,掩膜数据和输出路径就OK了,十分方便。

二、效果



三、代码

#coding=utf-8
from Tkinter import *
from tkFileDialog import *
import Tkinter,tkMessageBox,arcpy

arcpy.CheckOutExtension("spatial")
arcpy.gp.overwriteOutput=1
OutPath=""
MaskFile=""

root=Tk()
#root.geometry("600x400")
root.title("Extrack By Mask")

def OpenData():
filefolder1=askdirectory()
text1.delete(0,END)
text1.insert(0,filefolder1)
def OpenMask():
MaskFile=askopenfilename()
text2.delete(0,END)
text2.insert(0,MaskFile)
def SavePath():
OutPath=askdirectory()
text3.delete(0,END)
text3.insert(0,OutPath)
def Run():
if len(str(text1.get()))==0|len(str(text2.get()))==0|len(str(text3.get()))==0:
tkMessageBox.showinfo("Warning","Please choose the data source!")
return

arcpy.env.workspace=text1.get()
Rasters=arcpy.ListRasters()
s=0
for Raster in Rasters:
s=s+1
if s==0:
tkMessageBox.showinfo("Error","No data!")
return
i=1
RunButton.config(text="Running,please wait!")
for Raster in Rasters:
root.title("Processing "+Raster+" ("+str(i)+"/"+str(s)+")")
arcpy.gp.ExtractByMask_sa(Raster, text2.get(), text3.get()+"/"+Raster)
i=i+1
tkMessageBox.showinfo("Congratulations","All done")
exit()

frame1=Frame(root)
frame1.pack(side=TOP)
label1= Label(frame1,text="Input Raster:",width=10)
label1.pack(side=LEFT)
text1 = Entry(frame1,bd=1,width=60)
text1.pack(side=LEFT)
OpenDataButton = Tkinter.Button(frame1, text ="Choose", command =OpenData)
OpenDataButton.pack(side=LEFT)

frame2=Frame(root)
frame2.pack(side=TOP)
label2= Label(frame2,text="Mask:",width=10)
label2.pack(side=LEFT)
text2 = Entry(frame2,bd=1,width=60)
text2.pack(side=LEFT)
OpenMaskButton = Tkinter.Button(frame2, text ="Choose",command=OpenMask)
OpenMaskButton.pack(side=LEFT)

frame3=Frame(root)
frame3.pack(side=TOP)
label3= Label(frame3,text="OutPath:",width=10)
label3.pack(side=LEFT)
text3 = Entry(frame3,bd=1,width=60)
text3.pack(side=LEFT)
OpenPathButton = Tkinter.Button(frame3, text ="Choose",command=SavePath)
OpenPathButton.pack(side=LEFT)

frame4=Frame(root,bd=3)
frame4.pack(side=TOP)

RunButton=Tkinter.Button(frame4,text="Run",command=Run,width=20,bd=2)
RunButton.pack(side=RIGHT)

root.mainloop()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: