原计算公式如下:
公式如下,单位米:
第一点经纬度:lng1 lat1
第二点经纬度:lng2 lat2
round(6378.138*2*asin(sqrt(pow(sin((lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000)
在JOOQ框架下实现代码如下:
DSL.round(DSL.asin(DSL.sqrt(DSL.power(DSL.sin((DSL.pi() .multiply(latitude) .divide(180) .subtract(DSL.pi() .multiply(UC_ORGAN_SHOP.DIMENSION) .divide(180))).divide(2)), 2) .add( DSL.cos(DSL.pi() .multiply(latitude) .divide(180)) .multiply(DSL.cos(DSL.pi() .multiply(UC_ORGAN_SHOP.DIMENSION) .divide(180))) .multiply(DSL.power(DSL.sin((DSL.pi() .multiply(longitude) . divide(180) .subtract(DSL .pi() .multiply(UC_ORGAN_SHOP.LONGITUDE) .divide(180)) .divide(2))), 2))))) .multiply(1000) .multiply(2) .multiply(6378.138)).as("distan");
望提供参考~