精华内容
下载资源
问答
  • 经纬度计算距离经纬度计算距离工具, 挺不错的。经纬度计算距离经纬度计算距离工具, 挺不错的。
  • 根据经纬度计算距离

    2020-12-03 11:37:37
    //地球半径 private static double R= (double) 6370996.81;...//计算两点之间的距离 public static double getDistande( double lng1,double lat1,double lng2,double lat2){ double dst=R*M
    //地球半径
    private static double R= (double) 6370996.81;
    //π值
    private static double pi=(double) 3.1415926535898;
    
    //经度:log|  纬度: lat
    //计算两点之间的距离
    
    public static double getDistande(double lng1,double lat1,double  lng2,double lat2){
    		double dst=R*Math.acos(Math.cos(lat1*pi/180 )*Math.cos(lat2*pi/180)*Math.cos(lng1*pi/180 -lng2*pi/180)+
    				Math.sin(lat1*pi/180 )*Math.sin(lat2*pi/180));
    		return dst;
    	}
    
    public static void main(String[] args) {
    	double dst=	getDistande(116.323089, 39.990352, 116.310962, 39.990352);
    		System.out.println("计算的距离为:"+dst);
    	}
    
    展开全文
  • 最近有个需求是根据经纬度获取用户之间的距离,最初使用的是Redis中的GEO ,但是计算出来的距离和预期的偏差较大,所以寻求了另外的一种方式,通过geodesy来计算两个经纬度之间的距离,如果大家有谁使用了redis方式...

    前言

    最近有个需求是根据经纬度获取用户之间的距离,最初使用的是Redis中的GEO ,但是计算出来的距离和预期的偏差较大,所以寻求了另外的一种方式,通过geodesy来计算两个经纬度之间的距离,如果大家有谁使用了redis方式计算成功了欢迎评论给我,让我学习一下。

    首先引入依赖

    <dependency>
      <groupId>org.gavaghan</groupId>
      <artifactId>geodesy</artifactId>
      <version>1.1.3</version>
    </dependency>
    

    距离计算工具类

    import org.gavaghan.geodesy.Ellipsoid;
    import org.gavaghan.geodesy.GeodeticCalculator;
    import org.gavaghan.geodesy.GeodeticCurve;
    import org.gavaghan.geodesy.GlobalCoordinates;
    
    import java.math.BigDecimal;
    import java.math.RoundingMode;
    
    public class DistanceUtils {
        /**
         * 根据经纬度计算距离
         *
         * @param lon1 经度1
         * @param lat1 纬度1
         * @param lon2 经度2
         * @param lat2 纬度2
         * @return 距离 (km)
         */
        public static String getDistance(String lon1, String lat1, String lon2, String lat2) {
            GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(lat1), Double.parseDouble(lon1));
            GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(lat2), Double.parseDouble(lon2));
            GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.Sphere, source, target);
            double distance = geoCurve.getEllipsoidalDistance();
            BigDecimal distanceBig = new BigDecimal(distance).setScale(2, RoundingMode.UP);
            distanceBig = distanceBig.multiply(new BigDecimal("0.001")).setScale(2, RoundingMode.UP);
            return distanceBig.toString().concat("km");
        }
    
        public static void main(String[] args) {
            String lon1 = "119.6438888888889";
            String lat1 = "37.966944444444444";
            String lon2 = "119.63916666666667";
            String lat2 = "37.9675";
            System.out.println(getDistance(lon1, lat1, lon2, lat2));
    
        }
    
    }
    

    测试

    运行main方法

    结果

    0.42km
    
    展开全文
  • // 地球半径 private static final double EARTH_RADIUS = 6378.137;... * 计算两点之间距离 * * @return 返回米 */ public Double getDistance(double longitude1, double latitude1, double lo...
    
        //    地球半径
        private static final double EARTH_RADIUS = 6378.137;
        //第一种方法,返回多少米
         /**
         * 计算两点之间距离
         *
         * @return 返回米
         */
        public Double getDistance(double longitude1, double latitude1,
                                  double longitude2, double latitude2) {
            double lat1 = (Math.PI / 180) * latitude1;
            double lat2 = (Math.PI / 180) * latitude2;
    
            double lon1 = (Math.PI / 180) * longitude1;
            double lon2 = (Math.PI / 180) * longitude2;
    
            //两点间距离 km,如果想要米的话,结果*1000
            double d = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1)) * EARTH_RADIUS;
            if (d < 1)
                return (Double) (d * 1000);
            else
                return Double.valueOf(String.format("%.2f", d * 1000));
        }
    

    在这里插入图片描述

    //第二种计算返回千米
        private static final double EARTH_RADIUS = 6378.137;
      /**
         * 根据经纬度计算距离
         *
         * @param longitude1 start
         * @param latitude1  start
         * @param longitude2 end
         * @param latitude2  end
         * @return
         */
        public double getDistances(double longitude1, double latitude1,
                                   double longitude2, double latitude2) {
            double Lat1 = rad(latitude1);
            double Lat2 = rad(latitude2);
            double a = Lat1 - Lat2;
            double b = rad(longitude1) - rad(longitude2);
            double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
                    + Math.cos(Lat1) * Math.cos(Lat2)
                    * Math.pow(Math.sin(b / 2), 2)));
            s = s * EARTH_RADIUS;
            //有小数的情况;注意这里的10000d中的“d”
            s = Math.round(s * 10000d) / 10000d;
            s = s * 1000;//单位:米
    //        s = Math.round(s/10d) /100d   ;//单位:千米 保留两位小数
            s = Math.round(s / 100d) / 10d;//单位:千米 保留一位小数
            return s;
        }
    
        private static double rad(double d) {
            return d * Math.PI / 180.0;
        }
    

    在这里插入图片描述

    展开全文
  • 根据网上给出的代码,增加了批量功能。计算一批经纬度的平均经度与平均纬度,然后各经纬度与平均值之间的距离
  • (st_distance(point(lng,lat),point(116.3424590000,40.0497810000))*111195/1000 ) as juli FROM table ORDER BY juli ASC st_distance 计算的结果单位是度,需要乘111195(地球半径6371000*PI/180)是将值转化为...

    方式1:st_distance_sphere

    SELECT *,
    st_distance_sphere(point(lng,lat),point(116.3424590000,40.0497810000)) as juli 
    FROM table ORDER BY juli ASC 
    

    没用除以1000,所以是以米为单位

    方式2:st_distance

    SELECT *,
    (st_distance(point(lng,lat),point(116.3424590000,40.0497810000))*111195/1000 ) as juli 
    FROM table ORDER BY juli ASC 
    

    st_distance 计算的结果单位是度,需要乘111195(地球半径6371000*PI/180)是将值转化为米。

    方式3

    select *, 
    ROUND(6378.138*2*ASIN(SQRT(POW(SIN(({$lat}*PI()/180-lat*PI()/180)/2),2)+COS({$lat}*PI()/180)*COS(lat*PI()/180)*POW(SIN(({$lng}*PI()/180-lng*PI()/180)/2),2)))*1000) AS juli
     from table order by juli asc
    
    展开全文
  • 今天在使用PostgreSQL的PostGIS功能来实现根据经纬度计算距离和计算某一经纬度附近X米之内的地点,实现SQL语句如下: 计算两经纬度之间距离: select ST_Distance(ST_GeomFromEWKT('SRID=4326;POINT(lng1 lat1)'),ST...
  • 在实际开发场景中我们经常会碰到类似美团饿了么的根据距离推荐商家的业务,我们可以直接使用mysql自带的函数来计算距离并排序 比如我有商家表如下所示 CREATE TABLE `t_store` ( `id` int NOT NULL AUTO_...
  • 用Python根据经纬度计算距离

    千次阅读 2020-05-16 17:07:27
    在这个计算距离网站有,输入两点的经纬度可以给你算出来距离,下面也有给出计算公式: Haversine公式:计算球面距离 a=sin⁡2(Δφ/2)+cos⁡φ1⋅cos⁡φ2⋅sin⁡2(Δλ/2)c=2⋅atan2(a,1−a)d=R⋅c\begin{aligned}a...
  • js根据经纬度计算距离

    千次阅读 2019-02-25 10:28:14
    var EARTH_RADIUS = 6378137.0; //单位M var PI = Math.PI; function getRad(d){ return d*PI/180.0; } /** * caculate the great circle distance * @param...
  • 根据经纬度计算距离 /** * 根据两点间经纬度坐标,计算两点间距离,单位:千米 * @param lng1 * @param lat1 * @param lng2 * @param lat2 */ function getdistance($lng1,$lat1,$lng2,$lat2){ //...
  • MySQL根据经纬度计算距离并排序

    千次阅读 2019-08-14 18:28:28
    参数说明: Lat:数据库中的纬度字段名 Lon:数据库中的精度字段名 uLat:用户传递的纬度 uLon:用户传递的精度 结果单位: 千米(KM) 注意:如需要“米”只需要把最后的“/1000”删除即可 ...SELECT ,ROUND(6378....
  • //根据司机经纬度和订单收货地址经纬度计算 $list_0 = $model->alias('a')->whereOr([$map1, $map2])->join('user_address ad', 'a.user_address_id = ad.id') ->field(['a.*', 'ad.latitude as user_address_...
  • 根据经纬度计算距离 程序

    热门讨论 2011-07-08 08:53:53
    根据经纬度计算距离根据两点的经纬度计算两点的的距离,单位为(米)。
  • 经纬度计算距离公式: 其中: 1、Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度; 2、a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差; 3、6378.137为地球半径,单位为千米; 4、计算出来的...
  • /** * @author Barrett * @version 1.0 * @date 2020/8/31 17:45 * @description */ public class DistanceUtil { public static void main(String[] args) { System.out.println("经纬度距离计算结果:" + ...
  • 首先定义自己当前经纬度为null,用坐标拾取器找到自己目的地的经纬度 用distance方法接收 计算距离 请大神指导
  • 根据经纬度计算距离 使用方法 安装 npm i computeddistance js文件中引入 import {getDistance} from "computeddistance" // 单位 千米 console.log(getDistance(120.682866, 28.006224, 120.684937, 28.005762)) ...
  • mysql、java中根据经纬度计算距离

    千次阅读 多人点赞 2020-11-04 16:41:10
    xiudo-ota * @description: 经纬度计算工具类 * @author: zhang yi * @create: 2020-10-22 14:37 */ public class LonLatUtil { /** * 创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离 ...
  • 保存经纬度必须是geo_point类型 而且是纬度在前,经度在后 转载于:https://my.oschina.net/u/3371661/blog/3099737...
  • $lat=39.950273; $lng=116.550167; $sql=" SELECT *, ROUND( 6378.138*2*ASIN( SQRT( POW( SIN( ( ...
  • TP5 根据经纬度计算距离,排序+分页

    千次阅读 2020-06-28 16:22:29
    $leaderList=Db::name('mem_leader')->alias('ml') ->join('mem m', 'm.id = ml.mid') ->field("m.id, ml.truename, m.headimg, ml.lat, ml.lng, ml.address, ml.shop_name,(6378.138 * 2 * asin(sqrt...
  • mysql 根据经纬度计算距离

    千次阅读 2018-05-31 16:51:28
    距离计算公式(单位:米) ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN(  ( 37.8435830000 * PI() / 180 - lat * PI() / 180 ) / 2 ), 2 ) + COS(37.8435830000 * PI() / 180) * COS(lat * PI() / 180) * POW( SIN( ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • func getDistance(lat1:Double,lng1:Double,lat2:Double,lng2:Double) -&gt; Double { let EARTH_RADIUS:Double = 6378137.0 let radLat1:Double = self.radian(d: lat1) let ...
  • 根据两点的经纬度计算两点的长度,经纬度拆分为经度和纬度
  • sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,594
精华内容 5,837
关键字:

根据经纬度计算距离