当前位置: 首页 > news >正文

湖南建设人力资源官方网站扬州网站优化

湖南建设人力资源官方网站,扬州网站优化,郑州网络推广软件,舟山建设银行纪念币预约网站我们在实际开发中会获取对应的经纬度#xff0c;可以使用ES大数据搜索引擎进行计算对应区域的数据#xff0c;那我们在如何根据两个经纬度获取对应的球面距离#xff0c;就是在地球上从一个地点到另一个地点的直线距离 工具类如下: public class GeoUtils {// 地球半径可以使用ES大数据搜索引擎进行计算对应区域的数据那我们在如何根据两个经纬度获取对应的球面距离就是在地球上从一个地点到另一个地点的直线距离 工具类如下: public class GeoUtils {// 地球半径单位米private static final double EARTH_RADIUS 6371000.0;/*** 使用Haversine公式计算两点之间的球面距离** param lat1 latitude 纬度* param lon1 longitude 经度* param lat2 纬度* param lon2 经度* return 球面距离*/public static double haversineDistance(double lat1, double lon1, double lat2, double lon2) {double dLat Math.toRadians(lat2 - lat1);double dLon Math.toRadians(lon2 - lon1);double a Math.sin(dLat / 2) * Math.sin(dLat / 2) Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *Math.sin(dLon / 2) * Math.sin(dLon / 2);double c 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));return EARTH_RADIUS * c;}/*** 使用Vincenty公式计算两点之间的球面距离** param lat1 latitude 纬度* param lon1 longitude 经度* param lat2 纬度* param lon2 经度* return 球面距离*/public static double vincentyDistance(double lat1, double lon1, double lat2, double lon2) {double a EARTH_RADIUS;double f 1.0 / 298.257223563; // WGS-84 ellipsoid parametersdouble b a * (1.0 - f);double lat1Rad Math.toRadians(lat1);double lon1Rad Math.toRadians(lon1);double lat2Rad Math.toRadians(lat2);double lon2Rad Math.toRadians(lon2);double L lon2Rad - lon1Rad;double U1 Math.atan((1.0 - f) * Math.tan(lat1Rad));double U2 Math.atan((1.0 - f) * Math.tan(lat2Rad));double sinU1 Math.sin(U1);double cosU1 Math.cos(U1);double sinU2 Math.sin(U2);double cosU2 Math.cos(U2);double lambda L;double lambdaP;int iterLimit 100;double cosSigma, sinSigma, sigma, sinAlpha, cosSqAlpha, cos2SigmaM;do {double sinLambda Math.sin(lambda);double cosLambda Math.cos(lambda);sinSigma Math.sqrt((cosU2 * sinLambda) * (cosU2 * sinLambda) (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) *(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));if (sinSigma 0) {return 0.0;}cosSigma sinU1 * sinU2 cosU1 * cosU2 * cosLambda;sigma Math.atan2(sinSigma, cosSigma);sinAlpha cosU1 * cosU2 * sinLambda / sinSigma;cosSqAlpha 1.0 - sinAlpha * sinAlpha;cos2SigmaM cosSigma - 2.0 * sinU1 * sinU2 / cosSqAlpha;if (Double.isNaN(cos2SigmaM)) {cos2SigmaM 0.0;}double C f / 16.0 * cosSqAlpha * (4.0 f * (4.0 - 3.0 * cosSqAlpha));lambdaP lambda;lambda L (1.0 - C) * f * sinAlpha *(sigma C * sinSigma * (cos2SigmaM C * cosSigma * (-1.0 2.0 * cos2SigmaM * cos2SigmaM)));} while (Math.abs(lambda - lambdaP) 1e-12 --iterLimit 0);if (iterLimit 0) {return Double.NaN; // Formula failed to converge}double uSq cosSqAlpha * (a * a - b * b) / (b * b);double A 1 uSq / 16384.0 * (4096.0 uSq * (-768 uSq * (320 - 175 * uSq)));double B uSq / 1024.0 * (256.0 uSq * (-128.0 uSq * (74.0 - 47 * uSq)));double deltaSigma B * sinSigma * (cos2SigmaM B / 4.0 * (cosSigma * (-1.0 2.0 * cos2SigmaM * cos2SigmaM) -B / 6.0 * cos2SigmaM * (-3.0 4.0 * sinSigma * sinSigma) *(-3.0 4.0 * cos2SigmaM * cos2SigmaM)));return b * A * (sigma - deltaSigma);}/*** 使用球面三角法计算两点之间的球面距离** param lat1 latitude 纬度* param lon1 longitude 经度* param lat2 纬度* param lon2 经度* return 球面距离*/public static double sphericalLawOfCosinesDistance(double lat1, double lon1, double lat2, double lon2) {double dLon Math.toRadians(lon2 - lon1);lat1 Math.toRadians(lat1);lat2 Math.toRadians(lat2);return Math.acos(Math.sin(lat1) * Math.sin(lat2) Math.cos(lat1) * Math.cos(lat2) * Math.cos(dLon)) * EARTH_RADIUS;}/*** 将米转换成公里** param meters* return*/public static double metersToKilometers(double meters) {return meters / 1000.0;}}测试从纽约到伦敦的距离 public static void main(String[] args) {double newYorkLat 40.7128; // 纽约的纬度double newYorkLon -74.0060; // 纽约的经度double londonLat 51.5074; // 伦敦的纬度double londonLon -0.1278; // 伦敦的经度double distance1 GeoUtils.haversineDistance(newYorkLat, newYorkLon, londonLat, londonLon);System.out.println(从纽约到伦敦的球面距离 distance1 米 , metersToKilometers(distance1) 公里);double distance2 GeoUtils.vincentyDistance(newYorkLat, newYorkLon, londonLat, londonLon);System.out.println(从纽约到伦敦的球面距离 distance2 米 , metersToKilometers(distance2) 公里);double distance3 GeoUtils.sphericalLawOfCosinesDistance(newYorkLat, newYorkLon, londonLat, londonLon);System.out.println(从纽约到伦敦的球面距离 distance3 米 , metersToKilometers(distance3) 公里);} 这样子就可以求出地球上两点之间的距离了
http://www.hkea.cn/news/14512998/

