赞
踩
python arcgis addin批量输出影像图、根据图层要素逐宗输出影像图,并且可以设置输出类型及分辨率
源码
import arcpy, traceback
import pythonaddins
from Tkinter import Tk, Frame, Label, LEFT, NO, RIGHT, TOP, BOTTOM, HORIZONTAL, Y, ACTIVE, StringVar
from Tkinter import *
import ttk
import tkMessageBox,tkFileDialog
import sys, os
import arcpy.mapping as mapping
global tem
tem = 0
reload(sys)
sys.setdefaultencoding(‘utf8’) # 设置默认编码格式为’utf-8’
def center_window(root, width, height):
“”“窗体屏幕居中显示”“”
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
size = ‘%dx%d+%d+%d’ % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
root.geometry(size)
class ButtonClass3(object):
“”“Implementation for add1_addin.button (Button)”“”
def init(self):
self.enabled = True
self.checked = False
def onClick(self):
pythonaddins.MessageBox(u’开始’, ‘INFO’, 0)
try:
ye().jm()
# root = Tk()
# root.title(‘PDF转换JPG、tiff v1.0’)
# center_window(root, 740, 180)
# root.mainloop()
# with arcpy.da.SearchCursor(‘强锋’, “OID@”) as cursor:
# for row in cursor:
# pythonaddins.MessageBox(‘%s’ % (row[0]), ‘INFO’, 0)
except Exception as e:
pythonaddins.MessageBox(traceback.format_exc(), ‘INFO’, 0)
#pythonaddins.MessageBox(u’结束’, ‘INFO’, 0)
#ent_layer.current(0)
def printt(message, text):
“”“打印消息到界面文本框内”“”
text.insert(END, message)
text.see(END)
text.update()
class ye():
def set_text(self, ent1, text):
ent1.delete(“0”, “end”)
ent1.insert(0, text)
def select_layer(self): global list1 import arcpy.mapping as mapping self.mxd = mapping.MapDocument("CURRENT") self.listdf = arcpy.mapping.ListDataFrames(self.mxd) layers = mapping.ListLayers(self.mxd) list = [] list1 = {} for lyr in layers: name = lyr.name list.append(name) list1[name] = lyr # pythonaddins.MessageBox(list, 'INFO', 0) self.ent_layer['value'] = list def select_inpath(self): """选择工程文件目录""" folder = tkFileDialog.askdirectory() self.ent_bc.delete("0", "end") self.ent_bc.insert(0, folder) def show1(self, a): global list_fid name = self.var.get() list_fid = [] file = arcpy.ListFields(name) for fld in file: list_fid.append(fld.name) self.ent_fol['value'] = list_fid def ye_main(self): name = self.var.get() bb = self.ent_bl.get() name_fid = self.var1.get() path_bc = self.ent_bc.get() fbl = int(self.ent_fbl.get()) listdf = arcpy.mapping.ListDataFrames(self.mxd) list_1 = [] with arcpy.da.SearchCursor(name, (name_fid)) as cursor: # , qry for row in cursor: fid = row[0] list_1.append(fid) layer1 = list1[self.var.get()] for fid in list_1: try: qry = '"%s" = '% name_fid.encode('utf-8') + "'%s'" % fid #layers[0].definitionQuery = qry arcpy.SelectLayerByAttribute_management(layer1, "ADD_TO_SELECTION", qry) self.mxd.activeDataFrame.zoomToSelectedFeatures() # 缩放至图层 yx_jpg = os.path.join(path_bc, '%s.jpg'%fid) arcpy.SelectLayerByAttribute_management(layer1, "CLEAR_SELECTION") listdf[0].scale = listdf[0].scale * float(bb) arcpy.mapping.ExportToJPEG(self.mxd, yx_jpg, resolution=fbl) except: qry = '"%s" = ' % name_fid.encode('utf-8') + "%s" % fid # layers[0].definitionQuery = qry arcpy.SelectLayerByAttribute_management(layer1, "ADD_TO_SELECTION", qry) self.mxd.activeDataFrame.zoomToSelectedFeatures() # 缩放至图层 yx_jpg = os.path.join(path_bc, '%s.jpg' % fid) arcpy.SelectLayerByAttribute_management(layer1, "CLEAR_SELECTION") listdf[0].scale = listdf[0].scale * float(bb) arcpy.mapping.ExportToJPEG(self.mxd, yx_jpg, resolution=fbl) printt('%s-成功\n'%fid, self.text) def jm(self): root = Tk() root.attributes("-topmost", 0) self.var = StringVar() self.var1 = StringVar() root.title('批量裁图 v1.0') center_window(root, 740, 310) frm1 = Frame(root) frm2 = Frame(root) frm11 = Frame(root) frm3 = Frame(root) lab = Label(frm1, font=("宋体", 10), text="选择图层:").pack(side=LEFT, expand=NO, fill=None) self.ent_layer = ttk.Combobox(frm1, width=20, font=("微软雅黑", 9), textvariable = self.var) self.ent_layer.pack(side=LEFT) self.ent_layer.bind('<<ComboboxSelected>>', self.show1) lab = Label(frm1, font=("宋体", 10), text="选择字段:").pack(side=LEFT, expand=NO, fill=None) self.ent_fol = ttk.Combobox(frm1, width=20, font=("微软雅黑", 9), textvariable=self.var1) self.ent_fol.pack(side=LEFT) #self.ent_layer.bind('<<ComboboxSelected>>', self.show1) lab = Label(frm11, font=("宋体", 10), text="放大比例:").pack(side=LEFT, expand=NO, fill=None) self.ent_bl = ttk.Entry(frm11, width=10, font=('微软雅黑', 9)) self.ent_bl.pack(side=LEFT) lab = Label(frm11, font=("宋体", 10), text="分辨率:").pack(side=LEFT, expand=NO, fill=None) self.ent_fbl = ttk.Entry(frm11, width=10, font=('微软雅黑', 9)) self.ent_fbl.pack(side=LEFT) but_sc = ttk.Button(frm11, text='开始输出', width=12, command=self.ye_main) but_sc.pack(side=LEFT, padx=10) lab = Label(frm2, font=("宋体", 10), text="保存路径:").pack(side=LEFT, expand=NO, fill=None) self.ent_bc = ttk.Entry(frm2, width=80, font=('微软雅黑', 9)) self.ent_bc.pack(side=LEFT) but_bc = ttk.Button(frm2, text='. . .', width=6, command=self.select_inpath) but_bc.pack(side=LEFT, padx=10) frm1.pack(pady=10) frm2.pack(pady=10) frm11.pack(pady=10) self.text = Text(frm3, font=("微软雅黑", 9), width=100, height=10) self.text.pack(side=TOP, pady=10) frm3.pack(pady=10) #self.select_layer() root.mainloop()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。