「经纬度距离java」经纬度距离计算器在线

博主:adminadmin 2022-12-12 03:06:06 90

本篇文章给大家谈谈经纬度距离java,以及经纬度距离计算器在线对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java写:求地球上任意两个点之间的距离,知道这两个点的经纬度

距离可以用r*arccos[cos(y1)*cos(y2)*cos(x1x2)+sin(y1)*sin(y2)]来算

r是地球半径6370km,x是经度,y是纬度

注意角度单位的转换。Math类里的sin和cos函数的参数是以弧度为单位的角度,所以x1、x2、y1、y2要用弧度表示,但一般经纬度都是用角度表示(如X1=120 东经120度)就要化成弧度(x1*Pi/180)

而acos函数返回值正好是以弧度为单位的,刚好符合要求

如果你的代码里的lat1、lat2、lon1、lon2单位是角度,可以这么改

double radius=6371000;

double distance=radius*Math.acos((Math.cos(lat2*Math.PI/180)*Math.cos(lat2*Math.PI/180)*Math.cos(lon1*Math.PI/180-lon2*Math.PI/180)+Math.sin(lat1*Math.PI/180)*Math.sin(lat2*Math.PI/180)));

我算出来是903.9千米

java如何用经纬度计算两点水平和垂直距离

/** 

 * 计算地球上任意两点(经纬度)距离 

 *  

 * @param long1 

 *            第一点经度 

 * @param lat1 

 *            第一点纬度 

 * @param long2 

 *            第二点经度 

 * @param lat2 

 *            第二点纬度 

 * @return 返回距离 单位:米 

 */  

public static double Distance(double long1, double lat1, double long2,  

        double lat2) {  

    double a, b, R;  

    R = 6378137; // 地球半径  

    lat1 = lat1 * Math.PI / 180.0;  

    lat2 = lat2 * Math.PI / 180.0;  

    a = lat1 - lat2;  

    b = (long1 - long2) * Math.PI / 180.0;  

    double d;  

    double sa2, sb2;  

    sa2 = Math.sin(a / 2.0);  

    sb2 = Math.sin(b / 2.0);  

    d = 2  

            * R  

            * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)  

                    * Math.cos(lat2) * sb2 * sb2));  

    return d;  

}

JAVA,已知当前经纬度和距离,计算符合距离条件的经度最大值、最小值和纬度的最大值、最小值。

//拿走不谢

private final static double R = 6370996.81;

private final static double PI = 3.14159265;

private final static double RAD = Math.PI / 180.0;

/// summary

/// 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度

/// /summary

/// param name="lat"纬度/param

/// param name="lon"经度/param

/// param name="raidus"半径(米)/param

/// returns/returns

public static double[] GetAround(double lat, double lon, int raidus)

{

Double latitude = lat;

Double longitude = lon;

Double degree = (24901 * 1609) / 360.0;

double raidusMile = raidus;

Double dpmLat = 1 / degree;

Double radiusLat = dpmLat * raidusMile;

Double minLat = latitude - radiusLat;

Double maxLat = latitude + radiusLat;

Double mpdLng = degree * Math.cos(latitude * (PI / 180));

Double dpmLng = 1 / mpdLng;

Double radiusLng = dpmLng * raidusMile;

Double minLng = longitude - radiusLng;

Double maxLng = longitude + radiusLng;

return new double[] { minLat, minLng, maxLat, maxLng };

}

/// summary

/// 根据提供的两个经纬度计算距离(米)

/// /summary

/// param name="lng1"经度1/param

/// param name="lat1"纬度1/param

/// param name="lng2"经度2/param

/// param name="lat2"纬度2/param

/// returns/returns

public static double GetDistance(double lng1, double lat1, double lng2, double lat2)

{

double radLat1 = lat1 * RAD;

double radLat2 = lat2 * RAD;

double a = radLat1 - radLat2;

double b = (lng1 - lng2) * RAD;

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 * R;

s = Math.round(s * 10000) / 10000;

return s;

}

java 里 两点的经度纬度怎么算距离

/**

* 计算地球上任意两点(经纬度)距离

*

* @param long1

* 第一点经度

* @param lat1

* 第一点纬度

* @param long2

* 第二点经度

* @param lat2

* 第二点纬度

* @return 返回距离 单位:米

*/

public static double Distance(double long1, double lat1, double long2,

double lat2) {

double a, b, R;

R = 6378137; // 地球半径

lat1 = lat1 * Math.PI / 180.0;

lat2 = lat2 * Math.PI / 180.0;

a = lat1 - lat2;

b = (long1 - long2) * Math.PI / 180.0;

double d;

double sa2, sb2;

sa2 = Math.sin(a / 2.0);

sb2 = Math.sin(b / 2.0);

d = 2

* R

* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)

* Math.cos(lat2) * sb2 * sb2));

return d;

}

关于经纬度距离java和经纬度距离计算器在线的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-12,除非注明,否则均为首码项目网原创文章,转载请注明出处。