帮助里对空间连接的解释:
根据空间关系将一个要素的属性连接到另一个要素。
目标要素和来自连接要素的被连接属性写入到输出要素类。
如上图所示,关键在于空间关系,只有当两个要素存在空间关系的时候,空间连接才有用武之地。
这里以ArcGIS Pro为例,有2种方法可以打开工具。
一是找到【分析工具-叠加分析-空间连接】。
二是直接在地理处理最上方的搜索栏里搜索【空间连接】。
打开工具,可以看到下面的工具界面:
1)目标要素
工具会在目标要素的基础上,将连接要素的字段添加到目标要素上,然后作为新要素输出 。
【目标要素的图形+字段+连接要素的字段(可选)=输出要素】。
2)连接要素
如参数1所示,连接要素的图形是不会输出的,只会保留部分连接的字段。
3)输出要素类
输出要素类保留了目标要素的图形和字段,另外也保留了连接要素的字段(按你选择的),如果二者有空间关系的话,相应的字段值也会保留下来。
以上面的例子:
连接要素中的【KFQMC、Shape_Length、Shape_Area】字段被连接到目标要素中。
(这里的Shape_Length、Shape_Area其实是Shape_Length_1、Shape_Area_1,因为目标要素中有同名字段,就被重命名了。不过这不重要,这2个字段一般情况是没用的)
可以看到连接要素字段的字段值中有一些是空值,这是因为这几个图斑和目标要素是没有相交的。
4)连接操作
有时候,1个目标要素会和多个连接要素具有相同的空间关系,这时候就要区别一下连接的操作类型。包括【一对一连接、一对多连接】。
【一对一连接】: 例如,如果两个独立的连接要素中找到了同一个目标要素,输出要素也只会生成一个要素,要素的字段值会根据规则进行聚合计算。
输出要素的个数和目标要素个数一致。
如果一个要素的属性值为3,另一个要素的属性值为7,且指定了“总和”合并规则,则输出要素类中的聚合值将为10。
截图所示是合并规是总和的情况,箭头所示地块的连接要素有2个【SZ字段为3和7】,连接后输出要素的SZ字段值为10。
这个功能一般可用于统计。
如果想取其中一个要素的属性值,像上面的情况,取3或者7。那就可以将合并规则改为【第一个】。
【一对多连接】:例如,如果两个独立的连接要素中找到了同一个目标要素,输出要素会生成两个重叠的要素,两个要素的字段值分别由连接要素中获取。
输出要素的个数要比目标要素个数多。
如上图所示,一对多连接后,要素数从49变成了54,多出来的5个就是重叠的部分。
5)保留所有的目标要素
如字面意思,如果不勾选这个选项,与连接要素没有空间关系的目标要素就不会保留。
如果勾选,没有空间关系的要素仍然保留,但是相应的字段值是空值,如果不想要,也可以后续通过筛选空值去除掉。
所以一般情况下都是要保留的。
6)匹配选项
空间关系有很多种:
截图没截全,这里也只介绍几个常用的。
如果想深入学习,需要自行探索,帮助里都有。
【相交】:这是最常用的,上面的例子也是基于相交,这是工具的默认设置。
【包含】:这个其实是相交很像,不常用,适用的情况基本都用相交了。
【完全包含】:如字面意思,只有完全包含才会被连接。
【与其他要素相同】:连接要素和目标要素必须具有相同的形状类型,并且在空间关系上是完全一致的。
【最近】:匹配连接要素中与目标要素最近的要素。
7)搜索半径
这个要和参数6配合使用,以相交为例,如果要素之间并没有相交,但是距离很近,可以设置一个探索半径,结果就可以当作相交来处理。
如上图所示,目标要素和连接要素并没有相交,但是如果把搜索半径设为50米,生成结果会发现已经把字段值连接上去了,而不是空值。
8)字段映射
这个参数了不得,可修改的东西就太多了。
这里可以编辑输出要素的所有字段。
可以添加、删除、重命名和重新排序字段,而且可以更改其属性。
想深入学习的同学一定要好好研究下。
合并规则也可以玩出很多东西,后面示例部分再详细说。
属性部分,字段的属性基本都可以修改,只能说太牛了。
最简单的用法,就以给建筑图斑连接地块名称为例。
输入要素如下:
工具设置如下,都按默认:
生成结果如下:
根据空间位置,地块名称被连接到建筑图斑中,后续可以根据字段统计各个地块内的建筑量。
根据上面的示例生成的建筑图斑,其实存在一个问题。
当一个建筑同时位于多个地块的时候,究竟应该标记哪个地块名。
如截图中箭头所示图斑,同时落位于二号地块和四号地块,结果连接的是二号地块,这是因为工具默认规则是【第一个】,即根据OBJIECTID顺序取第一个。
但是这个结果并不合理,因为该图斑大部分位于四号地块中,理想的结果应该连接至四号地块,即和最大重叠的图斑连接。
解决方法:将工具里的匹配模式修改成【最大重叠】即可:
生成结果如下:
可以看到,箭头所示图斑连接的结果是四号地块,观察其它图斑,都符合最大重叠的规则,完美!
如下图左边的面,有些地形图因为时间久远或是测绘质量等问题,本来应该是连在一起的文字被打碎了。
正常用【空间连接】工具的话,只会把第一顺位的单个文字连接到建筑面上,比如:【混】或者【2】,而实际我们需要的是【混2】。
解决方法:将合并规则设置为【连接】。
生成结果如下:
用这个方法连接文字后,还会有一个问题。正常连接后,我们得到的文字一般是【混3、砖2……】。想要提取建筑结构的时候,只要取第一个文字就能达到目的。但是现在有可能会出现【3混、砖2……】的情况,不能保证第一个文字是结构还是层数。这时候需要用到【正则表达式】,通过提取汉字,或是提取数字,来解决这个问题。
还有一种类似的情况也可以用这个方法解决。
如下:一个地块里有多个设施点,同样用【连接】规则:
最好设一个连接分隔符。这里用了【;】
如果是完美的数据,公交站点应该完全位于公交线路上,但是有时候你拿到的数据可能是这样的:
公交站点和公交线路存在一定的距离,看图没什么问题,但是用来分析就会发现二者并没有空间上的关系。
解决方法:通过设置搜索半径将二者关联上。
工具设置如下:
注意搜索半径要根据实际情况设置,不宜过大造成结果不准确,也不宜过小造成连接不上。
生成结果如下:
可以看到线路名已经被连接到站点要素上了。