# -*- coding: utf-8 -*- import os import sys import log import arcpy #import utils import appconfig #import arcpy import arcpy.mapping as mp from db.postgresql import Postgresql reload(sys) class Ztt: def __init__(self, data): self.db = Postgresql(appconfig.DB_CONN) self.bsm = data["bsm"] self.mxd = data["mxd"] self.jpg = data["jpg"] self.xzqdm = data["xzqdm"] self.task() def task(self): '''加载数据-任务''' sql = "select a.BSM,A.ZBT,A.FBT,A.BZDW,A.BZSJ,A.ZTSJ,A.ZTDW,B.MBMC,B.MBWJ from T_YZT_ZTT a JOIN T_YZT_ZTTMB b on a.MBBSM = b.BSM where a.BSM='{0}'".format(self.bsm) tasks = self.db.query(sql) if len(tasks) == 0 : self.fxlog(self.bsm, "error", "任务标识错误[{0}]".format(self.bsm)) raise Exception("任务标识错误[{0}]".format(self.bsm)) self.task = tasks[0] def run(self): mxd = mp.MapDocument(self.mxd) df = mp.ListDataFrames(mxd)[0] # 市级行政区控制是否显示 layersj = mp.ListLayers(mxd, '市级行政区', df)[0] layersj.visible = True if len(self.xzqdm) == 6 : layersj.visible = False #县级行政区获取范围 layerxj = mp.ListLayers(mxd,'县级行政区',df)[0] query = "XZQDM like '{0}%'".format(str(self.xzqdm)) layerxj.definitionQuery = query # 所有图层 SW_XZQH layers = mp.ListLayers(mxd) query1 = "SW_XZQH like '{0}%'".format(str(self.xzqdm)) for layer in layers: if layer.name !='市级行政区' and layer.name !='县级行政区' : layer.definitionQuery = query1 df.extent = layerxj.getExtent() for elm in mp.ListLayoutElements(mxd, "TEXT_ELEMENT"): if elm.name == "zbt": elm.text = self.task['ZBT'] if elm.name == "fbt": elm.text = self.task['FBT'] if elm.name == "bzdw": elm.text = self.task['BZDW'] if elm.name == "bzrq": elm.text = self.task['BZSJ'] if elm.name == "ztsj": elm.text = self.task['ZTSJ'] if elm.name == "ztdw": elm.text = self.task['ZTDW'] mp.ExportToJPEG(mxd, self.jpg, resolution = 300) print("####OK####")