1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # -*- coding: utf-8 -*-
- import os
- import arcpy
- import uuid
- import arcpy
- class FzxzMap:
- def __init__(self):
- self.root = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../mxds/fzxz"))
- self.aprx = os.path.join(self.root, r"FzxzMap.aprx")
- self.shp = os.path.join(self.root, r"fzxz.shp")
- # 获取图层的范围
- def get_layer_extent(self, layer):
- desc = arcpy.Describe(layer)
- if desc and desc.extent:
- return desc.extent
- return None
- def run(self):
- aprx = arcpy.mp.ArcGISProject(self.aprx)
- map_doc = aprx.listMaps()[0]
- layF = map_doc.listLayers('fzxzF')[0]
- layM = map_doc.listLayers('fzxzM')[0]
- jpgPath = ""
- cursor = arcpy.da.SearchCursor(self.shp, ['BSM', 'RWBSM'])
- for row in cursor:
- bsm = row[0]
- rwbsm = row[1]
- if jpgPath == "":
- jpgPath = os.path.join(self.root, "jpgs", str(rwbsm))
- if not os.path.exists(jpgPath):
- os.makedirs(jpgPath)
- where = "BSM='{}'".format(str(bsm))
- # print(where)
- if layF.supports('DefinitionQuery'):
- dql = layF.listDefinitionQueries()
- # dql = []
- for dq in dql:
- dq['isActive'] = False
- dql.append({'name': bsm, 'sql': where, 'isActive': True})
- layF.updateDefinitionQueries(dql)
- # aprx.save()
- # 全局
- fileF = os.path.join(jpgPath, '{0}_F.jpg'.format(bsm))
- if not os.path.exists(fileF):
- if layF:
- local_extent = self.get_layer_extent(layF)
- # print(local_extent)
- map_doc.defaultCamera.setExtent(local_extent)
- # aprx.save()
- map_doc.defaultView.exportToJPEG(fileF, width=400, height=240, resolution=300)
- print(fileF.replace("Z:", "").replace("\\", "/"))
- # 局部
- fileM = os.path.join(jpgPath, '{0}_M.jpg'.format(bsm))
- if not os.path.exists(fileM):
- if layM:
- temp_layer = r"in_memory\selected_layer" + bsm
- arcpy.analysis.Select(layF, temp_layer, where)
- # 获取临时选择图层的范围
- temp_layer_extent = self.get_layer_extent(temp_layer)
- map_doc.defaultCamera.setExtent(temp_layer_extent)
- # aprx.save()
- map_doc.defaultView.exportToJPEG(fileM, width=400, height=240, resolution=300)
- print(fileM.replace("Z:", "").replace("\\", "/"))
- # map = FzxzMap()
- # map.run()
|