123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # -*- coding: utf-8 -*-
- import os
- import arcpy
- import uuid
- from db.postgresql import Postgresql
- import appconfig
- from arcpy import env
- import platform
- 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.bsm = "d6acdfa1ee494a44a7f131abf69334b9"
- self.db = Postgresql(appconfig.DB_CONN)
- self.task()
- self.mxd = self.task['MBWJ']
- self.jpg = self.task['OUTPUT']
- self.extent = self.task['EXTENT']
- # self.jpg = "D:\\GeoScene\\work\\aprx\\export.jpg"
- def task(self):
- '''加载数据-任务'''
- sql = 'SELECT A.BSM AS "BSM",A.NAME AS "ZBT",A.dtsm AS "FBT",A.zzdw AS "BZDW",A.zzsj AS "BZSJ",a.zttwjlj as "OUTPUT",a.filepath as "EXTENT",B.MBMC AS "MBMC",B.MBWJ AS "MBWJ" FROM onemap.T_YZT_ZTTK A left JOIN onemap.T_YZT_ZTTMBK 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 get_layer_extent(self, layer):
- desc = arcpy.Describe(layer)
- if desc and desc.extent:
- return desc.extent
- return None
- # 获取系统默认下载路径
- def get_download_dir(self):
- if platform.system() == "Windows":
- return os.path.join(os.path.expanduser("~"), "Downloads")
- elif platform.system() == "Darwin":
- return os.path.join(os.path.expanduser("~"), "Downloads")
- elif platform.system() == "Linux":
- return os.path.join(os.path.expanduser("~"), "Downloads")
- else:
- return None
- def run(self):
- aprx = arcpy.mp.ArcGISProject(self.mxd)
- layout_doc = aprx.listLayouts()[0]
- for elm in layout_doc.listElements("TEXT_ELEMENT"):
- if elm.name == "zbt":
- elm.text = self.task['ZBT']
- elif elm.name == "fbt":
- elm.text = self.task['FBT']
- elif elm.name == "bzsj":
- elm.text = '制作时间:{0}'.format(self.task['BZSJ'])
- elif elm.name == "ztdw":
- elm.text = '制作单位:{0}'.format(self.task['BZDW'])
- mapframe = layout_doc.listElements("MAPFRAME_ELEMENT")[0]
- temp = self.get_download_dir()
- temp_layer = temp + "/extent.shp"
- arcpy.Delete_management(temp_layer)
- if '.shp' in self.extent:
- where = '1 = 1'
- arcpy.analysis.Select(self.extent, temp_layer, where)
- else:
- where = 'xzqdm = \'{0}\''.format(self.extent)
- env.workspace = appconfig.SDE["KJGH"]
- arcpy.analysis.Select("KJGH.XZQMERGE", temp_layer, where)
- temp_layer_extent = self.get_layer_extent(temp_layer)
- layer = mapframe.map.addDataFromPath(temp_layer)
- if layer.isFeatureLayer:
- sym = layer.symbology
- sym.renderer.symbol.color = {"RGB": [0, 0, 0, 0]}
- sym.renderer.symbol.outlineColor = {"RGB": [255, 0, 0, 100]}
- sym.renderer.symbol.outlineWidth = 3.0
- layer.symbology = sym
- mapframe.camera.setExtent(temp_layer_extent)
- layout_doc.exportToJPEG(self.jpg, resolution=300)
- arcpy.Delete_management(temp_layer)
- print("####OK####")
|