6. # 面邻域¶
缺前端控件截图
## 功能说明 统计输入要素中每一个要素与其所有相邻要素的邻接情况,以表的形式输出统计结果。邻接情况包括相交于面、线、点。若用户选择包括区域重叠,则优先统计相交的面积;若无重叠,则依次统计相交线的长度与相交点的个数。用户还可选择是否包括邻域关系的两侧。且统计结果不以每个单独要素为单位,要以用户选择的报告字段所划分的要素集为单位。
## 参数说明
参数名称 |
参数取值范围 |
默认值 |
参数描述 |
XY容差 |
浮点数 |
0.001 |
经纬度容差 |
是否包含重叠 |
Y/N |
N |
是否包括重叠区域 |
是否包含两侧 |
Y/N |
Y |
是否包括邻域关系的两侧 |
表字段名称 |
字符串 |
“gid” |
按字段报告的字段名称,若用户不选,则默认传入gid,若用户选择,以”,”连接选择的字段名称 |
## 算法原理 输入数据: .. image:: uploads/b06312940e73f9f5915686ba60ab4654/图片3.png
对输入数据划分格网,格网划分系数设置为6。
对同一格网中的所有要素两两求交集。若用户勾选重叠要素,则依次计算相交的面积、长度、点个数。若用户没有勾选重叠要素,则需将面要素转换成环要素(线要素),再依次计算相交的线长度、点个数。输出KV对,K为两个相交要素的wkt的拼接。
- 若用户选择包括邻域关系的两侧:
先对②计算的结果进行groupbykey,只取迭代器中的第一个结果(去重),并输出KV对,K值是src报告字段值与nbr报告字段值组成的字符串,V值是这一个结果的信息。
继续进行groupbykey,将具有相同报告字段值的结果组合,并累加其面积、长度、点个数值。最后输出唯一报告字段值的面积、长度、点个数统计信息。
- 若用户没有选择包括邻域关系的两侧:
先对②计算的结果进行groupbykey,只取迭代器中的第一个结果(去重),并输出KV对,K值是相交的结果,V值是这一个结果的信息。
再进行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