小编典典

MySQL中没有支持纬度/经度距离计算的地理空间扩展功能。 从MySQL

5.7开始。

您正在要求地球表面上的邻近圆。您在问题中提到flags表中的每一行都有纬度/经度值,并且在几个不同的UTM区域之一中还具有通用横向墨卡托(UTM)投影值。如果我正确记得我的英国军械测量局地图,则UTM可用于在这些地图上定位项目。

计算UTM中 同一区域 中两个点之间的距离很简单:笛卡尔距离就可以解决问题。但是,当点位于不同区域时,该计算将无法进行。

因此,对于您问题中所述的应用,必须使用大正圆距离,该距离是使用Haversine或其他合适的公式计算得出的。

MySQL加上地理空间扩展,支持一种将各种平面形状(点,折线,多边形等)表示为几何图元的方法。MySQL

5.6实现了一个未记录的距离函数st_distance(p1, p2)。但是,此函数返回笛卡尔距离。因此,它 完全不适合

基于纬度和经度的计算。在温带纬度下,纬度的纬向对向度几乎是经度(东西向)对向度的两倍,这是因为纬度线越靠近两极越靠近。

因此,圆形近似公式需要使用真实的纬度和经度。

在您的应用程序中,可以通过以下查询找到flags给定十英里内的所有点latpoint,longpoint:

SELECT id, coordinates, name, r,

units * DEGREES( ACOS(

COS(RADIANS(latpoint))

* COS(RADIANS(X(coordinates)))

* COS(RADIANS(longpoint) - RADIANS(Y(coordinates)))

+ SIN(RADIANS(latpoint))

* SIN(RADIANS(X(coordinates))))) AS distance

FROM flags

JOIN (

SELECT 42.81 AS latpoint, -70.81 AS longpoint,

10.0 AS r, 69.0 AS units

) AS p ON (1=1)

WHERE MbrContains(GeomFromText (

CONCAT('LINESTRING(',

latpoint-(r/units),' ',

longpoint-(r /(units* COS(RADIANS(latpoint)))),

',',

latpoint+(r/units) ,' ',

longpoint+(r /(units * COS(RADIANS(latpoint)))),

')')), coordinates)

如果要搜索20公里内的点,请更改查询的这一行

20.0 AS r, 69.0 AS units

例如,对此

20.0 AS r, 111.045 AS units

r是您要搜索的半径。 units是地球表面每个纬度的距离单位(英里,公里,弗隆,无论您想要什么)。

该查询使用边界纬度/经度以及MbrContains来排除绝对距起点太远的点,然后使用大圆距离公式生成其余点的距离。所有这些的解释可以在这里找到。如果您的表使用MyISAM访问方法并且具有空间索引,MbrContains则将利用该索引来快速搜索。

最后,上面的查询选择矩形内的所有点。要将其范围缩小到圆上的点,并按接近度对其进行排序,请像下面这样包装查询:

SELECT id, coordinates, name

FROM (

/* the query above, paste it in here */

) AS d

WHERE d.distance <= d.r

ORDER BY d.distance ASC

2020-05-17

mysql圆的范围_使用MySQL空间扩展在圆内选择点相关推荐

  1. mysql 中有什么命令_常用mysql命令大全

    常用的MySQL命令大全 连接MySQL格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命 ...

  2. mysql 编译cpu数量_合适MySQL的Xeon 55XX系列CPU编译参数

    适合mysql的Xeon 55XX系列CPU编译参数 本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixu ...

  3. mysql运维机制_《MySQL运维内参》节选 | InnoDB日志管理机制(一)

    引 子 InnoDB 存储引擎是支持事务ACID特性的,它是以二十多年前IBM的一篇著名文章<ARIES:A Transaction Recovery Method Supporting Fin ...

  4. mysql qps 索引查询_【MySQL】MySQL配置调优之 QPS/TPS/索引缓存命中率、innoDB索引缓存命中率、查询缓存命中率查看...

    运行中的mysql状态查看: 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / s ...

  5. mysql 编译cpu数量_适合MySQL的Xeon 55XX系列CPU编译参数

    Xeon 55xx是Intel最新的Nehalem架构处理器,为了充分挖掘它的处理能力,我们做了很多的测试来尝试一些GCC的编译参数,如何获得更高的MySQL性能. 首先看处理器支持哪些flags: ...

  6. mysql 5.6参数_初识 MySQL 5.6 新功能、参数

    摘要: MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不定时更新). 一:性能.功能上的提升. ① 在线DDL即 onli ...

  7. mysql数据库范围之内_是mysql范围

    MySQL数据类型-decimal详解 1.首先,对于精度比较高的东西,比如money,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,numeric和decimal ...

  8. mysql教学磁力链_使用MySQL存储以太坊事件

    在本文中,我将演示一种缓存以太坊事件的简单方法.我只想说,通常我们将事务用于链下操作,例如跟踪令牌的传输或检索特定事务的筛选列表,就像一个SQL查询一样. 假设我们想要创建一个跟踪令牌传输的网站,Et ...

  9. mysql数据库服务器重启_重启mysql数据库服务器

    Mysql错误代码大全 1016错误:文件无法打开,使用后台修复或者使用phpmyadmin进行修复. 1044错误:数据库用户权限不足,请联系空间商解决 1045错误:数据库服务器/数据库用户名/数 ...

最新文章

  1. NYOJ 128 前缀式计算
  2. 在类模板的声明和定义中把.h与.cpp分离
  3. Matlab clear, clc 和close函数
  4. mysql设计表月份_mysql,表设计
  5. 数学 —— 计算几何 —— 平面分割问题
  6. 泛型类 0104 c#
  7. node.js mongodb ReplSet
  8. 一台电脑有线连接路由器另一台无线连接_两个无线路由器怎么实现无线桥接【详细介绍】...
  9. 洛谷P2257 YY的GCD(莫比乌斯反演)
  10. 银河麒麟系统安装字体
  11. ISO19000-2000标准(转载)
  12. Win10 安装 Rational Rose
  13. 使用laravel快速开发网站流程(composer)
  14. php多进程兑换电影票,通过读写同一个文件锁来解决并发!
  15. Jib快速打包Docker镜像
  16. 荧光标记毛细管电泳应用---InDel标记筛选与验证
  17. node.js代码总结
  18. 市场调研报告-全球与中国教育互动白板市场现状及未来发展趋势
  19. IBM Rational software Architect 9.0安装包百度网盘
  20. 【精品】手绘插画怎么学?

热门文章

  1. c# jarray 快速提取_C# JArray与JObject 的使用
  2. 图片加载框架之Gilde详细讲解(一)
  3. R语言使用rnorm函数生成正太分布数据、使用plot函数可视化散点图
  4. ubuntu查看内存占用情况的简单方法
  5. 阿里云OSS图片上传
  6. 基于Matlab的遗传算法优化BP神经网络的算法实现(附算法介绍与代码详解)
  7. 洛谷 P1346 电车 dijkstra
  8. java调用C或者C++动态库dll
  9. Java对象数组排序
  10. 玩转python爬虫,从简易到复杂