haversine的公式实现与sqlalchemy和性能

up9lanfz  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(191)

有没有可能使用sqlalchemy orm来实现haversine的公式,而不是使用原始sql查询?
目前我的sql实现是:

SELECT
    places.*,
    6373.0 * (2 * atan2(sqrt(temp), sqrt(1 - temp))) as distance
FROM (
    SELECT 
        places.*,
        power(sin(d_lat / 2), 2) + cos(RADIANS(places.latitude)) * cos(RADIANS(<some_user_latitude>)) * power(sin(d_long / 2), 2) as temp
    FROM
    (
        SELECT
            places.*, 
            RADIANS(<some_user_latitude>) - RADIANS(places.latitude) as d_lat, 
            RADIANS(<some_user_longitude>) - RADIANS(places.longitude) as d_long 
        FROM
            public.places as places
        ) as places
) as places

虽然这个实现工作得很好,但我想知道:
可以用炼金术吗 .query() 在不使用任何原始sql的情况下创建相同的结果?
是否可以将结果Map到自定义模型(例如place)?
对于我的原始sql或sqlalchemy,在性能方面有什么改进吗?或者这个实现还可以吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题