相关文章:

  • 开拓网站建设素材网站的下载服务器怎么做
  • 兴宁网站设计如何做电子商城网站
  • 网站备案无前置审批文件怎么利用360域名做网站
  • 教学成果奖网站建设沈阳网站优化培训
  • 网站从哪些方面来做室内设计师网络接单
  • 用股票代码做网站的网站正在建设中色天使
  • 网站设配色金蝶财务软件一般多少钱
  • 做社交网站网站需要实名认证
  • 个人社团网站怎么做徐州百姓网招聘信息网
  • 杭州网站建设案例wordpress做微信支付
  • 怎么做网站把图片发到网上市场监督管理局投诉电话
  • 微商推广网站怎么做内蒙古呼和浩特市网络公司
  • 营销型网站结构图注册造价工程师
  • 做企业网站设计方案分析网站设计对网站搜索引擎友好性的影响
  • 公司网站要备案吗wordpress可以做网店吗
  • 漳州 做网站网站整合营销等服务
  • 自己电脑怎样做网站互联网小程序开发
  • 怎样做影视网站社群电商的运营模式
  • 安徽省建设厅人员名单官方网站陕西营销型网站建设
  • 英文网站建设之后怎么推做建网站的公司
  • 电子商务网站后台微信商城源码
  • 建设部网站注册查询搜索引擎技巧
  • 太仓网站制作北京做软件最好的公司
  • 网站用户 分析最火的网页游戏排行榜
  • 减肥瘦身网站模板源码响水网站建设服务商
  • 南京网站建设 小程序王烨鑫
  • 做设计太依赖网站素材梧州网站优化公司
  • 电子商务网站建设实训报告免费网上商城模板
  • 成都电商平台网站设计网站项目计划书
  • 网监备案网站长春百度搜索排名优化