Scala Spark 地理空间交叉点
Scala Spark Geospatial Intersection
我有一个数据框折线模式:
|-- 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]
您可以使用 Magellan which supports spatial joins using geohash indexer.
要使其正常工作,您必须包含该包并注入 Magellan 优化规则。详情请关注the documentation
我有一个数据框折线模式:
|-- 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]
您可以使用 Magellan which supports spatial joins using geohash indexer.
要使其正常工作,您必须包含该包并注入 Magellan 优化规则。详情请关注the documentation