# 相交 =================== 缺前端控件截图 ## 功能说明 获取两份输入数据,计算得到两份数据叠加后的结果 ## 参数说明 +--------------+--------------+--------+------------------------------------------------------------------------------------+ | 参数名称 | 参数取值范围 | 默认值 | 参数描述 | +--------------+--------------+--------+------------------------------------------------------------------------------------+ | XY容差 | 浮点数 | 0.001 | 经纬度容差 | +--------------+--------------+--------+------------------------------------------------------------------------------------+ | 输出要素属性 | 字符串 | input | 输出要素类型,默认传入input,可选line、point。若输入类型全为点要素,则不能选择line | +--------------+--------------+--------+------------------------------------------------------------------------------------+ | 连接属性 | 字符串 | ALL | 连接属性,默认ALL,可选ONLY_FID | +--------------+--------------+--------+------------------------------------------------------------------------------------+ ## 算法原理 输入-输出数据: .. image:: uploads/1636aa97929e58076b32c10577dc981b/图片8.png 1. 获取两份输入数据的数据范围,取两份数据叠加后的最大范围作为格网划分范围 2. 假设所有要素在格网划分范围中均匀分布,则格网划分范围总面积除以要素的个数,得到平均每个要素所占的范围面积a。ka为划分格网的面积大小。k大小可自定义,简单理解为期望单个格网中包含要素的个数。 3. 分别对两份数据进行网格划分,输出KV对,K为所在格网,V为要素信息 4. 通过CogroupBykey将同一网格中的两份数据划分到一起 5. 计算同一网格中,两份要素的两两相交情况,若相交,则输出KV对,K为两相交要素的id拼接值,如AUB,V为相交的结果 6. 最后,通过GroupBykey并输出group中的第一个参数,实现结果去重。 用户可自定义输出要素的类型、输出字段,需要依次去构造不同的schema,并对相交结果根据输出类型进行筛选 特殊情况处理: .. image:: uploads/d1e388eeaa5fe9b079f5176365e5c484/图片9.png .. image:: uploads/98f114784e76b14f3cde74f33349a3f2/图片10.png