肥宅钓鱼网
当前位置: 首页 钓鱼百科

java代码计算经纬度距离(java中经纬度使用与相关工具类)

时间:2023-07-02 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

赤道的纬度为0°,将行星平分为南半球和北半球。纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。纬度1秒的长度地球的子午线总长度大约40008km。

经纬度互换

度(DDD):E 108.90593度 N 34.21630度

如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108.90593整数位不变取108(度),用0.90593*60=54.3558,取整数位54(分),0.3558*60=21.348再取整数位21(秒),故转化为108度54分21秒.

同样将度分秒(DMS):东经E 108度54分22.2秒 换算成度(DDD)的方法如下:108度54分22.2秒=108 (54/60) (22.2/3600)=108.90616度

因为计算时小数位保留的原因,导致正反计算存在一定误差,但误差影响不是很大。1秒的误差就是几米的样子。GPS车友可以用上述方法换算成自己需要的单位坐标。

经纬度换算成米

纬度分为60分,每一分再分为60秒以及秒的小数。纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。有相同特定纬度的所有位置都在同一个纬线上。赤道的纬度为0°,将行星平分为南半球和北半球。纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。赤道、南回归线、北回归线、南极圈和北极圈是特殊的纬线。纬度1秒的长度地球的子午线总长度大约40008km。平均:纬度1度 = 大约111km纬度1分 = 大约1.85km纬度1秒 = 大约30.9m

根据地球上任意两点的经纬度计算两点间的距离

地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基 准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。设第一点A的经 纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90- Latitude),南纬取90 纬度值(90 Latitude),则经过上述处理过后的两点被计为(MLonA, MLatA)和(MLonB, MLatB)。那么根据三角推导,可以得到计算两点距离的如下公式:

C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB)cos(MLatA)*cos(MLatB)

Distance = R*Arccos(C)*Pi/180

这里,R和Distance单位是相同,如果是采用6371.004千米作为半径,那么Distance就是千米为单位,如果要使用其他单位,比如mile,还需要做单位换算,1千米=0.621371192mile

如果仅对经度作正负的处理,而不对纬度作90-Latitude(假设都是北半球,南半球只有澳洲具有应用意义)的处理,那么公式将是:

C = sin(LatA)*sin(LatB)cos(LatA)*cos(LatB)*cos(MLonA-MLonB)

Distance = R*Arccos(C)*Pi/180

以上通过简单的三角变换就可以推出。

如果三角函数的输入和输出都采用弧度值,那么公式还可以写作:

C = sin(LatA*Pi/180)*sin(LatB*Pi/180)cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)

Distance = R*Arccos(C)*Pi/180

也就是:

C = sin(LatA/57.2958)*sin(LatB/57.2958)cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)

Distance = R*Arccos(C) = 6371.004*Arccos(C) kilometer = 0.621371192*6371.004*Arccos(C) mile = 3958.758349716768*Arccos(C) mile

根据一个经纬度,计算出当前经纬度的半径,可用于打卡,场合。工具类

