利用arcpy进行地图整饰

阅读: 评论:0

利用arcpy进行地图整饰

利用arcpy进行地图整饰

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小时内删除。

标签:地图   arcpy
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23