在pg数据库中获取俩点距离

PG数据是库是一个相对于MySQL来说更安全的开源数据库,但是在市面上对PG的使用还是比较少的,博主就结合最近的工作问题,总结一下在PG数据库中如何获取到两个坐标点之间的距离(当然,也有获取点到线,点到点的距离,下面只举例两个坐标点的距离获取方式)

在PG数据库中按照一个插件

CREATE EXTENSION earthdistance;

将上面的SQL在PG数据库中执行即可安装

安装完成这个插件之后,我们就可以在SQL中通过earth_distance关键之来获取两点的距离了
SQL如下:

select earth_distance(
	ll_to_earth (23.085862954320724,113.31410576317595),
	ll_to_earth(23.121724484059566,113.32709838364408)
) as distance;

这就是一个简单的例子,第一个坐标为维度坐标,第二个为经度坐标,在mybatis中使用的话,可自行替换掉固定参数,如

 SELECT *,
        earth_distance(ll_to_earth(#{dto.latitude}, #{dto.longitude}), ll_to_earth(latitude, longitude)) AS distance
        FROM comm_point_management
                ORDER BY distance

后面的latitude,longitude就是数据表中经纬度的字段名,这样,就能在原数据的基础上获取到当前位置最近的距离了。
好久没有更新了,以后在工作中遇到的问题,还是会和大家分享的,如果有不对的地方,请批评指正,谢谢大家

你可能感兴趣的:(PG,数据库)