/** * 经纬度,围栏相关工具类 * 根据一个经纬度,计算出当前经纬度的半径,可用于打卡,场合。 * @author zhangtonghao * @create 2022-03-17 14:37 */public class FenceUtils {//圆周率private static final double PI = 3.1415926;/*** 计算地球上任意两点(经纬度)距离** @param long1 第一点经度* @param lat1第一点纬度* @param long2 第二点经度* @param lat2第二点纬度* @return 返回距离 单位:米*/public static int distanceByLongNLat(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 * sa2Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));return (int)d;}/*** 根据经纬度和半径计算经纬度范围** @param raidus 单位米* @return minLat, minLng, maxLat, maxLng*/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 = latituderadiusLat;Double mpdLng = degree * Math.cos(latitude * (PI / 180));Double dpmLng = 1 / mpdLng;Double radiusLng = dpmLng * raidusMile;Double minLng = longitude - radiusLng;Double maxLng = longituderadiusLng;return new double[]{minLat, minLng, maxLat, maxLng};}}

测试使用:

    推荐阅读
  • 对数函数十大经典例子(蝙蝠函数怎么求极值)

    不过极值的性质可能发生变化。虽然这并不一定是必要的,但却是非常有意义的。显然,这里f是R上的连续函数,且仅在零点上存在不可导的可能性。第四步,得到导函数的零点,这些零点是原函数的稳定点。您的支持能鼓励老黄更加努力地分享知识,也能使更多人有机会学习到知识,谢谢大家!

  • 二年级中秋节作文(二年级中秋节作文怎么写)

    二年级中秋节作文中秋节到了,家家户户团圆了。吃完了晚饭,快七点半了,许多人给我们送月饼。有各种各样的口味,有草莓味、菠萝味、香蕉味等。烟火有的像波浪,有的像太阳花,有的像满天星,还有的像降落伞。我们坐在大榕树下,边赏月边吃月饼,不由得想起了“床前明月光,疑是地上霜。举头望明月,低头思故乡”这首古诗。临走时,奶奶送给我一盒我最爱吃的草莓月饼,我高兴地和奶奶告别。爸爸骑着摩托车回家了。

  • 驾考一共可以考几次(驾考各科能考几次)

    对这些都是模糊的,今天我们就来看一下,驾考各科一般能考几次!一般我们考试前,把题库多多练习,模拟成绩在95分左右,就稳稳的啦。科三考的是细节,和耐心,平时多注意,不要急躁,科三考过了,拿证也就近了。科目四科目四也叫科目三安全文明驾驶常识,预约考试次数跟科目一一样不限次数,每次有两次的考试机会。考前刷题是必须的,最后一个科也需要认真对待,把理论知识记牢后,模拟考试多练几次,上考场就无忧了~

  • 齐白石擅长画什么(齐白石是近现代中国绘画大师)

    齐白石擅长画什么齐白石是近现代中国绘画大师,世界文化名人。早年曾为木工,后以卖画为生,五十七岁后定居北京。齐白石专长花鸟,笔酣墨饱,力健有锋。齐白石大师的画不但有很好的艺术价值还有极高的投资、收藏价值,才导致了他的作品价格不断的飙升,正所谓千金难买、一画难求。

  • mcu和普通芯片的区别(mcu和普通芯片的区别是什么)

    大家每天有90%的几率能接触到基于单片机这种芯片开发的产品。关键就是它的可编程特性。但是这也是有前提的,就是相应的硬件电路也要设计好。单片机主要负责控制,而电路是具体功能的实现。由这些电路组成的就叫最小系统,是让单片机能够正常运行程序的基础。光敏电阻检测到不同的亮度,会输出不同的信号。市面上芯片的种类非常多,成千上万种。而mcu跟普通芯片最大的区别就是能不能写程序控制的区别。

  • 姚晨年轻高清壁纸(12位北影节红毯女演员)

    北京国际电影节又开始了,从2011年创办起,到今年已经第11届。姚晨今年的姚晨太“亮眼”了,感觉得罪了造型师。而且看起来小腹也有微微凸起,加上壮硕的手臂,姚晨这次亮相,只让人看到一点:她变胖了。不过这次北京国际电影节,周冬雨的造型不惊艳,却也没有很雷人。亮点是裙子后还有类似蕾丝的裙摆,让整体生动了一些。佟丽娅丫丫这次也是美翻了,既纯洁可爱,又温柔大气。这次来看,特别美的是baby,佟丽娅和邱天。

  • 异度空间剧情介绍(异度空间剧情简单介绍)

    异度空间剧情介绍章昕得知房东的妻儿死于泥石流后,总会看见她们的鬼魂,令男友无法忍受折磨离她而去,无奈之下,她求助于心理医师罗占。罗占清楚知道章昕所见不过是因长久孤闭所生幻觉,开始竭尽全能帮助她,终使其慢慢脱离了种种恐怖的意想。当置身罗占的生活空间时,章昕发现阿占有诸多怪异举动,调查过后,发现他患有严重的精神分裂,一到晚上某时即被幻象所困痛不欲生。为了让爱人回归正常,章昕决定帮助他赶走心里的魔障。

  • 关于节俭的句子摘抄(关于节俭的句子有哪些)

    财有限,费用无穷,当量入为出——颜之推,我来为大家科普一下关于关于节俭的句子摘抄?——颜之推节俭本身就是一个大财源。——爱默生奢侈的必然后果风化的解体反过来又引起趣味的腐化。——英国强本而节用,则天不能贫。——英国奢侈和淫靡只是一种社会腐化的现像,决不是原因。——萨迪《蔷薇园》侈而惰者贫,而力而俭者富。——先秦《左传庄公二十四年》知足是天然的财富,奢侈是人为的贫困。

  • 怎样清洗玻璃窗更干净(清洗玻璃窗的方法)

    我们一起去了解并探讨一下这个问题吧!怎样清洗玻璃窗更干净先准备好要使用的工具和材料,一盆水,一个干布子,一个湿布子,洗洁精,一条卫生纸。先将布子放入水中摆湿,然后开始擦窗户,要先擦窗户里面,然后再擦窗户外面。这样一块玻璃就擦出来了,但是可以远看下是不是都擦干净了,尽量在阳光的照射下进行看,这样看的更透彻,通会发现窗户角不是很干净,所以必须重新对窗户角进行擦洗。

  • 秋连衣长裙搭配小白鞋(穿长裙尽量少配平底鞋)

    布洛克鞋得天独厚的优势就是带一点小方跟,小个子女生也能轻松驾驭。对于布洛克皮鞋来说,最适合的搭配就是用女人味的单品与之中和。布洛克皮鞋最经典的穿法其实就是和袜子进行叠穿。除此之外,厚底乐福鞋由于加入了五金之类的装饰,温柔女人味也会更加浓郁。穆勒鞋就是指半包设计,后脚跟处有细带装饰的鞋型。