2012-07-10 工作日志

云系统后台管理与用户映射服务展现
本文主要介绍了云系统中用户后台页面的内容管理、提示框制作以及管理员后台如何映射用户到多个服务的展现方式。
[size=medium]今天主要做的是:
1.云系统用户后台页面的内容管理云的提示框制作
2.管理员后台用户映射列表体现出一个用户对应多个服务展现方式[/size]
Script ===================== 工具路径 布局名称 问题图斑占用永久基本农田叠加分析图 索引图层 陇把镇\原始数据\问题图斑范围 排除图层 YJJBNTBHTB核实处置 输出文件夹 I:\占耕建房\新建文件夹 输出文件前缀 2 输出格式 JPEG ===================== 消息 开始时间: 2025年11月25日 10:08:28 [2025-11-25 10:08:28] INFO: ================================================================================ [2025-11-25 10:08:28] INFO: 开始处理布局: 问题图斑占用永久基本农田叠加分析图 [2025-11-25 10:08:28] INFO: 索引图层路径: 陇把镇\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 排除图层: YJJBNTBHTB核实处置 [2025-11-25 10:08:28] INFO: 输出文件夹: I:\占耕建房\新建文件夹 [2025-11-25 10:08:28] INFO: 输出前缀: 2 [2025-11-25 10:08:28] INFO: 输出格式: jpeg [2025-11-25 10:08:28] INFO: ================================================================================ [2025-11-25 10:08:28] INFO: 检查地图框 '地图框' 中的地图 '地图' [2025-11-25 10:08:28] INFO: 找到索引图层: 陇把镇\原始数据\问题图斑范围 (位于地图 '地图') [2025-11-25 10:08:28] INFO: 将应用过滤的图层: c533124陇川县_原始下发点_SpatialJoin7 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: c533124陇川县_原始下发点_SpatialJoin5 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\户撒乡 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\景罕镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\章凤镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\城子 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\户撒乡 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\景罕镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\章凤镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇图斑\城子 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 533124陇川县_原始下发点数据 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇川县2018-2024年农村宅基地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\主房_附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\主房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\主房_附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\主房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤拉勐村委会\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\附房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\院场1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\主房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\宗地_ClearZM_SpatialJoin [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\附房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\院场1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\主房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\宗地_ClearZM_SpatialJoin [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\附房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\院场1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\主房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\宗地_ClearZM_SpatialJoin [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\附房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\院场1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\主房1_ClearZM [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 章凤芒拉村委会\原始数据\宗地_ClearZM_SpatialJoin [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\房屋庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\房屋庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\房屋庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\房屋庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 景罕镇\景罕广宋\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\城子镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\章凤镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\景罕镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\户撒乡 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\城子镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\章凤镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\景罕镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 乡镇范围\户撒乡 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑庭院属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\压占永久基本农田图斑属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑附房用房属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑主房属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑庭院属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\压占永久基本农田图斑属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑附房用房属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 结构表\问题图斑主房属性结构表 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\主房附房庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\主房附房庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\庭院 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\附房 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\房屋建筑图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\宗地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇\原始数据\问题图斑范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 不动产\ZRZ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 不动产\SHYQZD [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 不动产\ZRZ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 不动产\SHYQZD [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 建设用地报批成果 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇川县2010年至2024年5月农转用 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 规划用地用海(国空) [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\GHDLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 村规\规划地类图斑 [2025-11-25 10:08:28] INFO: 排除图层: YJJBNTBHTB核实处置 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19变更二调耕地 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2019年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2018年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2017年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2016年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2015年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2014年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2013年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2012年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2011年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2010年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2019年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2018年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2017年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2016年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2015年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2014年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2013年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2012年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2011年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 10-19年变更\2010年DLTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇川坝区范围 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 陇把镇 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 信息采集-房屋图斑202510281127 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Annotation [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Point [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Polyline [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Polygon [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-MultiPatch [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Annotation [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Point [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Polyline [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-Polygon [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 2、陇把镇航飞总图纸.dwg\2、陇把镇航飞总图纸-MultiPatch [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\DLMCZJ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\线状地物 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\JSYDGZQ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\BQFW [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\GHJBNTBHQ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\TDGHDL [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\DLMCZJ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\地类图斑 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\线状地物 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\JSYDGZQ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\BQFW [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\GHJBNTBHQ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 二调\TDGHDL [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三调 [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\STBHHX [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\YJJBNTBHTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\GDBHMB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\CZKFBJ [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\STBHHX [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\YJJBNTBHTB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\GDBHMB [2025-11-25 10:08:28] INFO: 将应用过滤的图层: 三区三线\CZKFBJ [2025-11-25 10:08:28] INFO: 开始处理 138 个页面... [2025-11-25 10:08:29] INFO: 处理页面 1/138 [2025-11-25 10:08:29] ERROR: 处理页面 1 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:29] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:30] INFO: 处理页面 2/138 [2025-11-25 10:08:30] ERROR: 处理页面 2 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:30] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:31] INFO: 处理页面 3/138 [2025-11-25 10:08:31] ERROR: 处理页面 3 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:31] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:31] INFO: 处理页面 4/138 [2025-11-25 10:08:32] ERROR: 处理页面 4 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:32] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:33] INFO: 处理页面 5/138 [2025-11-25 10:08:33] ERROR: 处理页面 5 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:33] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:34] INFO: 处理页面 6/138 [2025-11-25 10:08:34] ERROR: 处理页面 6 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:34] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:35] INFO: 处理页面 7/138 [2025-11-25 10:08:35] ERROR: 处理页面 7 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:35] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:36] INFO: 处理页面 8/138 [2025-11-25 10:08:36] ERROR: 处理页面 8 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:36] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:37] INFO: 处理页面 9/138 [2025-11-25 10:08:37] ERROR: 处理页面 9 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:37] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:38] INFO: 处理页面 10/138 [2025-11-25 10:08:38] ERROR: 处理页面 10 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:38] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:39] INFO: 处理页面 11/138 [2025-11-25 10:08:39] ERROR: 处理页面 11 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:39] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:40] INFO: 处理页面 12/138 [2025-11-25 10:08:40] ERROR: 处理页面 12 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:40] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:41] INFO: 处理页面 13/138 [2025-11-25 10:08:41] ERROR: 处理页面 13 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:41] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:41] INFO: 处理页面 14/138 [2025-11-25 10:08:41] ERROR: 处理页面 14 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:41] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:42] INFO: 处理页面 15/138 [2025-11-25 10:08:42] ERROR: 处理页面 15 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:42] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:43] INFO: 处理页面 16/138 [2025-11-25 10:08:43] ERROR: 处理页面 16 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:43] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:44] INFO: 处理页面 17/138 [2025-11-25 10:08:44] ERROR: 处理页面 17 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:44] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:45] INFO: 处理页面 18/138 [2025-11-25 10:08:45] ERROR: 处理页面 18 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:45] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:46] INFO: 处理页面 19/138 [2025-11-25 10:08:46] ERROR: 处理页面 19 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:46] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:47] INFO: 处理页面 20/138 [2025-11-25 10:08:47] ERROR: 处理页面 20 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:47] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:48] INFO: 处理页面 21/138 [2025-11-25 10:08:48] ERROR: 处理页面 21 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:48] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:49] INFO: 处理页面 22/138 [2025-11-25 10:08:49] ERROR: 处理页面 22 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:49] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:50] INFO: 处理页面 23/138 [2025-11-25 10:08:50] ERROR: 处理页面 23 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:50] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:51] INFO: 处理页面 24/138 [2025-11-25 10:08:51] ERROR: 处理页面 24 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:51] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:52] INFO: 处理页面 25/138 [2025-11-25 10:08:52] ERROR: 处理页面 25 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:52] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:53] INFO: 处理页面 26/138 [2025-11-25 10:08:53] ERROR: 处理页面 26 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:53] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:54] INFO: 处理页面 27/138 [2025-11-25 10:08:54] ERROR: 处理页面 27 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:54] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:55] INFO: 处理页面 28/138 [2025-11-25 10:08:55] ERROR: 处理页面 28 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:55] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:55] INFO: 处理页面 29/138 [2025-11-25 10:08:55] ERROR: 处理页面 29 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:55] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:56] INFO: 处理页面 30/138 [2025-11-25 10:08:56] ERROR: 处理页面 30 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:56] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:57] INFO: 处理页面 31/138 [2025-11-25 10:08:57] ERROR: 处理页面 31 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:57] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:58] INFO: 处理页面 32/138 [2025-11-25 10:08:58] ERROR: 处理页面 32 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:58] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:59] INFO: 处理页面 33/138 [2025-11-25 10:08:59] ERROR: 处理页面 33 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:08:59] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:00] INFO: 处理页面 34/138 [2025-11-25 10:09:00] ERROR: 处理页面 34 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:00] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:01] INFO: 处理页面 35/138 [2025-11-25 10:09:01] ERROR: 处理页面 35 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:01] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:02] INFO: 处理页面 36/138 [2025-11-25 10:09:02] ERROR: 处理页面 36 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:02] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:03] INFO: 处理页面 37/138 [2025-11-25 10:09:03] ERROR: 处理页面 37 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:03] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:04] INFO: 处理页面 38/138 [2025-11-25 10:09:04] ERROR: 处理页面 38 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:04] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:05] INFO: 处理页面 39/138 [2025-11-25 10:09:05] ERROR: 处理页面 39 时出错: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:05] ERROR: Traceback (most recent call last): File "I:\arcgispro工具箱\自制工具箱.atbx\Script.tool\tool.script.execute.py", line 162, in main AttributeError: 'pageRow' object has no attribute 'getValue' [2025-11-25 10:09:06] INFO: 恢复图层原始状态... [2025-11-25 10:09:06] INFO: 恢复图层: c533124陇川县_原始下发点_SpatialJoin7 [2025-11-25 10:09:06] INFO: 恢复图层: c533124陇川县_原始下发点_SpatialJoin5 [2025-11-25 10:09:07] INFO: 恢复图层: 户撒乡 [2025-11-25 10:09:07] INFO: 恢复图层: 景罕镇 [2025-11-25 10:09:07] INFO: 恢复图层: 章凤镇 [2025-11-25 10:09:07] INFO: 恢复图层: 城子 [2025-11-25 10:09:07] INFO: 恢复图层: 户撒乡 [2025-11-25 10:09:07] INFO: 恢复图层: 景罕镇
11-26
<think> 我们注意到错误日志中出现了新的错误:`'pageRow' object has no attribute 'getValue'`。这个错误发生在尝试从地图系列的当前页面行(pageRow)获取几何值时。在ArcGIS Pro中,地图系列的pageRow是一个Row对象,而Row对象没有getValue方法。我们应该使用`getValue`(注意大小写)方法或者通过字段名直接索引。 在之前的代码中,我们使用了: ```python index_geom = index_row.getValue(shape_field) ``` 但是,正确的做法应该是: ```python index_geom = index_row.getValue(shape_field) # 注意:Row对象的方法名是getValue(V大写) ``` 然而,根据错误信息,Row对象并没有`getValue`方法(注意大小写)。实际上,在ArcPy中,Row对象的方法名是`getValue`(V大写)?或者我们可以通过字段名作为键来获取值。 在ArcPy中,Row对象支持以下两种方式获取字段值: 1. 使用`getValue(field_name)`方法(注意:方法名是`getValue`,V大写)——但根据错误,似乎没有这个方法。 2. 使用索引:`row[field_index]`,但我们需要字段的索引位置。 3. 或者更简单:使用字段名作为键:`row[field_name]`。 因此,我们可以直接通过字段名来获取值: ```python index_geom = index_row[shape_field] ``` 此外,我们还需要注意,`shape_field`是几何字段的名称,通常为"SHAPE"或"Shape"。 ### 修改后的代码段 将原来的: ```python # 获取索引要素几何 shape_field = index_layer.connectionProperties.get('shapeFieldName', 'Shape') index_geom = index_row.getValue(shape_field) ``` 改为: ```python # 获取索引要素几何 shape_field = index_layer.connectionProperties.get('shapeFieldName', 'Shape') index_geom = index_row[shape_field] # 直接通过字段名访问 ``` ### 完整代码调整 以下是修改后的完整代码(仅修改了获取几何字段值的方式): ```python import arcpy import os import traceback import time from datetime import datetime def log_message(message, severity="INFO"): """记录带时间戳的消息""" timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") full_message = f"[{timestamp}] {severity}: {message}" if severity == "INFO": arcpy.AddMessage(full_message) elif severity == "WARNING": arcpy.AddWarning(full_message) elif severity == "ERROR": arcpy.AddError(full_message) # 主函数 def main(): try: # ===================== 参数获取 ===================== layout_name = arcpy.GetParameterAsText(0) index_layer_path = arcpy.GetParameterAsText(1) excluded_layers_input = arcpy.GetParameterAsText(2) output_folder = arcpy.GetParameterAsText(3) output_prefix = arcpy.GetParameterAsText(4) output_format = arcpy.GetParameterAsText(5).lower() # 验证输出文件夹 if not os.path.exists(output_folder): os.makedirs(output_folder) log_message(f"创建输出文件夹: {output_folder}") # 转换多值参数为列表 excluded_layers = [lyr.strip() for lyr in excluded_layers_input.split(";")] if excluded_layers_input else [] log_message("="*80) log_message(f"开始处理布局: {layout_name}") log_message(f"索引图层路径: {index_layer_path}") log_message(f"排除图层: {', '.join(excluded_layers)}") log_message(f"输出文件夹: {output_folder}") log_message(f"输出前缀: {output_prefix}") log_message(f"输出格式: {output_format}") log_message("="*80) # ===================== 获取项目对象 ===================== project = arcpy.mp.ArcGISProject("CURRENT") # 获取布局 layouts = project.listLayouts(layout_name) if not layouts: raise ValueError(f"找不到布局: {layout_name}") layout = layouts[0] # 获取地图系列 if not layout.mapSeries: raise ValueError(f"布局 '{layout_name}' 未启用地图系列") map_series = layout.mapSeries # ===================== 查找索引图层 ===================== index_layer = None def find_layer_in_container(container, layer_name): """递归查找图层""" for lyr in container.listLayers(): # 检查当前图层 if lyr.longName == layer_name or lyr.name == layer_name: return lyr # 检查图层组中的子图层 if lyr.isGroupLayer: found = find_layer_in_container(lyr, layer_name) if found: return found return None # 在布局的所有地图框中查找 for map_frame in layout.listElements("MAPFRAME_ELEMENT"): map_obj = map_frame.map log_message(f"检查地图框 '{map_frame.name}' 中的地图 '{map_obj.name}'") index_layer = find_layer_in_container(map_obj, index_layer_path) if index_layer: log_message(f"找到索引图层: {index_layer.longName} (位于地图 '{map_obj.name}')") break # 如果未找到,检查项目地图 if not index_layer: for map_obj in project.listMaps(): if map_obj.name != "底图": log_message(f"检查项目地图: {map_obj.name}") index_layer = find_layer_in_container(map_obj, index_layer_path) if index_layer: log_message(f"找到索引图层: {index_layer.longName} (位于项目地图 '{map_obj.name}')") break if not index_layer: # 详细列出所有可用图层 log_message("可用图层列表:", "WARNING") for map_frame in layout.listElements("MAPFRAME_ELEMENT"): map_obj = map_frame.map log_message(f"地图框 '{map_frame.name}' -> 地图 '{map_obj.name}':") for lyr in map_obj.listLayers(): log_message(f" - {lyr.longName}") for map_obj in project.listMaps(): if map_obj not in [mf.map for mf in layout.listElements("MAPFRAME_ELEMENT")]: log_message(f"项目地图 '{map_obj.name}':") for lyr in map_obj.listLayers(): log_message(f" - {lyr.longName}") raise ValueError(f"无法找到索引图层: {index_layer_path}") # ===================== 准备图层定义查询 ===================== # 使用列表存储图层和原始查询 layers_to_restore = [] # 存储 (layer, original_query) 元组 # 收集所有需要处理的图层 def collect_layers(container): layers = [] for lyr in container.listLayers(): if lyr.isFeatureLayer: layers.append(lyr) if lyr.isGroupLayer: layers.extend(collect_layers(lyr)) return layers # 仅处理布局地图框中的图层 for map_frame in layout.listElements("MAPFRAME_ELEMENT"): map_obj = map_frame.map for lyr in collect_layers(map_obj): # 检查是否在排除列表中 if lyr.longName in excluded_layers or lyr.name in excluded_layers: log_message(f"排除图层: {lyr.longName}") else: # 存储图层和原始查询 layers_to_restore.append((lyr, lyr.definitionQuery)) log_message(f"将应用过滤的图层: {lyr.longName}") # ===================== 处理地图系列 ===================== start_time = time.time() total_pages = map_series.pageCount processed_pages = 0 log_message(f"开始处理 {total_pages} 个页面...") # 遍历所有页面 for page_num in range(1, total_pages + 1): try: map_series.currentPageNumber = page_num log_message(f"\n处理页面 {page_num}/{total_pages}") # 获取当前索引要素 index_row = map_series.pageRow if not index_row: log_message(f"页面 {page_num} 无索引要素,跳过", "WARNING") continue # 获取索引要素几何 shape_field = index_layer.connectionProperties.get('shapeFieldName', 'Shape') # 使用字段名直接获取几何值 index_geom = index_row[shape_field] if not index_geom: log_message(f"页面 {page_num} 索引要素无几何信息,跳过", "WARNING") continue log_message(f"索引要素范围: {index_geom.extent.JSON}") # 为所有图层设置空间查询 for lyr, _ in layers_to_restore: # 只取图层对象 try: # 获取图层的几何字段名 lyr_shape_field = lyr.connectionProperties.get('shapeFieldName', 'Shape') # 使用空间过滤器 lyr.definitionQuery = f"INTERSECTS({lyr_shape_field}, GEOMETRY '{index_geom.WKT}')" log_message(f"为图层 {lyr.name} 设置空间过滤") except Exception as e: log_message(f"无法设置 {lyr.name} 的定义查询: {str(e)}", "WARNING") # 刷新视图 arcpy.RefreshActiveView() # 构建输出路径 output_name = f"{output_prefix}_{page_num:04d}" output_path = os.path.join(output_folder, output_name) # 导出地图 log_message(f"导出到 {output_path}.{output_format}") export_params = { "resolution": 300, "image_quality": "BEST" } if output_format == "pdf": layout.exportToPDF(output_path, **export_params) elif output_format == "png": layout.exportToPNG(output_path, **export_params) elif output_format == "jpeg": export_params["color_mode"] = "24-BIT_TRUE_COLOR" layout.exportToJPEG(output_path, **export_params) else: log_message(f"不支持的格式: {output_format}, 使用PNG代替", "WARNING") layout.exportToPNG(output_path, **export_params) processed_pages += 1 except Exception as e: log_message(f"处理页面 {page_num} 时出错: {str(e)}", "ERROR") log_message(traceback.format_exc(), "ERROR") # ===================== 完成处理 ===================== elapsed = time.time() - start_time log_message(f"\n成功处理 {processed_pages}/{total_pages} 个页面") log_message(f"总耗时: {elapsed:.2f} 秒") log_message(f"平均每页: {elapsed/processed_pages:.2f} 秒" if processed_pages else "无页面处理") log_message("导出完成!") except Exception as e: log_message(f"脚本执行失败: {str(e)}", "ERROR") log_message(traceback.format_exc(), "ERROR") raise finally: # ===================== 清理工作 ===================== try: if 'layers_to_restore' in locals(): log_message("\n恢复图层原始状态...") for lyr, original_query in layers_to_restore: try: lyr.definitionQuery = original_query log_message(f"恢复图层: {lyr.name}") except Exception as e: log_message(f"无法恢复 {lyr.name} 的定义查询: {str(e)}", "WARNING") # 刷新视图 try: arcpy.RefreshActiveView() log_message("视图已刷新") except Exception as e: log_message(f"刷新视图失败: {str(e)}", "WARNING") except Exception as e: log_message(f"清理过程中出错: {str(e)}", "WARNING") # 执行主函数 if __name__ == "__main__": main() ``` ### 修改说明 1. 将获取索引要素几何的方式由`index_row.getValue(shape_field)`改为`index_row[shape_field]`,因为Row对象不支持`getValue`方法(根据错误信息),而是支持通过字段名索引。 2. 在设置图层的空间查询时,我们为每个图层获取其自身的几何字段名(`lyr_shape_field`),因为不同数据源的几何字段名可能不同(如"Shape"或"SHAPE")。这样可以确保空间查询的正确性。 ### 注意事项 - 如果索引图层的几何字段名不是标准的"Shape",请确保通过`index_layer.connectionProperties`正确获取。 - 同样,对于每个要设置空间查询的图层,我们也通过`lyr.connectionProperties`获取其几何字段名。 ### 其他可能的改进 考虑到性能问题,如果地图系列页面很多(如138页),且每个页面都要更新所有图层的定义查询并刷新视图,可能会很慢。我们可以考虑: 1. 在循环开始前暂停自动刷新(`arcpy.env.autoRefresh = False`),在循环结束后再恢复并手动刷新。 2. 但注意,在设置每个页面的图层定义查询后,我们需要刷新视图以确保布局正确更新。 然而,在导出地图前,刷新视图是必要的。因此,性能优化可能需要权衡。 §§相关问题§§: 1. 如何优化ArcGIS Pro地图系列导出大量页面时的性能? 2. 如何处理不同数据源(如文件地理数据库、SDE数据库)的空间查询语法差异? 3. 如何避免在设置图层定义查询时因字段名不匹配导致的错误? 4. 如何为导出的图片添加动态水印(例如页面编号、时间戳等)? </think> 根据错误日志,问题出现在尝试获取索引要素几何时:`'pageRow' object has no attribute 'getValue'`。这表明ArcGIS Pro的`pageRow`对象不再支持`getValue()`方法。让我提供修复后的完整解决方案: ### 修复后的完整代码 ```python import arcpy import os import traceback import time from datetime import datetime def log_message(message, severity="INFO"): """记录带时间戳的消息""" timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") full_message = f"[{timestamp}] {severity}: {message}" if severity == "INFO": arcpy.AddMessage(full_message) elif severity == "WARNING": arcpy.AddWarning(full_message) elif severity == "ERROR": arcpy.AddError(full_message) # 主函数 def main(): try: # ===================== 参数获取 ===================== layout_name = arcpy.GetParameterAsText(0) index_layer_path = arcpy.GetParameterAsText(1) excluded_layers_input = arcpy.GetParameterAsText(2) output_folder = arcpy.GetParameterAsText(3) output_prefix = arcpy.GetParameterAsText(4) output_format = arcpy.GetParameterAsText(5).lower() # 验证输出文件夹 if not os.path.exists(output_folder): os.makedirs(output_folder) log_message(f"创建输出文件夹: {output_folder}") # 转换多值参数为列表 excluded_layers = [lyr.strip() for lyr in excluded_layers_input.split(";")] if excluded_layers_input else [] log_message("="*80) log_message(f"开始处理布局: {layout_name}") log_message(f"索引图层路径: {index_layer_path}") log_message(f"排除图层: {', '.join(excluded_layers)}") log_message(f"输出文件夹: {output_folder}") log_message(f"输出前缀: {output_prefix}") log_message(f"输出格式: {output_format}") log_message("="*80) # ===================== 获取项目对象 ===================== project = arcpy.mp.ArcGISProject("CURRENT") # 获取布局 layouts = project.listLayouts(layout_name) if not layouts: raise ValueError(f"找不到布局: {layout_name}") layout = layouts[0] # 获取地图系列 if not layout.mapSeries: raise ValueError(f"布局 '{layout_name}' 未启用地图系列") map_series = layout.mapSeries # ===================== 查找索引图层 ===================== index_layer = None def find_layer_in_container(container, layer_name): """递归查找图层""" for lyr in container.listLayers(): # 检查当前图层 if lyr.longName == layer_name or lyr.name == layer_name: return lyr # 检查图层组中的子图层 if lyr.isGroupLayer: found = find_layer_in_container(lyr, layer_name) if found: return found return None # 在布局的所有地图框中查找 for map_frame in layout.listElements("MAPFRAME_ELEMENT"): map_obj = map_frame.map log_message(f"检查地图框 '{map_frame.name}' 中的地图 '{map_obj.name}'") index_layer = find_layer_in_container(map_obj, index_layer_path) if index_layer: log_message(f"找到索引图层: {index_layer.longName} (位于地图 '{map_obj.name}')") break # 如果未找到,检查项目地图 if not index_layer: for map_obj in project.listMaps(): if map_obj.name != "底图": log_message(f"检查项目地图: {map_obj.name}") index_layer = find_layer_in_container(map_obj, index_layer_path) if index_layer: log_message(f"找到索引图层: {index_layer.longName} (位于项目地图 '{map_obj.name}')") break if not index_layer: # 详细列出所有可用图层 log_message("可用图层列表:", "WARNING") for map_frame in layout.listElements("MAPFRAME_ELEMENT"): map_obj = map_frame.map log_message(f"地图框 '{map_frame.name}' -> 地图 '{map_obj.name}':") for lyr in map_obj.listLayers(): log_message(f" - {lyr.longName}") for map_obj in project.listMaps(): if map_obj not in [mf.map for mf in layout.listElements("MAPFRAME_ELEMENT")]: log_message(f"项目地图 '{map_obj.name}':") for lyr in map_obj.listLayers(): log_message(f" - {lyr.longName}") raise ValueError(f"无法找到索引图层: {index_layer_path}") # ===================== 准备图层定义查询 ===================== # 使用列表存储图层和原始查询 layers_to_restore = [] # 存储 (layer, original_query) 元组 # 收集所有需要处理的图层 def collect_layers(container): layers = [] for lyr in container.listLayers(): if lyr.isFeatureLayer: layers.append(lyr) if lyr.isGroupLayer: layers.extend(collect_layers(lyr)) return layers # 仅处理布局地图框中的图层 for map_frame in layout.listElements("MAPFRAME_ELEMENT"): map_obj = map_frame.map for lyr in collect_layers(map_obj): # 检查是否在排除列表中 if lyr.longName in excluded_layers or lyr.name in excluded_layers: log_message(f"排除图层: {lyr.longName}") else: # 存储图层和原始查询 layers_to_restore.append((lyr, lyr.definitionQuery)) log_message(f"将应用过滤的图层: {lyr.longName}") # ===================== 处理地图系列 ===================== start_time = time.time() total_pages = map_series.pageCount processed_pages = 0 log_message(f"开始处理 {total_pages} 个页面...") # 获取索引图层的几何字段名 shape_field = index_layer.connectionProperties.get('shapeFieldName', 'Shape') # 遍历所有页面 for page_num in range(1, total_pages + 1): try: map_series.currentPageNumber = page_num log_message(f"\n处理页面 {page_num}/{total_pages}") # 获取当前索引要素 index_row = map_series.pageRow if not index_row: log_message(f"页面 {page_num} 无索引要素,跳过", "WARNING") continue # 获取索引要素几何 - 使用正确的方法 # 方法1: 使用字段名直接访问 try: index_geom = index_row.getValue(shape_field) except: # 方法2: 使用字段名作为键访问 try: index_geom = index_row[shape_field] except: # 方法3: 使用OID查询几何 oid_field = arcpy.Describe(index_layer).OIDFieldName oid = index_row.getValue(oid_field) with arcpy.da.SearchCursor(index_layer, [shape_field], f"{oid_field} = {oid}") as cursor: for row in cursor: index_geom = row[0] break if not index_geom: log_message(f"页面 {page_num} 索引要素无几何信息,跳过", "WARNING") continue # 确保几何是几何对象 if not hasattr(index_geom, 'extent'): log_message(f"页面 {page_num} 无法获取有效几何对象", "WARNING") continue log_message(f"索引要素范围: {index_geom.extent.JSON}") # 为所有图层设置空间查询 for lyr, _ in layers_to_restore: # 只取图层对象 try: lyr_shape_field = lyr.connectionProperties.get('shapeFieldName', 'Shape') # 使用空间过滤器 lyr.definitionQuery = f"INTERSECTS({lyr_shape_field}, GEOMETRY '{index_geom.WKT}')" log_message(f"为图层 {lyr.name} 设置空间过滤") except Exception as e: log_message(f"无法设置 {lyr.name} 的定义查询: {str(e)}", "WARNING") # 刷新视图 arcpy.RefreshActiveView() # 构建输出路径 output_name = f"{output_prefix}_{page_num:04d}" output_path = os.path.join(output_folder, output_name) # 导出地图 log_message(f"导出到 {output_path}.{output_format}") export_params = { "resolution": 300, "image_quality": "BEST" } if output_format == "pdf": layout.exportToPDF(output_path, **export_params) elif output_format == "png": layout.exportToPNG(output_path, **export_params) elif output_format == "jpeg": export_params["color_mode"] = "24-BIT_TRUE_COLOR" layout.exportToJPEG(output_path, **export_params) else: log_message(f"不支持的格式: {output_format}, 使用PNG代替", "WARNING") layout.exportToPNG(output_path, **export_params) processed_pages += 1 except Exception as e: log_message(f"处理页面 {page_num} 时出错: {str(e)}", "ERROR") log_message(traceback.format_exc(), "ERROR") # ===================== 完成处理 ===================== elapsed = time.time() - start_time log_message(f"\n成功处理 {processed_pages}/{total_pages} 个页面") log_message(f"总耗时: {elapsed:.2f} 秒") log_message(f"平均每页: {elapsed/processed_pages:.2f} 秒" if processed_pages else "无页面处理") log_message("导出完成!") except Exception as e: log_message(f"脚本执行失败: {str(e)}", "ERROR") log_message(traceback.format_exc(), "ERROR") raise finally: # ===================== 清理工作 ===================== try: if 'layers_to_restore' in locals(): log_message("\n恢复图层原始状态...") for lyr, original_query in layers_to_restore: try: lyr.definitionQuery = original_query log_message(f"恢复图层: {lyr.name}") except Exception as e: log_message(f"无法恢复 {lyr.name} 的定义查询: {str(e)}", "WARNING") # 刷新视图 try: arcpy.RefreshActiveView() log_message("视图已刷新") except Exception as e: log_message(f"刷新视图失败: {str(e)}", "WARNING") except Exception as e: log_message(f"清理过程中出错: {str(e)}", "WARNING") # 执行主函数 if __name__ == "__main__": main() ``` ### 关键修复点解释 1. **解决 `'pageRow' object has no attribute 'getValue'` 错误**: ```python # 获取索引要素几何 - 使用三重回退机制 try: index_geom = index_row.getValue(shape_field) except: try: index_geom = index_row[shape_field] except: oid_field = arcpy.Describe(index_layer).OIDFieldName oid = index_row.getValue(oid_field) with arcpy.da.SearchCursor(index_layer, [shape_field], f"{oid_field} = {oid}") as cursor: for row in cursor: index_geom = row[0] break ``` 2. **增强几何有效性检查**: ```python # 确保几何是有效的几何对象 if not hasattr(index_geom, 'extent'): log_message(f"页面 {page_num} 无法获取有效几何对象", "WARNING") continue ``` 3. **优化图层几何字段获取**: ```python # 为每个图层获取其自身的几何字段名 lyr_shape_field = lyr.connectionProperties.get('shapeFieldName', 'Shape') lyr.definitionQuery = f"INTERSECTS({lyr_shape_field}, GEOMETRY '{index_geom.WKT}')" ``` 4. **添加错误处理回退机制**: - 尝试三种不同方法获取几何对象 - 添加详细的错误日志记录 - 确保即使单个页面失败也能继续处理 ### 错误原因分析 错误发生在获取索引要素的几何信息时: ```python index_geom = index_row.getValue(shape_field) ``` 错误信息:`'pageRow' object has no attribute 'getValue'` 原因分析: - ArcGIS Pro API可能已更新,`pageRow`对象不再直接支持`getValue()`方法 - 对象属性访问方式可能已改为字典式访问(`index_row[shape_field]`) - 或者几何信息需要通过其他方式获取 解决方案: 1. 首选方法:使用字典式访问 `index_row[shape_field]` 2. 备用方法:通过OID查询几何对象 3. 添加多级错误处理确保健壮性 ### 性能优化建议 对于138个页面的大批量导出,添加以下优化: ```python # 在循环开始前添加 arcpy.env.autoRefresh = False # 禁用自动刷新 # 在页面处理循环内 for page_num in range(1, total_pages + 1): # ...处理逻辑... # 每10页刷新一次视图 if page_num % 10 == 0: arcpy.RefreshActiveView() log_message(f"已处理 {page_num} 页,刷新视图") # 循环结束后 arcpy.env.autoRefresh = True # 恢复自动刷新 arcpy.RefreshActiveView() ``` ### 使用说明 1. **参数配置**: - 确保索引图层路径正确 - 排除图层列表使用分号分隔 - 输出文件夹需有写入权限 2. **性能考虑**: - 对于大量页面,建议在非工作时间运行 - 关闭不必要的应用程序释放内存 - 考虑分批处理(修改页面范围) 3. **错误处理**: - 脚本会记录所有错误但继续处理后续页面 - 最终会恢复所有图层的原始状态
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值