国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java實現計算地理坐標之間的距離

2019-11-26 15:15:59
字體:
來源:轉載
供稿:網友

java實現計算兩經緯度點之間的距離,直接上代碼,具體解釋請參考注釋

復制代碼 代碼如下:

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  ));
    }
}

以上就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 磐安县| 大悟县| 航空| 根河市| 郴州市| 兴城市| 巩留县| 天长市| 柏乡县| 淳安县| 甘肃省| 金塔县| 双鸭山市| 双牌县| 漳州市| 玉龙| 东山县| 广西| 合川市| 洞头县| 邹城市| 鄱阳县| 荔波县| 东乡族自治县| 黔西| 布尔津县| 永仁县| 台湾省| 太谷县| 溧阳市| 沈阳市| 曲松县| 当涂县| 从化市| 嘉峪关市| 衢州市| 巴南区| 沾益县| 巨野县| 阜阳市| 乌鲁木齐县|