基于矢量切片的电子地图配图(八)配置兴趣点

兴趣点(POI,Point of Interest)的配置,难点在于抽稀。需要抽稀的原因是兴趣点数目过多,在某一级别(比例尺范围)下,都显示的话会出现压盖现象。


密集的兴趣点
密集的兴趣点

抽稀方法及简单原理


对于抽稀,目前有两种方法可以实现:
- 方法一:通过处理数据以使兴趣点不压盖。
- 方法二:通过制图的方式,将符号添加到标注中,通过标注的避让实现抽稀。点击查看ArcMap点抽稀文档。

以下是两种方法的优缺点比较:

方法 优点 缺点
方法一:处理数据 配图容易 数据处理数据麻烦,不好实现
方法二:制图方式 不会改变原始数据 配置步骤较多,目前仅能在ArcMap中实现


在ArcMap中,通过定义查询设置好每个级别POI的显示内容,再通过点抽稀的方法实现抽稀,保存mxd文档后,可以导入到ArcGIS Pro中。但是又出现了我们一开始提到的问题,几何会存在空间上的重叠。


定义每个级别显示的内容(左);对标注分类,每类配置不同的符号(右)
定义每个级别显示的内容(左);对标注分类,每类配置不同的符号(右)

ArcGIS Pro目前还不支持将符号添加到符号中实现点抽稀。没关系,还是有解决方法的。

如果我们知道每个级别显示的抽稀后的POI有哪些,新建个字段进行标识。依据这个标识字段,就可以在ArcGIS Pro中进行配置了。


思路如下:

1、ArcMap中,对POI设置点抽稀,标注显示在符号的周围的最佳位置;


(左)源数据;(中)设置点抽稀;(右)设置标注位置
(左)源数据;(中)设置点抽稀;(右)设置标注位置

2、为了获取标注显示的位置及对应的对应POI的ObjectID,将不同级别的POI图层标注分别转为注记;


(左)转注记;(中)2万比例尺下注记;(右)1万比例尺下注记
(左)转注记;(中)2万比例尺下注记;(右)1万比例尺下注记


注记的属性表
注记的属性表

3、一个POI点可能在各个级别下都显示,将首次出现的级别对应的比例尺写入新建字段中。这个值是该级别下最小可见比例尺。


比例尺的值写入Scale字段
比例尺的值写入Scale字段

以上思路是领导想出来了,配图的筒子们有福的,因为领导还给配套了GP工具,哇哈哈O(∩_∩)O。接下来我们来看操作步骤吧。

抽稀操作步骤


操作分两种情况:
- 一是针对已经在ArcMap中配置好的POI图层(如我们的北京案例);
- 二是针对没有配置的,仅有一个POI要素类的处理。

先分享下我们要用到的POI处理工具(链接:https://pan.baidu.com/s/1bpD7iSv 密码:jnp1),然后再讲怎么用。抽稀操作需要在ArcMap中进行。


用于辅助POI标注的配置
用于辅助POI标注的配置

先将Label注记,再获得抽稀结果
先将Label注记,再获得抽稀结果

情况一:针对已配置好的POI图层

1、标注转注记。
对于已经配置好的POI,我们可以直接运行VectorTileBaseMapTools工具箱里的多比例标注转注记FGDB。


多比例标注转注记
多比例标注转注记

参数解释如下:

  • mxd:输入的是我们已经配置好的mxd
  • 比例尺列表:输入比例尺列表,用逗号分隔开
  • 输出的FGDB:输出的FGDB路径及名称(注意不要加扩展名.gbd)

结果会生成mxd里所有图层的注记,会花一点点时间。所以,可以另存一个mxd,移除POI以外的图层,会节省一点时间。

2、抽稀
运行VectorTileBaseMapTools工具箱里的根据注记获得数据抽稀结果,加载刚才生成的关于POI的所有注记。


输出的结果是一张表。FeatureID是原POI要素类的OBJECTID,Scale是某级别比例尺下的最小值。


输出结果
输出结果

3、将这个比例字段连接到POI要素类中
使用GP工具Join Field(连接字段),将Scale字段添加到POI要素类中。


OK,ArcMap中的操作结束了。

情况二:针对仅有一个POI要素类的情况


那么如果没有配置好的mxd,我们先使用辅助配置POI标注的工具,配置好后,再重复上面的三步就可以了。

使用配置POI标注工具时,需要几个参数:

  • 标注字段;
  • 分类标注中各类的名字,如下图中的ATM、学校、医院等;
  • 各类别的查询表达式,如下图中,POI中哪些点表示ATM;
  • 各类别显示的比例尺,比如学校医院比较重要,从第10级就开始显示,ATM可能要从16级才开始显示。




这几个参数我们放到一张表里,输入相应的参数,只要维护表就可以了。云盘中有一张sample表,如下。


sample表
sample表

  • classname:对应分类标注中各类的名字;
  • aaa:对应各类别的查询表达式。需要注意的是,aaa还是Label Field(标注字段)的参数,如果标注字段是名称,那么aaa需要改为名称两个字。
  • minScale:最小可见比例尺;
  • maxScale:最大可见比例尺。


    修改后的Sample表
    修改后的Sample表

准备工作已做好,可以开始使用插件了。

1、ArcMap中加载插件。点击菜单栏【Customize】—【Add-In Manager】,选择【Options】标签,选择插件所在的位置。


添加插件
添加插件

2、将插件拖拽到工具条上。如果Add-in Manger关掉了,可以点击菜单栏【Customize】—【Customize Mode】打开Customize对话框。

3、选择POI图层,加载csv表格,点击Generate Label。


工具界面
工具界面

然后图层属性,Label标签下可以查看结果:


(左)POI的原始Labels页面;(右)配置后结果
(左)POI的原始Labels页面;(右)配置后结果

保存mxd,然后按照情况一:针对已配置好的POI图层中的步骤操作即可。

ArcGIS Pro里配置过程


还是通过我们的案例进行介绍。这里我们会用到显示过滤器设置比例范围内的可见要素。

注意:
如果你准备好了符号库(Style)文件,且你的POI里有字段标识使用的符号,那么请先移步到这个流程后,有介绍POI进行唯一值渲染后,如何快速给每类匹配上对应的符号的简单方法。

1、把POI图层从图层组中拖拽出来。POI从11级开始显示,设置POI图层符号和标注的可见范围。


设置符号的最小可见比例尺
设置符号的最小可见比例尺

2、去掉图层的定义查询表达式。如果没有设置定义查询,可跳过此步。


3、打开Symbology面板,调出显示过滤器面板。


显示过滤器面板
显示过滤器面板

4、勾选Enable dispalay filter。与优化符号类的可见比例范围设置方法类似,通过添加显示过滤器,先把所有级别都加好,再进行重命名。

注意:此设置不能单独保存为一个文件,以进行再次导入使用。


5、为每一级别添加查询表达式。点击级别前面的“+”,然后点击Add Clause,添加查询表达式,这就用到我们Scale字段了。写完后点击Add添加。


6、为每一类标注设置位置。可以选择最佳、右侧、左侧等。


7、为每一类选择符号。
默认是使用背景注释,矢量切片不支持。


默认的背景注释
默认的背景注释

可以将每个类别的注释类型改为None。再进行唯一值渲染,为每类选择符号(偷懒了,只选了4类)。


配置符号
配置符号

8、设置标注换行。最好的方法是使用表达式换行,空格等符号换行,矢量切片不支持。


代码如下:

Function FindLabel ( [名称] )
  if len( [名称]  ) > 6 Then
   FindLabel =mid( [名称] ,1,int( len( [名称]  ) / 2)) + chr(13) + mid( [名称] , int(len( [名称]  ) / 2)+1,(len( [名称]  )- int(len( [名称]  ) / 2)))
  else
   FindLabel = [名称] 
  end if
End Function

以上是ArcGIS Pro里配置的基本流程。如果类别过多,为每一类选择符号也有点麻烦,有个稍微简单一点的方法。思路是在ArcMap里进行唯一值渲染,导出lyr文件,加载到ArcGIS Pro中,替换数据源,再设置显示过滤器。

1、在ArcMap中对POI进行唯一值渲染,使用匹配符号的方式。(ArcGIS Pro里没有此方式)


点击Add Value后,选择Complete List,然后选中所有类别,点击OK。再为没有匹配上符号的点选择符号。当然,如果类别符号中的名字和Style符号都能一一匹配上,就不用修改啦。


2、为此图层设置显示标注后,再导出为lyr文件。图层,右键,选择【Save Layer File】。


好了,将此文件加载到ArcGIS Pro中,再进行相关设置就可以了。

PS:这篇写的有点啰嗦,实在不知道怎么写了,欢迎提建议~

猜你喜欢

转载自blog.csdn.net/ceibake/article/details/77924115