1.检查输入的经纬度是否符合格式要求。
2.检查代码实现,确保算法正确。
3.根据Sedona文档,确定正确的计算方法,如使用GeoUtils类中的computeBearing方法:
import org.apache.spark.sql.functions._
import org.apache.sedona.sql.utils.Adapter
val df = Seq(
("40.6711729", "-111.9388119", "40.671195", "-111.938647")
).toDF("lat1", "lon1", "lat2", "lon2")
val bearings = df.select(
atan2(sin(radians($"lon2") - radians($"lon1")) * cos(radians($"lat2")),
cos(radians($"lat1")) * sin(radians($"lat2")) -
sin(radians($"lat1")) * cos(radians($"lat2")) *
cos(radians($"lon2") - radians($"lon1"))
) * 180 / math.Pi
)
Adapter.toDf(bearings, sparkSession)
4.如果需要更精确的计算,可以使用Third Party库,如JTS或Geospark。