arcgis addin分析两个图层信息

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)

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
    self.ent_layer1['value'] = list


def show1(self, a):
    global list_fid
    name = self.var1.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):
    layer = self.var.get()
    layer1 = self.var1.get()
    fol = self.var2.get()
    #listdf = arcpy.mapping.ListDataFrames(self.mxd)
    list_1 = []
    list_dj = os.listdir(r"D:\jpg")
    for name in list_dj:
        if 'dj.' in name:
            try:
                os.remove(os.path.join(r"D:\jpg", name))
            except:
                pass
    arcpy.Clip_analysis(layer1, layer, r"D:\jpg\dj.shp")
    with arcpy.da.SearchCursor(r"D:\jpg\dj.shp", (fol, "SHAPE@AREA")) as cursor:  # , qry
        for row in cursor:
            fid = row[0]
            list_1.append('%s面积:%s平方米'%(fid, round(row[1], 3)))
    printt('\n'.join(list_1), self.text)

def jm(self):
    root = Tk()
    root.attributes("-topmost", 0)
    self.var = StringVar()
    self.var1 = StringVar()
    self.var2 = 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)

    lab = Label(frm1, font=("宋体", 10), text="叠加图层:").pack(side=LEFT, expand=NO, fill=None)
    self.ent_layer1 = ttk.Combobox(frm1, width=20, font=("微软雅黑", 9), textvariable=self.var1)
    self.ent_layer1.pack(side=LEFT)
    self.ent_layer1.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.var2)
    self.ent_fol.pack(side=LEFT)
    but_sc = ttk.Button(frm11, text='开始输出', width=12, command=self.ye_main)
    but_sc.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()

if name == ‘main’:
ye().jm()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DK业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值