ztt20241015.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import sys
  4. import log
  5. import arcpy
  6. # import utils
  7. import appconfig
  8. # import arcpy
  9. import arcpy.mp as mp
  10. from db.postgresql import Postgresql
  11. import importlib, sys
  12. importlib.reload(sys)
  13. class Ztt:
  14. def __init__(self, data):
  15. self.db = Postgresql(appconfig.DB_CONN)
  16. self.bsm = data["bsm"]
  17. self.mxd = data["mxd"]
  18. self.jpg = data["jpg"]
  19. self.task()
  20. def task(self):
  21. '''加载数据-任务'''
  22. sql = "select a.BSM as \"BSM\",a.XZQDM as \"XZQDM\",A.ZBT as \"ZBT\",A.FBT as \"FBT\",A.BZDW as \"BZDW\",A.BZSJ as \"BZSJ\",A.ZTSJ as \"ZTSJ\",A.ZTDW as \"ZTDW\",B.MBMC as \"MBMC\",B.MBWJ as \"MBWJ\" from onemap.T_YZT_ZTT a JOIN onemap.T_YZT_ZTTMB b on a.MBBSM = b.BSM where a.BSM='{0}'".format(
  23. self.bsm)
  24. tasks = self.db.query(sql)
  25. if len(tasks) == 0:
  26. self.fxlog(self.bsm, "error", "任务标识错误[{0}]".format(self.bsm))
  27. raise Exception("任务标识错误[{0}]".format(self.bsm))
  28. self.task = tasks[0]
  29. def run(self):
  30. mxd = mp.MapDocument(self.mxd)
  31. xzqdm = self.task['XZQDM']
  32. if xzqdm and xzqdm != '':
  33. df = mp.ListDataFrames(mxd)[0]
  34. # 市级行政区控制是否显示
  35. layersj = mp.ListLayers(mxd, '市级行政区', df)[0]
  36. layersj.visible = True
  37. if len(xzqdm) > 4:
  38. layersj.visible = False
  39. # 县级行政区获取范围
  40. layerxj = mp.ListLayers(mxd, '县级行政区', df)[0]
  41. query = "XZQDM like '{0}%'".format(str(xzqdm))
  42. layerxj.definitionQuery = query
  43. # 所有图层 必须都带有 SW_XZQH
  44. layers = mp.ListLayers(mxd)
  45. query1 = "SW_XZQH like '{0}%'".format(str(xzqdm))
  46. for layer in layers:
  47. if layer.name != '市级行政区' and layer.name != '县级行政区':
  48. layer.definitionQuery = query1
  49. df.extent = layerxj.getExtent()
  50. for elm in mp.ListLayoutElements(mxd, "TEXT_ELEMENT"):
  51. if elm.name == "zbt":
  52. elm.text = self.task['ZBT']
  53. if elm.name == "fbt":
  54. elm.text = self.task['FBT']
  55. if elm.name == "bzdw":
  56. elm.text = self.task['BZDW']
  57. if elm.name == "bzrq":
  58. elm.text = self.task['BZSJ']
  59. if elm.name == "ztsj":
  60. elm.text = self.task['ZTSJ']
  61. if elm.name == "ztdw":
  62. elm.text = self.task['ZTDW']
  63. mp.ExportToJPEG(mxd, self.jpg, resolution=300)
  64. print("####OK####")