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

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

测试使用:

    推荐阅读
  • 世界上各种奇葩的户外游戏(这是本座目前看到过的最为奇葩的做游戏方式与团队)

    更奇葩的是,他们还有着为数众多的粉丝呢!给我3美元,一个月帮你做一款游戏今天介绍一家极具特色的游戏开发团队——Sokpop(袜子社)。Sokpop运营着一个Patreon页面,每个月为赞助者提供一款游戏,根据赞助的价格会有更多的权益。5美元档位则新增了大型项目EA和游戏测试、自定义头像等。根据Patreon页面显示,Sokpop当前已有2572位会员,每月收入8243美元。

  • 王者荣耀改前和改后的女英雄(女版男英雄有多好看)

    看到女版的孙膑,这分明就是长大后的孙膑嘛!一点区别也没有,所以游戏里的孙膑一定是个女孩子,一直欺骗着大家。诸葛亮诸葛亮是峡谷里的人气法师,超高的被动和技能伤害,大招强力的收割能力,让他一直处于T1法师级别。女版的诸葛亮变成了可爱风格的小女生,吹泡泡的样子好生可爱。女版的橘右京满满的御姐风,霸气侧漏。这要是上线峡谷那玩橘右京的人气要翻上几翻了。

  • 什么是吲哚酚试剂?(吲哚酚试剂是什么东西?)

    吲哚酚试剂用于检测维生素C,为蓝紫色学名是二氯酚靛酚钠,我来为大家科普一下关于什么是吲哚酚试剂?下面希望有你要的答案,我们一起来看看吧!检测方法取甲、乙两支试管分别加入3毫升维生素C和清水,再向两试管中各加十滴吲哚酚试剂。含有维C的液体将褪掉蓝紫色的吲哚酚试剂,清水则会被染成蓝紫色。称为“褪色反应”。

  • 机智的恋爱最新女嘉宾(机智的恋爱嘉宾近况)

    机智的恋爱最新女嘉宾节目播出期间,张慧贤、翁晓君、吴文昌等嘉宾线上线下忙于互怼互撕。最终以崔宇同道歉并退网方才告一段落,崔宇同就此回归普通人生活。受到情感创伤的吕珊萎靡了一阵子,然后继续打拼事业,于今年情人节再次收获爱情,由于男友平时不冲浪,吕珊只是告知一下关心她的粉丝。后来两人又闹了矛盾,分手了,吕珊气急败坏地说不要过问了,分了。不过,最近她又跟粉丝透露,跟男朋友再次复合了。

  • 言多必失乱说话的下场(怒言伤人谗言害人)

    幸好,红花油只是呛人,并没有伤害身体。其后果是难以想象的。战国时期,赵王迁七年,秦国攻打赵国,企图一统天下。赵王派出得力干将李牧和司马尚去迎战。秦国派使者送了很多的金银财宝给赵国的大臣郭开。赵王轻信了谗言,临时更换主将。秦军因此大获全胜,占领了赵国所有的城池,赵国从此不复存在。没有调查,就没有发言权。一个叫犁弥的大臣,建议齐王趁机会把鲁公抓起来,逼着他割让土地。言语可以严厉,行动需要温暖。

  • 快手小店隐藏起来怎么找到(快手怎么隐藏快手小店商品)

    快手是北京快手科技有限公司旗下的产品。快手的前身,叫“GIF快手”,诞生于2011年3月,最初是一款用来制作、分享GIF图片的手机应用。2012年11月,快手从纯粹的工具应用转型为短视频社区,用于用户记录和分享生产、生活的平台。

  • 时实聚焦(聚焦于实)

    虚实之间辨得失,经济思想的实践成效在疫情条件下尤为显著。中国以实体经济为基底,一肩挑起“世界工厂”和“世界市场”,多年稳居全球制造业第一大国、货物贸易第一大国、第二大消费市场、对世界经济增长的贡献率年均超过30%。经济思想引领下,中国经济砥砺前行,成功经受疫情挑战的严酷考验。2020年,中国成为全球唯一实现正增长的主要经济体。疫情危机下的中国经济展现出巨大韧性,为陷入深度衰退的世界经济带来宝贵亮色。

  • 广州518国际博物馆日免费开放博物馆一览

    广州518国际博物馆日免费开放博物馆:广州正佳自然科学博物馆(限额)、广东省博物馆、黄埔军校旧址纪念馆、南越王宫博物馆、南汉二陵博物馆、广州十三行博物馆、广东革命历史博物馆等。

  • 煮豆浆的正确方法 煮豆浆的正确方法视频

    再向其中加入白糖即可。煮豆浆的正确方法就是避免假沸问题,别看豆浆做起来很简单,但是还是有很多窍门的,掌握这些就可以每天喝到又营养又新鲜的豆浆了。

  • 黄金兄弟的演员(黄金兄弟的简介)

    黄金兄弟的演员演员表:郑伊健饰狮王、陈小春饰火山、谢天华饰Bill、钱嘉乐饰淡定、林晓峰饰老鼠、张雅玫饰璐璐。《黄金兄弟》是由北京耀莱影视文化传媒有限公司出品的动作电影,由钱嘉乐执导,郑伊健、陈小春、谢天华、钱嘉乐、林晓峰主演。该片于2018年9月21日在中国上映。为了表示对Bill的声援,整个团队决定集体退出,于是他们提早退休,开始追求各自的追求。