源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java实现计算地理坐标之间的距离

  • 时间:2020-10-11 14:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java实现计算地理坐标之间的距离
java实现计算两经纬度点之间的距离,直接上代码,具体解释请参考注释
[u]复制代码[/u] 代码如下:
package com.jttx.poi.utils; import com.jttx.poi.entity.Point; /**  * Created by louis on 2014/9/2.  */ public class GeoUtils {     /**      * 计算两经纬度点之间的距离(单位:米)      * @param lng1  经度      * @param lat1  纬度      * @param lng2      * @param lat2      * @return      */     public static double getDistance(double lng1,double lat1,double lng2,double lat2){         double radLat1 = Math.toRadians(lat1);         double radLat2 = Math.toRadians(lat2);         double a = radLat1 - radLat2;         double b = Math.toRadians(lng1) - Math.toRadians(lng2);         double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1)                 * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));         s = s * 6378137.0;// 取WGS84标准参考椭球中的地球长半径(单位:m)         s = Math.round(s * 10000) / 10000;         return s;     }     /**      * 计算TP值      * @param curPoint      当前点      * @param relatedPoint  偏移点      * @param isGeography   是否是地理坐标 false为2d坐标      * @return              tp值      */     public static double getDirAngle(Point curPoint,Point relatedPoint,boolean isGeography){         double result = 0;         if(isGeography){             double y2 = Math.toRadians(relatedPoint.getLat());             double y1 = Math.toRadians(curPoint.getLat());             double alpha = Math.atan2(relatedPoint.getLat() - curPoint.getLat(), (relatedPoint.getLng() - curPoint.getLng()) * Math.cos((y2 - y1) / 2));//纬度方向乘以cos(y2-y1/2)             double delta =alpha<0?(2*Math.PI+alpha):alpha;             result = Math.toDegrees(delta);         }else {             double alpha = Math.atan2(relatedPoint.getLat() - curPoint.getLat(), relatedPoint.getLng() - curPoint.getLng());             double delta=alpha<0?(2*Math.PI+alpha):alpha;             result = Math.toDegrees(delta);         }         return result;     }     public static void main(String[] args) {         System.out.println(getDistance(121.446014,31.215937,121.446028464238,31.2158502442799  ));     } }
以上就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部