1、前言
最近项目需要通过软件出宗地图,但是软件输出的mxd未能达到成果要求,但是图的数量很大,人工修改会增加工作量,故想到通过arcpy批处理进行宗地图的整饰。
2、整饰要素
主要通过三个字段计算到需标注字段内,并进行符号编辑和标注。
a 首先获取文件夹下的所有mxd文档:
def GetAllFiles(dir):allmxd = []dirs = os.listdir(dir)for mxdfile in dirs:if mxdfile[-3:].lower() == 'mxd':allmxd.append(mxdfile)return allmxd
b 然后计算字段并标注
def LabelAndExport(mxd):export = "yes"for lyr in arcpy.mapping.ListLayers(mxd):if lyr.name == "FW_J_320507": ##FW进行标注fc = lyr.dataSourcecursor = arcpy.da.UpdateCursor(fc,["BZ","FWJG","FWCS","JGRQ"]) ##遍历游标for row in cursor: ##判断缺省值if row[1] == "0" or row[1] is None:arcpy.AddError("FWJG属性存在0或者空值,请检查。")arcpy.AddError("此mxd未整饰成功!")export = "no"breakelif row[2] == "0" or row[2] is None:arcpy.AddError("FWCS属性存在0或者空值,请检查。")arcpy.AddError("此mxd未整饰成功!")export = "no"breakelif row[3] is None:arcpy.AddError("JGRQ属性存在0或者空值,请检查。")arcpy.AddError("此mxd未整饰成功!")export = "no"breakelse: ##更新BZ字段并标注if caculate:row[0] = "3"+str(row[1])+"0"+str(row[2])+str(row[3])[0:4]cursor.updateRow(row)lyr.showLabels = Truefor lblclass in lyr.labelClasses:lblclass.showClassLabels = pression = '"<FNT name=""黑体"" size=""8"">"&[BZ]&vbnewline&"<und>"&[JZMJ]&"</und>"&"</FNT>"'export = "yes"mxd.save()
c 如果需要导出图片可加
if (EXPORT): ##导出图片if export == "yes":arcpy.mapping.ExportToJPEG(mxd, os.path.join(jpgpath, mxdFile[:-3] + 'jpg'), resolution=300)arcpy.AddMessage("正在输出宗地图...")else:arcpy.AddMessage("未输出宗地图...")del mxd
3、完整代码
# -*- coding: utf8 -*-
import arcpy
import os,time
dir = r'E:/'def GetAllFiles(dir):allmxd = []dirs = os.listdir(dir)for mxdfile in dirs:if mxdfile[-3:].lower() == 'mxd':allmxd.append(mxdfile)return allmxddef LabelAndExport(mxd):export = "yes"for lyr in arcpy.mapping.ListLayers(mxd):if lyr.name == "FW_J_320507": ##FW进行标注fc = lyr.dataSourcecursor = arcpy.da.UpdateCursor(fc,["BZ","FWJG","FWCS","JGRQ"]) ##遍历游标for row in cursor: ##判断缺省值if row[1] == "0" or row[1] is None:arcpy.AddError("FWJG属性存在0或者空值,请检查。")arcpy.AddError("此mxd未整饰成功!")export = "no"breakelif row[2] == "0" or row[2] is None:arcpy.AddError("FWCS属性存在0或者空值,请检查。")arcpy.AddError("此mxd未整饰成功!")export = "no"breakelif row[3] is None:arcpy.AddError("JGRQ属性存在0或者空值,请检查。")arcpy.AddError("此mxd未整饰成功!")export = "no"breakelse: ##更新BZ字段并标注if caculate:row[0] = "3"+str(row[1])+"0"+str(row[2])+str(row[3])[0:4]cursor.updateRow(row)lyr.showLabels = Truefor lblclass in lyr.labelClasses:lblclass.showClassLabels = pression = '"<FNT name=""黑体"" size=""8"">"&[BZ]&vbnewline&"<und>"&[JZMJ]&"</und>"&"</FNT>"'export = "yes"mxd.save()if (EXPORT): ##导出图片if export == "yes":arcpy.mapping.ExportToJPEG(mxd, os.path.join(jpgpath, mxdFile[:-3] + 'jpg'), resolution=300)arcpy.AddMessage("正在输出宗地图...")else:arcpy.AddMessage("未输出宗地图...")del mxdallmxds = GetAllFiles(dir)for mxdFile in allmxds:arcpy.AddMessage(mxdFile + ":")arcpy.AddWarning("程序开始" + " " + ime()))mxd = arcpy.mapping.MapDocument(os.path.join(dir, mxdFile))LabelAndExport(mxd)arcpy.AddWarning("程序结束" + " " + ime()))
本文发布于:2024-01-30 17:49:45,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170660818921765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |