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

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

测试使用:

    推荐阅读
  • 男生提升气质的23个小技巧(男生提升气质的23个小技巧)

    7、永远不要否定自己。17、发型不夸张。

  • 草莓种植的最好方法是什么(得到了不少的经验)

    红根腐病是很多大棚里但凡出现,就会很危险的病害。前期预防的时候,可以使用枯草芽孢杆菌加微量元素的叶面肥进行喷施,也可以使用哈茨木霉菌加氨基酸的叶面肥进行喷施预防。哈茨木霉菌是可以治疗白粉病的,由于哈茨木霉菌是生物制剂,效果较慢,但是比较的安全,基本不会影响采摘。硼,磷钾硼是有促花的作用,并可以让花芽分化的更加充分,有效减少畸形果的出现。

  • dnf克伦特净化书可以交易吗(体验服克伦特商店调整)

    dnf克伦特净化书可以交易吗Hello,大家好,我是月月。目前在体验服的克伦特商店里面,新增了"异界气息净化书"和"变异的扭转书"这两个道具。值得注意的是,这次克伦特商店新增的这两个道具都是限时的,在6月18日之后就会删除。而且这两个道具每周都只能购买2次,并不是无限制购买。而100级版本,克伦特的售价也只是300W游戏币,所以对我们的影响其实不大。当然,这次克伦特商店调整也是有一件较为遗憾的事情。

  • 祝老公新的一年的句子(适合对老公说的新年祝福语)

    祝老公新的一年的句子愿意给你一个灿烂的阳光,每天为您带来幸福。你欠我一张卡片;删除,欠我一份礼物;回复,欠我一顿大餐!爱,就是在一座叫缘分的桥上相遇,喝一碗叫相思的汤,拥一颗叫不变的心,过一种叫简单的生活,然后彼此牵手,走一条叫一辈子的路。遇到你我感到很幸福,但是我不能成为世界上最幸福的人,因为我们在一起,我要让你成为世界上最幸福的人。欢迎深入了解,我是否情深意切。

  • 广汽本田ZR-V官图出炉(与型格相同平台)

    在5月初的时候,广汽本田发布了旗下全新SUV车型ZR-V的官图,并命名致在,新车定位于缤智和皓影之间,随即在市场上引起了不少年轻用户。5月30日,新车迎来了正式发布亮相,其内饰也迎来了首次曝光。另外,根据官方表示,新车在底盘方面进行了精细化运动调校,同时最小转弯半径仅5.2m,成为了广汽本田转弯半径最小的SUV车型。

  • 《我的世界》告别火柴盒(我的世界火柴盒进阶版)

    “山顶洞人”,在游戏中通常是指代以洞穴为生存庇护所的玩家。至于美观而言,将光影打开便可以达成这一目的。一般而言,有山丘或者是山脉,多数情况下会有矿洞生成。至于建筑而言,火柴盒则是简单易建的建筑典型模范。此外,末地烛还能够为“学习”提供一个良好的光照环境。当然,至于卧室的布置而言,采用上下两人的方式放置床还是挺不错的。对于工作间的布置而言,可以选用常用的功能性方块,如烟熏炉等。

  • dnf伊斯大陆火龙攻略

    dnf伊思大陆火龙怎么打?dnf伊斯大陆火龙攻略第一阶段:残留的火焰可以利用跳跃来熄灭,跳的越高熄灭范围越大,可以利用跃翔技能。

  • 64岁老教授不愿躺平(64岁老教授不愿躺平)

    近日,随着中国老年人才网正式上线,一大批“老年人才”上线。此外,在山东济南、东营等地,已经有老年人才注册求职信息,青岛暂未有老年人才注册。除了沈先生,来自辽宁抚顺的求职者刘明中同样已是73岁高龄。记者了解到,刘明中长期在企业、党政机关做文职工作。目前,虽然还没有用人单位与他联系,但刘明中并不着急,等待合适的机会。很快,自己的孙女和外孙出生,为了照顾孩子,张新生和老伴来到青岛生活。

  • 怎么调驴肉馅(驴肉馅怎么调制)

    下面更多详细答案一起来看看吧!怎么调驴肉馅准备适量的驴肉馅,把它放入大碗中,加入少许清水,然后用筷子顺着一个方向搅拌,让肉馅和水完全融合在一起,加入少许料酒出去肉里面的腥味,再加入一点酱油、蚝油、花椒粉,再按着一个方向搅拌,给肉馅搅打上劲,搅拌好之后腌制20分钟。切一点葱花和姜末放在肉馅里面,再加入适量的熟油,食盐,鸡精,同样按照一个方向搅拌均匀,我们的肉馅就调好了。

  • 怎么样吃木瓜才丰胸(关于木瓜丰胸的吃法)

    怎么样吃木瓜才丰胸鲜奶木瓜,木瓜配鲜奶一起吃不但能丰胸,而且丰胸效果特别快,在需要的时候可以准备一个木瓜从中间切开,取出它的果肉,用料理机打成小块,然后把准备好的牛奶入锅煮开,加入一个鸡蛋的蛋白和少量白醋,调匀以后过滤装到小碗中,入锅隔水蒸制半小时,取出以后把准备好的木瓜泥淋在上面,调匀以后直接吃。这种鲜奶木瓜不但丰胸效果好,而且能淡斑美白,延缓皮肤衰老。