原计算公式如下:
公式如下,单位米:
第一点经纬度:lng1 lat1
第二点经纬度:lng2 lat2
round(6378.1382asin(sqrt(pow(sin((lat1pi()/180-lat2pi()/180)/2),2)+cos(lat1pi()/180)cos(lat2pi()/180)pow(sin( (lng1pi()/180-lng2pi()/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");
望提供参考~