我有一个带架构的数据框折线:
|-- Polyline_id: string (nullable = false)
|-- latitude: double(nullable = true)
|-- longitude: double(nullable = true)
|-- point_index: integer(nullable = true)
折线包含每个元素的多行' Polyline_id'。
数据框带有架构的细分:
|-- Segments_id: string (nullable = false)
|-- latitudeStart: double(nullable = true)
|-- longitudeStart: double(nullable = true)
|-- latitudeEnd: double(nullable = true)
|-- longitudeEnd: double(nullable = true)
细分仅包含每个元素的一行' Segments_id'
我想生成一个新数据框,其中包含所有' Segments_id',' Polyline_id'与该段相交的
一种解决方案是从数据帧Polyline生成SegmentsFromPoly的新数据帧,并通过UDF比较SegmentsFromPoly的所有段和来自Segments的段。
我正在寻找一种更简单,更有效的方法(如果确实存在!)。
折线:
"poly_id_1",25.254,55.400,1
"poly_id_1",25.258,55.394,2
"poly_id_1",25.261,55.390,3
"poly_id_2",25.284,55.450,1
"poly_id_2",25.298,55.392,2
"poly_id_2",25.305,55.300,3
细分:
"seg_id_1",25.253,55.405,25.280,55.380
"seg_id_2",25.993,55.405,25.549,55.941
"seg_id_3",25.237,55.489,25.357,55.785
"seg_id_4",25.894,55.719,25.197,55.354
输出:
"seg_id_1",[a poly_id]
"seg_id_1",[a poly_id]
"seg_id_2",[a poly_id]
"seg_id_3",[a poly_id]
"seg_id_3",[a poly_id]
"seg_id_4",[a poly_id]
"seg_id_4",[a poly_id]
答案 0 :(得分:0)
您可以使用Magellan spatial joins来支持geohash indexer。
为了使其有效,您必须包含该包并注入Magellan优化规则。有关详细信息,请按the documentation。