当前位置:   article > 正文

python arcgis addin批量输出影像图、根据图层要素逐宗输出影像图,并且可以设置输出类型及分辨率_arcgis批量出图python代码

arcgis批量出图python代码

python arcgis addin批量输出影像图、根据图层要素逐宗输出影像图,并且可以设置输出类型及分辨率
源码

-- coding: UTF-8 --

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)
  • 1

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110

  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/310792
推荐阅读
相关标签
  

闽ICP备14008679号