首页 > 其他分享 >根据经纬度判断直线距离

根据经纬度判断直线距离

时间:2024-04-15 18:56:22浏览次数:32  
标签:shop 直线 经纬度 distance float 距离 deg2rad param latitude

/**
* 根据门店距离排序
* @param $data
* @param string $longitude 经度
* @param string $latitude 纬度
* @return array
*/
public function sortByDistance($longitude,$latitude)
{
// 根据距离排序
$list =Db::table('benben_store_shop')
->where('status',1)
->where('is_delete',0)
->order('id desc')
->select();

    $sortArr = [];
    foreach ($list as &$shop) {
        // 计算距离
        $distance = self::getDistance((float)$longitude, (float)$latitude, (float)$shop['longitude'], (float)$shop['latitude']);

        // 排序列
        $sortArr[] = $distance;
        $shop['distance'] = $distance;
        if ($distance >= 1000) {
            $distance = bcdiv((string)$distance, (string)1000, 2);
            $shop['distance_unit'] = $distance . 'km';
        } else
            $shop['distance_unit'] = $distance . 'm';
    }
    // 根据距离排序
    array_multisort($sortArr, SORT_ASC, $list);
    return json($list);;
}

/**
 * 获取两个坐标点的距离
 * @param float $ulon
 * @param float $ulat
 * @param float $slon
 * @param float $slat
 * @return float
 */
private static function getDistance(float $ulon, float $ulat, float $slon, float $slat)
{
    // 地球半径
    $R = 6378137;
    // 将角度转为弧度
    $radLat1 = deg2rad($ulat);
    $radLat2 = deg2rad($slat);
    $radLng1 = deg2rad($ulon);
    $radLng2 = deg2rad($slon);
    // 结果
    $s = acos(cos($radLat1) * cos($radLat2) * cos($radLng1 - $radLng2) + sin($radLat1) * sin($radLat2)) * $R;
    // 精度
    $s = round($s * 10000) / 10000;
    return round($s);
}

标签:shop,直线,经纬度,distance,float,距离,deg2rad,param,latitude
From: https://www.cnblogs.com/lakix/p/18136706

相关文章

  • atcgis反距离权重插值
    前面导入盟市界、旗县界shp,还有站点经纬度、PA等级什么的我就不说了站点经纬度数据内容: 主要想做的事情是插值PA_class的内容。第一步:自定义-扩展模块-勾选这两个第二步:自定义-工具条-geostatisticalanalyst 点击geostatisticalanalyst里的  地统计向导-反距离权......
  • Python基于Excel数据加以反距离加权空间插值并掩膜图层
      本文介绍基于Python中ArcPy模块,实现Excel数据读取并生成矢量图层,同时进行IDW插值与批量掩膜的方法。1任务需求  首先,我们来明确一下本文所需实现的需求。  现有一个记录有北京市部分PM2.5浓度监测站点在2019年05月18日00时至23时(其中不含19时)等23个逐小时PM2.5浓度数......
  • 最短编辑距离(线性dp)-java
    最短编辑问题也是一种非常经典的二维线性dp问题。 文章目录前言一、最短编辑距离问题二、算法思路1.dp[i][j]的情况 2.边界问题初始化3.状态转移方程三、代码如下1.代码如下2.读入数据3.代码运行结果总结前言最短编辑问题也是一种非常经典的二维线性dp问......
  • 近距离共享数字化实战经验,深挖数据价值赋能千行百业
    近期,思迈特软件积极投身于金融、制造、零售、医疗等多个行业的线下活动中,深度解析行业趋势,分享BI数字化创新解决方案,并与客户及合作伙伴进行深入交流。通过这些活动,不仅展示了思迈特软件在各领域的先进技术和成果,而且还借此机会近距离聆听市场反馈,洞悉行业动态,进一步提升服务品质,......
  • 混辗式混砂机 变速箱 旋耕灭茬机 污水处理 150T液压机 污水处理厂 饺子机 农村生活污
    UHT管式杀菌机说明书混辗式混砂机机械结构设计 论文CAD图纸开题报告毕业设计之专用机床图纸毕业设计推钢机液压图纸毕业设计3吨叉车3进3退变速箱(毕业设计)1G-160型旋耕灭茬机中央传动装置设计(共17张CAD加说明书与侧边传动装置配套污水处理课程设计图集150T液压机设计【10......
  • 简便快速的LoRa远距离无线温湿度传感器开发
    在当今数字化的世界里,物联网(IoT)技术正日益普及,其应用范围也在不断扩大。其中,LoRa远距离无线通信技术因其长距离传输、低功耗等特点,成为物联网应用中的重要一环。而结合FlexLua低代码技术,开发LoRa远距离无线温湿度传感器的硬件将更为简便快速。本文将介绍LoRa传感器的技术原理......
  • 【顶部距离计算】计算元素顶部与浏览器顶部的距离
    在开发中,我们常常需要计算某个元素顶部与浏览器视口顶部的距离,只需要一个方法即可计算解决:使用getBoundingClientRect()方法代码示例:接收一个参数element表示需要计算的元素//计算该元素的顶部距离浏览器的顶部距离constgetElementTop=element=>{constrect......
  • 洛谷题单指南-数学基础问题-P2789 直线交点数
    原题链接:https://www.luogu.com.cn/problem/P2789题意解读:n条直线可以形成不同交点数的方案数。解题思路:对于n=1、2、3、4的情况进行模拟:n=1时,有1种不同的交点数n=2时,有2种不同的交点数n=3时,有3种不同的交点数n=4时,有5种不同的交点数对n=4的情况,分情况讨......
  • 曼哈顿距离
    2024-04-0715:42Status:#zettelkastenTags:#algorithm/distance算法中的距离欧式距离曼哈顿距离d(A,B)=|x1-x2|+|y1-y2|切比雪夫距离d(A,B)=max(|x1-x2|,|y1-y2|)上面两种距离的相互转换曼哈顿坐标系是通过切比雪夫坐标系旋转 45度 后,再缩小......
  • 评价类模型——TOPSIS(优劣解距离法) 清风建模笔记
    清风建模TOPSIS说明:优劣解距离法就是求这个数据和最优解的距离、求这个数据和最劣的距离,做比基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别......