简介:Mapping and Charting Solutions(资源一)是ArcGIS 10.2.2环境下的动态表格扩展模块,主要面向GIS开发工程师、制图人员以及需要在地图中加入交互式表格的中高级用户,用来弥补ArcGIS原生属性表在动态展示、联动查询、图表融合方面的不足。模块本体经博主亲测可用,整合了页面模板、前端脚本、样式配置与安装组件,既可快速部署到现有ArcGIS平台,也能作为二次开发的结构参考。包体共174个文件,以png、js、css、htm、gif为主,其中png与gif用于图标和操作示意,js与css支撑表格交互与界面风格,htm构成功能页面,db、xml、ini承担配置与小型数据存储,另有exe、msi、cab等安装相关文件,整体约638MB。目前已有2885人学习/下载。解压后按目录结构配合资源二的10.2补丁使用,即可获得完整的动态表格能力,为图层属性管理、数据浏览和图表联动提供现成的解决方案。 前几年我接手一批分幅地形图的出图任务,图廓外的坐标表、地类统计表需要逐幅填写。最初的做法是从属性表导出Excel,统计完再复制进ArcMap布局,十几幅图还能硬撑,一旦到了上百幅,每天一半时间都耗在表格里。后来同事推荐了Esri官方的Mapping and Charting Solutions扩展模块,我在ArcGIS 10.2.2上装好并用了起来,这个动态表格扩展模块确实能解决批量制图里最磨人的表格问题。
下面把整个过程拆开说,从模块定位、版本核对、安装加载,到实际配置步骤,再到我亲测时踩过的坑。如果你正守着ArcGIS 10.2.2做分幅图、专题图,或者为图廓整饰效率发愁,这篇可以直接照着操作。
1. 动态表格扩展模块到底解决了什么问题
1.1 传统图廓表格制作流程的瓶颈
ArcMap自带的属性表,本质上是一个数据查看窗口,不是面向制图输出的元素。常规做法是在内容列表中选中图层,打开属性表,把需要的字段内容复制出来,再粘到Word或Excel里排版,最后插入ArcMap布局。这个过程数据一变化就得重新来一遍。
分幅图特别要命。每幅图范围的统计值都不同,图号、坐标系、坐标表、面积汇总、图例项这些内容密集地排在图廓外,做一个图幅至少需要半小时填表。我当时手头是1比1万的地形图分幅任务,标准图幅光坐标表就有四列,几十幅图做完,我整个人对表格已经麻木了。
传统流程还有一个数据一致性问题。属性表里改了字段值,布局里的表格不会同步变,往往图已经导出PDF了,才发现某个表里的数字还是旧版本。这种错一旦交付,往往牵涉到返工和重新走校审流程。
1.2 动态表格的核心机制:字段映射加自动刷新
动态表格跟普通静态表格最大的区别,在于它不是一个“画死”的表格对象,而是以图层字段为数据源的动态渲染对象。
我理解它的工作逻辑是:插入表格时,指定一个图层作为数据源,再把表格的列和属性表的字段一一绑定。比如坐标表,X坐标列绑定Shape字段的X坐标属性,Y坐标列绑定Y坐标属性,图号列绑定图幅名字段。表格在页面布局中渲染时,会实时读取当前要素的属性并填到对应单元格里。
这个机制结合数据驱动页面后价值就出来了。数据驱动页面每翻到下一个图幅,当前范围对应的要素会变,动态表格读取到的新属性也会跟着变,不需要人工干预。我用它跑了一轮任务,几十幅图的表格自动刷新,每幅图只需要在导出前检查一下字体和文本有没有溢出,工作量降了一大截。
1.3 这套模块不只是表格
Mapping and Charting Solutions是Esri推出的一套面向地图制图和图表生产的功能集合,动态表格只是其中一个模块。同一套包里通常还包含一些地图整饰的辅助工具,比如图廓线、坐标网标注、分幅批量处理相关的功能,以及一些针对标准制图流程的符号资源。
对这个背景了解清楚很有用。因为很多人装完扩展后,只看到Dynamic Table按钮,以为安装不完整,其实其他功能可能只是分布在不同的菜单或工具条里。我当时也一度以为只装了一个表格工具,后来才在工具栏列表里发现其他相关项。这也是我写这篇的原因之一,让后装的同事少绕一点路。
2. 版本核对与环境准备不能省
2.1 为什么锁定ArcGIS 10.2.2
ArcGIS Desktop 10.2.2发布于2014年左右,算是一个相当稳定的版本。很多测绘单位的生产环境至今仍停留在这个版本上,原因是数据成果标准、符号库、字体库、打印模板都已经在这个版本下调完,软件升级带来的适配成本往往比收益还高。
Extension模块跟主版本不是完全通用的。Mapping and Charting Solutions的安装包和功能编译版本需要匹配主程序,直接把新版本扩展装到10.2.2上,很多时候会提示版本不匹配或者根本加载不出来。我查到的信息是,10.2.x系列有对应的分发包,装10.3及以上版本的分发包到10.2.2上是行不通的。这也是标题里特意标注ArcGIS 10.2.2的原因——装错版本是这类扩展最常见的失败原因。
2.2 安装前的环境检查清单
在双击安装包之前,我建议先过一遍下面这些项目,避免装到一半出幺蛾子:
- 操作系统:10.2.2对Windows 7 SP1兼容性最好,Windows 10上部分环境需要右键选择“兼容性疑难解答”,否则安装过程可能一闪而过。
- Desktop主程序位数:桌面端的扩展模块位数要跟ArcGIS Desktop一致。10.2.2时代常见的是32位安装包,如果机器上装的是64位主程序,安装时要看清匹配关系。
- 当前账户权限:安装必须用管理员账户执行,普通域账户经常在向注册表写入许可信息时被拦。
- 杀毒软件:安装包里的授权服务和部分组件会被杀毒软件误报,安装前先退出实时监控,装完再打开。
- 备份Normal.mxt模板:ArcMap的界面配置都存这个文件里,加载模块前建议备份,万一工具栏配置乱了可以还原。
我在一台老工作站上装的时候,前期跳过管理员账户判断,结果安装完成但ArcMap里看不到任何扩展项,后来用管理员身份重新跑了一遍修复安装才正常。
2.3 许可配置的几种情况
许可这块很多人的认知有偏差。Mapping and Charting Solutions这类扩展模块,并不是装完就能用,还需要许可服务认可。
我们单位当时用的是Desktop Advanced的浮动许可。在License Manager里确认模块授权后,客户端的ArcGIS Administrator会列出已获得的扩展模块。我用下来的体会是,Advanced许可对这个模块的支持最完整,Standard环境在某些功能上有限制,个别工具按钮直接置灰。
如果你是自己学习测试,可以留意Esri官方的试用许可通道,先把整个流程跑通再决定是否部署到生产环境。千万不要在非正式渠道下载来路不明的授权文件,这类文件的稳定性不可控,还会给生产数据带来安全隐患。
3. 安装与加载的完整实测
3.1 安装包执行步骤
拿到对应的安装包后,我的操作顺序是这样的:
- 退出ArcMap和其他Esri后台进程,避免文件占用导致安装中断。
- 解压安装包到纯英文路径下,路径不要带中文或特殊字符,否则部分组件装载会异常。
- 找到Setup.exe,右键选择“以管理员身份运行”。
- 安装过程中选择组件时,保持默认全选,不建议自定义裁剪,因为你很难判断哪个组件是许可服务依赖的。
- 如果安装程序提示需要重启,按要求重启后再继续后续步骤。
整个安装过程大约需要几分钟。装完后我先打开ArcGIS Administrator检查模块状态,确认许可字段里出现了“产品名称/已许可”的标志。
3.2 在ArcMap中勾选扩展模块
这一步经常有人漏掉。扩展装好了,在ArcMap中不会自动启用,需要到自定义设置里手动打开:
打开ArcMap,菜单栏进入Customize(自定义)菜单,选择Extensions(扩展模块),在列表里找到Mapping and Charting Solutions相关项,勾选启用。
勾选后,还要确认工具条出现在界面上。在Customize菜单中选择Toolbars,找到Dynamic Table或Mapping and Charting相关工具条名称并勾选。这时候鼠标点击工具条上的按钮,能正常弹出窗口,基本说明加载成功。
有些环境在第一次打开工具条时,界面反应会比较慢,特别是旧机器,这不是死机,是模块在初始化符号和字体资源,等几秒就好。
3.3 验证安装是否真正成功
验证环节不能省。我通常用三个快速检查来判断模块是否可用:
- 在布局视图下新建一个空白版式,点击工具条上的动态表格插入按钮,看能否弹出配置对话框。
- 在配置对话框里尝试选择一个图层,看字段下拉列表是否正常读取数据源字段。
- 插入表格对象后,关闭再打开属性表,修改一个字段值,回到布局看表格里的对应数值是否变化。
这三个检查通过,基本可以确定模块和许可都正常。如果第一个检查就失败,问题多半出在许可服务或模块加载上,可以直接跳到第5节的排查思路看。
4. 动态表格在数据驱动页面里的实战配置
4.1 插入动态表格对象
模块加载完成后,我会先在布局视图里做一张标准图廓模板,然后把动态表格对象放进去。
操作入口在Insert(插入)菜单下,选择动态表格,系统会弹出配置对话框。这里的数据源选择比较关键——不是选需要显示的表,而是选图廓表格所对应的那个地图图层。表格的每一列都从图层属性表里取数。
第一次使用时建议先建一张“对照表”来梳理对应关系:目标表格列、来源字段、统计方式、显示格式四个部分单独列出来。拿坐标表举例,目标列坐标X对应Shape的质心X,坐标Y对应质心Y,图号对应图名字段。对应关系理清楚后,在对话框里填充会快很多。
4.2 字段映射和统计方式配置
动态表格支持的不只是直接取字段值,还支持简单的统计聚合。这在图廓外的面积汇总表、数量统计表里非常实用。
配置列时有几个选项需要关注:
| 配置项 | 说明 | 我的建议 |
|---|---|---|
| 数据源图层 | 表格数据的来源 | 选当前数据驱动页面绑定的图层 |
| 字段映射 | 列与属性的绑定关系 | 逐个核对字段别名,避免显示字段代码 |
| 统计类型 | SUM、COUNT、AVERAGE等 | 统计表用SUM或COUNT,参考表用字段值 |
| 显示格式 | 数字保留位数、千分位 | 坐标值建议保留3位小数,面积值看项目要求 |
| 表头样式 | 首行、首列是否特殊显示 | 按出图标准设置,注意字体兼容性 |
聚合统计这个功能帮了我大忙。原来地类面积统计表是人工在Excel里做透视表,再贴回ArcMap,现在动态表格直接对当前图幅范围的地类图斑做SUM聚合,数值和图形保持一致。
4.3 与数据驱动页面的联动设置
动态表格的强大之处,要配上数据驱动页面才能完全释放。
数据驱动页面按图幅范围建立索引,切换到任意图幅时,地图显示范围、比例尺、图例到动态表格,都应该联动更新。实际配置中,我建议在数据驱动页面的设置里把“动态表格的数据源”和“页面定义”绑定到同一个索引图层上。
绑定完成后,测试方式是逐页切换并在布局视图中观察表格数值。如果某些页面的表格出现了横线或“空白”,通常是这个图幅范围内没有匹配的要素,需要检查数据源有没有空值,或者字段绑定的属性是否在图幅外的要素上。
4.4 表格样式和导出细节
图廓表格在屏幕上看着正常,导出PDF或打印时却经常出问题,字体和线型是重灾区。
我一般会把动态表格里的文本字体单独配置成“宋体”或“黑体”,这些字体在打印服务里稳定。千万不要用系统提示的装饰字体,同一套模板换到别的机器上直接变方块。表格边框线宽我习惯统一设为0.4毫米,太细打印出来断线,太粗又显得笨重。
导出时还有一个细节:如果PDF里表格文字发虚,检查ArcMap的导出选项里是否启用了“嵌入字体”。用动态表格的场景,这选项务必打开,否则换一台没有对应字库的电脑打开PDF,表格内容会错乱。
5. 亲测踩坑记录:三个高频问题
5.1 模块加载了,菜单却灰掉
这个问题最容易误导人。我在测试机上遇到过模块已经勾选、工具条也显示绿色的小图标,但点击动态表格按钮完全没有反应,菜单项也是灰的。
排查过程是先看当前是否处于布局视图。动态表格是布局元素,必须在布局视图下才能插入,数据视图里按钮灰掉是正常表现。排除这个原因后,再看数据框里是否存在可用的图层,空数据框同样会导致按钮不可点。
如果这两项都没问题,接下来检查数据库连接。动态表格需要从数据源读取字段结构,如果数据源是网络数据库且连接已经断开,配置对话框根本弹不出来。
这个排查链路里每一步都能用界面操作验证,从灰到亮的过程基本能定位90%以上的问题。
5.2 翻页后表格内容不刷新
数据驱动页面翻页后,表格还停留在上一幅图的数据,这个问题我调试了一段时间。
最开始我以为是动态表格和页面没有绑定,重新指定了绑定对象还是不行。后来发现问题出在页面切换时,视图状态没有强制刷新——插入了动态表格之后,布局里对象较多时,ArcMap不会主动重绘所有元素。
解决办法其实简单:切页后执行一下刷新操作。我习惯在数据驱动页面工具条上点击“刷新”按钮,或者直接右键图层选择“刷新”一次。规范的操作流程是在每个页面导出前安排一次视图刷新,这样既能确保表格同步,也能顺势检查要素有没有变形。
如果你的模板固定用于批量出图,建议在数据驱动页面设置里把“页面更新时刷新所有布局元素”选项打开,一劳永逸。
5.3 中文方块和字体错乱
第三方字体是这块最大的不稳定因素。我在一台新装系统的电脑上打开老模板,坐标表里的中文全部变成方块,数字和英文正常。
排查后定位是缺少相关中文字体,但更隐蔽的问题是部分字体名称在不同操作系统上的别名不一致。模板配置里存的是字体显示名,换到新机器后系统映射到不同字体,中文编码解析失败就成了方块。
我的处理办法是在模板里规定两个核心字体交替使用,宋体负责正文,黑体负责表头,并把这几个字体文件放入系统的字体目录。换到新环境时优先安装字体,再打开模板。不要用仿宋或者个别第三方公文类字体,它们在ArcMap渲染里兼容性最差。
另外,在ArcMap的选项里可以调整默认字体替换策略,把“使用替换字体”改成“始终使用设定的字体”,能减少异常替换的概率。
6. 最后分享几个亲测有效的小技巧
整个流程走通之后,我对这种制图扩展模块的态度是:不能等任务来了再研究,而是要提前把它埋进标准模板里。
我现在做新项目的固定套路是先搭好图廓模板,把动态表格、图例框、比例尺、坐标网格一次性配置好,存成模板文件。后面套图幅只需替换数据源,表头、字段映射、统计方式基本不动,出图效率非常稳定。
坐标显示格式这里再提醒一句,分幅图地形图的坐标值往往需要带带号和北向偏移,如果直接绑定Shape的经纬度字段,还得在显示格式里手动处理。我的做法是在属性表里预先计算好几个坐标文本字段,表格直接绑定这些文本字段,减少配置时的复杂度。
这套资源的整理我计划做成一个系列,本文算是第一期,重点放在动态表格扩展模块的安装和基础用法。后面我还想把分幅图自动化出图、标准图廓模板、批量导出PDF这些内容单独拿出来分享,特别是模板批量分发时如何处理字体和符号库依赖的问题。要是你也在这条生产线上折腾,希望这篇的实际操作经验能让你少走几步弯路。
本文还有配套的精品资源,点击获取