概述
第一步:导入依赖:
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
<version>1.1.3</version>
</dependency>
然后写工具类:
/**
* 计算两个经纬度坐标点的距离
*/
@Component
public class ComputeCoordinateDistanceUtil {
/**
* 计算两个经纬度坐标点的距离
* @param gpsFrom 原坐标
* @param gpsTo 目的地坐标
* @param ellipsoid 使用的哪种坐标系
* @return
*/
public double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){
return new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo).getEllipsoidalDistance();
}
}
然后测试类:
public class Test {
@org.junit.Test
public void test(){
GlobalCoordinates source = new GlobalCoordinates(22.498298, 107.488658);
GlobalCoordinates target = new GlobalCoordinates(22.618468, 109.588518);
double meter1 = new ComputeCoordinateDistanceUtil().getDistanceMeter(source, target, Ellipsoid.Sphere);
double meter2 = new ComputeCoordinateDistanceUtil().getDistanceMeter(source, target, Ellipsoid.WGS84);
System.out.println("Sphere坐标系计算结果:"+meter1 + "米");
System.out.println("WGS84坐标系计算结果:"+meter2 + "米");
}
}
WGS-84坐标系(World Geodetic System一1984 Coordinate System)
一种国际上采用的地心坐标系。
GCJ-02坐标系是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。
国测局02年发布的坐标体系,它是一种对经纬度数据的加密算法,即加入随机的偏差。
互联网地图在国内必须至少使用GCJ-02进行首次加密,不允许直接使用 WGS-84坐标下的地理数据,同时任何坐标系均不可转换为WGS-84坐标。
是国内最广泛使用的坐标体系,高德、腾讯、Google中国地图都使用它。
sql语句,根据经纬度计算5公里范围内的数据
<!--查询5公里范围内的店铺-->
<select id="selectVendors" parameterType="java.lang.Double" resultType="Vendor">
select id,url,vendorName,start_delivery_price,delivery_price,sale_amount,label,longitude,latitude,need_time,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((#{param2}*PI()/180-latitude*PI()/180)/2),2)+COS(#{param2}*PI()/180)*COS(latitude*PI()/180)*POW(SIN((#{param1}*PI()/180-longitude*PI()/180)/2),2)))) as distance from takeout.vendor having distance < 5 order by credit desc limit 8
</select>
返回的数据为km。
传递两个参数为Double型,此时用#{param1},#{param2}。
否则会报错,之前都是用的实体类。或者map封装。使用实体类时,#{name}要与实体类的属性相同,除非在mabatis文件中进行了设置。
最后
以上就是霸气爆米花为你收集整理的根据地图经纬度计算两个坐标点之间的距离/sql语句,根据经纬度计算5公里范围内的数据的全部内容,希望文章能够帮你解决根据地图经纬度计算两个坐标点之间的距离/sql语句,根据经纬度计算5公里范围内的数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复