6. # 面邻域

缺前端控件截图

## 功能说明 统计输入要素中每一个要素与其所有相邻要素的邻接情况,以表的形式输出统计结果。邻接情况包括相交于面、线、点。若用户选择包括区域重叠,则优先统计相交的面积;若无重叠,则依次统计相交线的长度与相交点的个数。用户还可选择是否包括邻域关系的两侧。且统计结果不以每个单独要素为单位,要以用户选择的报告字段所划分的要素集为单位。

## 参数说明

参数名称

参数取值范围

默认值

参数描述

XY容差

浮点数

0.001

经纬度容差

是否包含重叠

Y/N

N

是否包括重叠区域

是否包含两侧

Y/N

Y

是否包括邻域关系的两侧

表字段名称

字符串

“gid”

按字段报告的字段名称,若用户不选,则默认传入gid,若用户选择,以”,”连接选择的字段名称

## 算法原理 输入数据: .. image:: uploads/b06312940e73f9f5915686ba60ab4654/图片3.png

  1. 对输入数据划分格网,格网划分系数设置为6。

  2. 对同一格网中的所有要素两两求交集。若用户勾选重叠要素,则依次计算相交的面积、长度、点个数。若用户没有勾选重叠要素,则需将面要素转换成环要素(线要素),再依次计算相交的线长度、点个数。输出KV对,K为两个相交要素的wkt的拼接。

  3. 若用户选择包括邻域关系的两侧:
    1. 先对②计算的结果进行groupbykey,只取迭代器中的第一个结果(去重),并输出KV对,K值是src报告字段值与nbr报告字段值组成的字符串,V值是这一个结果的信息。

    2. 继续进行groupbykey,将具有相同报告字段值的结果组合,并累加其面积、长度、点个数值。最后输出唯一报告字段值的面积、长度、点个数统计信息。

  4. 若用户没有选择包括邻域关系的两侧:
    1. 先对②计算的结果进行groupbykey,只取迭代器中的第一个结果(去重),并输出KV对,K值是相交的结果,V值是这一个结果的信息。

    2. 再进行groupbykey,此时迭代器中为相交结果一致的交集结果的组合。(假设A交B与A交C的交集相同,则迭代器中包括A交B以及B交A得到的结果,也包括A交C以及C交A得到的结果)需要通过判断只输出A交B、B交A的其一,与A交C、C交A的其一。输出KV对,K值是src报告字段值与nbr报告字段值组成的字符串,V值是这一个结果的信息。

输出结果: .. image:: uploads/408811df8c13678d20f3220f8132ae5d/图片4.png