Arcmap中的符号化非常简单,但前提是有对应的符号库。自己拿到一个新的制图标准的话,一个一个制作就有点繁琐了。在Arcmap中对要素进行符号化时,要想根据已有的符号规则进行快速符号化,要么用Layer文件进行更新,要么用符号化匹配的方式。这两个方法都是在有符号库的时候好用,但是如果没有符号库,自己一个个编辑太慢了。比如在做城市规划符号库的时候,各个用地只是颜色改变了,而大类小类加起来一百多个,常用的也几十个,是要花点时间,但好处是一次做好符号可以一劳永逸。而ArcgisPro却可以用脚本进行渲染了,甚至可以根据给定的RGB值进行渲染,不像arcmap中必须用已有的lyr来更新。
刚开始接触ARCGIS PRO,相比arcmap而言,界面变化非常大,用exeinfo查询一下pro2.5里面的arcgispro.exe,发现是用VS2015 .NET编译的,难怪界面看起来好看多了。
先不管好不好用,主要是好看。变化后的很多工具都直接集成到菜单工具栏下,比原来小图标需要自己调出来,感觉方便了那么一点。但是有一个缺点,菜单工具栏等其他界面变大了,那么数据视图就被侵占了,习惯就好,有得必有失。
来都来了,怎么能不更新一个python小技巧呢。在使用了ArcgisPro后,发现了Arcpy.mp模块升级了很多功能,其中有一条UniqueValueRenderer类,现在居然可以直接用代码设置各个类型的颜色。具体的用法可以参考官方文档:
https://pro.arcgis.com/zh-cn/pro-app/arcpy/mapping/uniquevaluerenderer-class.htm。
有arcmap中python的代码基础,这个的主要思路很简单。就是使用xlrd模块读取各用地的RGB值,然后使用UniqueValueRenderer类进行渲染。接下来就是具体的过程介绍了,首先我们新建一个工程,可以看到默认的图层有世界地形图和全球山影,以后出图方便。
随便加载一个用地图层,在pro中加载数据后移动数据时有延时特效,感觉顺滑了很多。默认的显示是普通渲染,和arcmap一样。
我们在网络上找到了一些城市用地分类制图规范,制作了一个表格,样表如下图所示。记录了每个用地的用地代码,名称,还有对应的RGB值,这里是以湘源控规里的颜色作为用地标准。
完整代码如下所示,这里设置的是对map中第一个图层进行符号化:
界面变化后,打开python的位置也有一点变化。
代码运行后,简简单单40来行,还你一个五颜六色的图层: