当前位置:首页 » 编程语言 » java经纬度距离计算

java经纬度距离计算

发布时间: 2022-07-19 03:53:58

‘壹’ 有没有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 = ; // 地球半径
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如何用经纬度计算两点水平和垂直距离

/**
*计算地球上任意两点(经纬度)距离
*
*@paramlong1
*第一点经度
*@paramlat1
*第一点纬度
*@paramlong2
*第二点经度
*@paramlat2
*第二点纬度
*@return返回距离单位:米
*/
publicstaticdoubleDistance(doublelong1,doublelat1,doublelong2,
doublelat2){
doublea,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;
doubled;
doublesa2,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));
returnd;
}

‘叁’ 怎么用java求一个经纬度的点到另外50个经纬度点的距离,并且找出最小距

怎么用java求一个经纬度的点到另外50个经纬度点的距离,并且找出最小距
: 东经的话,数字大的在东面。
北纬的话,数字大的在北方。

‘肆’ 如何根据经纬度计算距离的java代码

思路是:通过传入地址作为参数拼接url调用网络地图,然后解析返回的页面,提取经纬度坐标。以下为具体步骤1、修改excel表中的属性名(方便后面用查询读取)然后倒入到数据库。2、代码实现

‘伍’ java 经纬度转换米

在经线上,相差一纬度约为111km ,因此100m(0.1KM)在经线上对应约为0.1/111=0.0009度,这个度数和纬度没有关系


在纬线上,相差一经度约为111cosα(α为该纬线的纬度)因此100m(0.1KM)在该纬线上对应约为0.1/(111*cos23.14)=0.0009797度,这个度数和纬度有关,


如果要知道经纬度差和距离差的换算规律,请查阅连接中的回答。

http://..com/question/711399588905395965.html?oldq=1



‘陆’ java 如何根据一个给定的经纬度(坐标)计算出List<经纬度>中坐标点较近的一部分坐标

使用第三方jar包 jts包 例子如下面

//一个面所包含的经纬度(标准的经纬*3600000)
String str = "POLYGON ((419164412 143703543, 419164481 143702737, 419164494 143702527,419164412 143703543))";
WKTReader wkt = new WKTReader();
Geometry geojudge1 = wkt.read(str);
int xpoi = 419164481;
int ypoi = 143702737;
Geometry geojudge2 = wkt.read("POINT(" + xpoi + " " + ypoi + "))");

if(geojudge1.intersects(geojudge2)) {
System.out.println("xpoi、ypoi 在这个面里");
}

ps:在构成一个面的时候,第一个点的经纬度一定要与最后一个点的经纬度相同。否则会报错误:java.lang.IllegalArgumentException: points must form a closed linestring

‘柒’ 怎样计算两个经纬度之间的距离 百度百科

地球赤道上环绕地球一周走一圈共 40075.04公里,而一圈分成360°,每1°(度)有60'。每一度一秒在赤道上的长度计算如下:

40075.04km/360°=111.31955km

111.31955km/60'=1.8553258km=1855.3m

每一分又有60秒,每一秒就代表 1855.3m/60=30.92m,任意两点距离计算公式为:

d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]}(A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离)。

地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里。


(7)java经纬度距离计算扩展阅读:

在地球仪上,由经线和纬线就组成了经纬网;如果把经纬网地球仪展开,就形成了一幅平面的地图。确定位置,在航空、航天、航海以及气象等方面都有作用。“船在海上遇到危险时,如何去营救”等等,都要用到经纬网地图。

经度 :为了区分地球上的每一条经线,人们给经线标注了度数,这就是经度。经度每15度1个时区。 实际上经度是两条经线所在平面之间的夹角。国际上规定,把通过英国首都伦敦格林威治天文台原址的那一条经线定为0°经线,也叫本初子午线。

从0°经线算起,向东、向西各分作180°,以东的180°属于东经,习惯上用“E”作代号,以西的180°属于西经,习惯上用“W”作代号。东经180°和西经的180°重合在一条经线上,那就是东西180°经线。纬度:从赤道向北量度为“北纬”(N);向南量度为“南纬”(S)。

在地图上判读经度时应注意:从西向东,经度的度数由小到大为东经度;从西向东,经度的度数由大到小,为西经度;除0°和180°经线外,其余经线都能准确区分是东经度还是西经度

‘捌’ 用java 根据两地经纬度,可以精确算出两地之间的距离吗。

精确可能不行,比较地球不是完全的圆形。不过粗略的是可以计算出来的

‘玖’ 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="rais">半径(米)</param>
/// <returns></returns>
public static double[] GetAround(double lat, double lon, int rais)
{

Double latitude = lat;
Double longitude = lon;

Double degree = (24901 * 1609) / 360.0;
double raisMile = rais;

Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raisMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;

Double mpdLng = degree * Math.cos(latitude * (PI / 180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raisMile;
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;
}

热点内容
淘宝源码编辑 发布:2025-03-03 06:43:37 浏览:999
分镜头就是脚本吗 发布:2025-03-03 06:38:07 浏览:797
消消乐没有当前配置怎么回事 发布:2025-03-03 06:34:57 浏览:678
什么是信息加密 发布:2025-03-03 06:32:45 浏览:128
c语言a10 发布:2025-03-03 06:32:11 浏览:29
小甲鱼python教程视频 发布:2025-03-03 06:32:10 浏览:735
网页编程保存 发布:2025-03-03 06:04:51 浏览:434
单片机程序反编译 发布:2025-03-03 06:04:49 浏览:702
为什么fgo需要50安卓系统 发布:2025-03-03 06:04:49 浏览:53
编译添加文件 发布:2025-03-03 06:04:14 浏览:729