mysql - 选择彼此距离较近的记录

2023-11-30

我有一个包含位置的 mysql 表,例如:

ID  latitude  longitude  value
1   11.11111  22.22222   1
2   33.33333  44.44444   2
3   11.11112  22.22223   5

我想选择彼此靠近的记录(在上面的示例中,第 1 行和第 3 行),以便我可以将它们作为一条记录插入到新表中。说近,就说100米。我希望新表是:

ID  latitude  longitude  value   
1   11.11111  22.22222   3
2   33.33333  44.44444   2

正如您所看到的,我想保留第一条记录的坐标,并在“值”列中插入两条记录的平均值。

我用于计算距离的公式如下:

R*SQRT(((lon2*c-lon1*c)*cos(0.5*(lat2*c+lat1*c)))^2 + (lat2*c-lat1*c)^2)

where

[lat1, lon1] the coordinates of the first location,
[lat2, lon2] the coordinates of the second location,
[R] the average radius of Earth in meters,
[c] a number to convert degrees to radians.

该公式适用于短距离。

所以,我的问题不是纬度、经度到距离的转换,而是我的 SQL。我知道如何选择与特定经纬度坐标最大距离为 100 米的记录,但我不知道如何选择彼此之间最大距离的记录。

我做到这一点的一种方法(并且有效)是在 PHP 中逐个循环记录,并为每一个记录进行 SQL 查询以选择附近的记录。但是这样,我在循环中执行 SQL 查询,据我所知,这是一个不好的做法,特别是如果记录有数千个。

我希望我说清楚了。如果没有,我很乐意为您提供更多信息。

谢谢你的帮助。


下面是获取范围内所有位置的 SQL:

SELECT 
    ID,
    latitude,
    longitude,
    (6371 * acos (cos( radians(origin.latitude)) * cos( radians( destination.latitude )) 
        * cos( radians(destination.longitude) - radians(origin.longitude)) + sin(radians(origin.latitude)) 
        * sin( radians(destination.latitude)))) AS distance
FROM myTable as destination, myTable as origin
WHERE destination.id = myId
HAVING distance < 100 --some value in kilometers

6371 是公里常数。 3959 是英里常数。

本主题有更多答案:MySQL 大圆距离(半正矢公式)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql - 选择彼此距离较近的记录 的相关文章

  • 如何从脚本中创建新的 Joomla 用户帐户?

    我们正在为 Joomla 创建一个 XML API 允许合作伙伴网站在我们的网站上为其用户创建新帐户 我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求 但现在我们需要实际创建新帐户 我们最初只想进行 CURL 调用来提交注册
  • Laravel 从 API 响应中删除标头值

    Laravel 应用程序版本 5 6 我希望从 API 响应中显示的 Cache Control 标头中删除 private 值 我有一个中间件添加 无缓存 和 无存储 值 response next request response gt
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 切换到 mysqli 是个好主意吗?

    我正在考虑为我的所有 php 项目切换到 mysqli 我的代码编写方式 我运行非常简单的网站并构建了自己的基本框架 我在所有网站上使用该框架 我在修改函数和类时不应该遇到太多问题 然而 我只听说过关于准备好的语句的积极的事情 除了一些关于
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • “修改列”与“更改列”

    我知道 我们不能使用重命名列MODIFY COLUMN语法 但我们可以使用CHANGE COLUMN syntax 我的问题是 主要用途是什么modify syntax 例如 ALATER TABLE tablename CHANGE co
  • 如何在CentOS 5.3上安装php-mongodb?

    我已经在我的 VPS 上安装了 mongoDB 效果很好 现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作 我跟着蒙戈安装 http www php net manual en mongo installation
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • Laravel 登录后重定向回来

    登录后如何重定向返回页面 在 Laravel 5 2 中 认证控制器 protected redirectTo 重定向用户
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • 使(文本到图像)图像具有一定的宽度但无限的长度?

    我有下面的代码 可以用大量文本生成图像 我希望该图像的宽度为 700 像素 我还希望它保留字符串所具有的段落结构 该字符串来自 MySQL 数据库 我怎样才能实现这一点 font 2 width imagefontwidth font st
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia

