# 交集取反 =================== 缺前端控件截图 ## 功能说明 对两份输入数据进行格网划分计算,求出两份数据所有要素求差集的结果 ## 参数说明 ---------------------------- +----------+--------------+--------+---------------------------------+ | 参数名称 | 参数取值范围 | 默认值 | 参数描述 | +----------+--------------+--------+---------------------------------+ | XY容差 | 浮点数 | 0.001 | 经纬度容差 | +----------+--------------+--------+---------------------------------+ | 连接属性 | 字符串 | ALL | 连接属性,默认ALL,可选ONLY_FID | +----------+--------------+--------+---------------------------------+ ## 算法原理 输入数据: .. image:: uploads/9c7c95b8d675ea13cf07001f8cb21f58/图片2.png 1. 对两份输入数据进行格网划分,并将同一网格中的数据划分到一起 2. 若网格中只含有某一份输入数据的要素,直接输出该元素。此时Key值为该要素的表名+要素id,并且几何信息为空要素。若网格存在两图层的要素,则需进一步判断两图层要素的相交情况。若要素不相交或面要素相交为点、线或线要素相交为点,输出KV值同前面;若面要素相交为面或线要素相交为线,则输出Key值为:A要素gid+inters+B要素gid,几何为相交结果 3. 对结果进行去重。进行groupbykey,获取迭代器中的第一个元素,若Key中包含inter,则输出两次,新的key值分别为A要素gid+A表名与B要素gid+表名,几何均为相交结果。若Key不包含inter,则输出一次,要素gid+要素表名 4. 进行groupbykey,单个要素与其他所有要素的相交几何组合到迭代器,逐个进行union,求并集。最后,要素本身与并集求差集,即得到该要素与所有要素交集取反的结果。 输出结果: .. image:: uploads/5241882ae10d387e11b36e3896f5a9b7/图片1.png