随机推荐

  • 如何在移动网络中从 navigator.getUserMedia() 获取对象?

    尝试获取 JavaScript 引用 承诺媒体流从返回媒体设备在 HTML5 和 WebRTC 中 这里的 JavaScript 是在 iOS 和 Android 上的 Chrome 和 Safari 上运行的 navigator medi
  • 为什么静态变量需要显式定义?

    在课堂里 class foo public static int bar declaration of static data member int foo bar 0 definition of data member 我们必须显式定义静
  • Android - “SQLite.SQLiteConnection”的类型初始值设定项引发异常。 ---> System.DllNotFoundException: e_sqlite3

    在我们的 Xamarin Android 项目中 我们正在尝试从 sqlite net 切换到官方 sqlite net pcl 包 但是 在创建新的 SQLiteConnection 后进行此切换后 我收到以下异常 SQLite SQLi
  • 拦截 WM_CLOSE 进行清理操作

    我有一个外部应用程序调用我的应用程序 并应该在工作完成后结束它 该外部应用程序的日志声称它使用WM CLOSE在我的应用程序上 我怎样才能拦截WM CLOSE我的应用程序中的消息要执行一些清理操作吗 我试过at exit 并将其包装在一个类
  • Meteor Spacebars {{#if someCondition}} 在页面刷新时简要显示数据

    我尝试了几种不同的方法 它们的行为方式相同 请参阅下面的代码 我使用空格键 if 条件 并尝试使用帮助程序 来检查用户是否已登录 然后显示登录 注册链接 如果未登录 如果是 请将其隐藏 我注意到 在初始页面加载时 如果他们从不同的站点导航回
  • 两个其他日期之间的日期,不考虑年份

    我正在寻找类似的人here正在寻找 只有我想使用MySQL 下表是您在我的数据库中找到的内容 简化 id name first last 1 John 1020 0814 2 Ram 0827 0420 3 Jack 0506 0120 4
  • 为什么我无法更改工作表参考?

    首先 如果这个问题太明显 我提前道歉 我只是几年没有使用 VBA 和 Excel 而且在其他地方找不到我的问题的答案 我希望我的 VBA 程序从工作表 ReportData 中获取数据 并使用它在新工作表 Report 上创建一些数据透视表
  • PHP 和 shell_exec

    我有一个 PHP 网站 我想在后台执行一个很长的 Python 脚本 300 MB 内存和 100 秒 流程通信是通过数据库完成的 当Python脚本完成其工作时 它会更新数据库中的字段 然后网站根据Python脚本的结果呈现一些图形 我可
  • 如何在Java中创建Kafka ZKStringSerializer?

    在搜索如何通过 API 创建 Kafka 主题时 我在 Scala 中找到了这个示例 import kafka admin AdminUtils import kafka utils ZKStringSerializer import or
  • 使用 HTTPS 本地主机 SSL 证书保护 WebSocket (WSS)?

    我对整个 WebSocket 和 SSL 证书有点陌生 所以我在Android端创建了自己的WebSocket服务器 网站是客户端 我能够让它与常规 WebSocket 一起工作 ws 但 WebSocket 不安全 wss 因为它需要 S
  • Xcode、构建和 dylib

    我查看了一些相关问题 似乎无法为自己找到解决方案 基本上我在 Xcode 项目中使用 libmp3lame dylib lame 的安装过程生成了 dylib 并将其放置在 usr local lib 中 为了让 Xcode 构建并运行该项
  • 使用nzload加载特殊字符

    我在 Oracle 表数据中扩展了 ascii 字符 我可以使用带有 转义字符前缀的 sqlplus 将其提取到文件中 我想使用 nzload 将完全相同的数据加载到 netezza 表中 nzload 在遇到此 char seq c2bf
  • Android - Ajax 风格自动检查用户名可用性

    我正在构建一个 Android 应用程序 其中要求用户选择昵称 现在 两个用户不能有相同的昵称 我在 net 上看到过表单 当用户使用 Ajax 调用键入或按 Tab 时 我们可以验证特定用户名的可用性 我的问题是 Android 上有类似
  • 如何将十六进制数据转换为日期时间

    我有一个像这样的十六进制字符串 529CD17C 这对应于一个日期时间 12 2 2013 06 29 16 PM 即以 MM dd yyyy hh mm ss AM PM 表示 我该怎么办这在c 编码中 您正在使用 UNIX 时间戳 首先
  • 没有这样的文件:jenkins 中出现“pom.xml”错误

    我有一个存储库Bitbucket 在该存储库中我有一个名为Demo这是一个maven项目 我正在尝试部署Demo with Jenkins 我正在遵循的步骤 在 Jenkins 中创建了一个作业 项目 配置 这是各个作业的配置 Projec
  • 下载属性在 Firefox 中不起作用,但在 chrome 中起作用

    这个小提琴在 Firefox 中不起作用 但在 Chrome 中工作 我尝试过使用这个 p Click on the w3schools logo to download the image p p a href http www w3sc
  • 组合框 onkeypress 事件上的自动完成会占用 Enter 键

    我有一个组合框AutoCompleteMode suggest并像这样处理 KeyPress 事件 private void searchBox KeyPress object sender KeyPressEventArgs e if e
  • 如何使用 JACOB 创建对象

    我成功加载了两个dll System load C Program Files x86 EXAMPLE Client Bin EXAMPLE Client SDK dll System load C Program Files x86 EX
  • 带有按钮和文本的 Gridview

    我是 android 新手 我想请教如何实现这样的设计 有 4 个按钮 图标和文本 它在标题部分有图标 先感谢您 首先 决定你应该使用哪种布局 我认为你可以使用2 2的Gridlayout 或者你可以只使用线性布局并设置权重 第二 在gri
  • mysql - 选择彼此距离较近的记录

    我有一个包含位置的 mysql 表 例如 ID latitude longitude value 1 11 11111 22 22222 1 2 33 33333 44 44444 2 3 11 11112 22 22223 5 我想选择彼