确定一个坐标是否在另一个坐标的半径内

Alo*_*mir 18 sql latitude-longitude coordinates

假设我有一个包含坐标的行表.

仅拉动另一个坐标半径的坐标行的最佳方法是什么?

为了简化我的问题,我给出了以下示例:

Table like:
Columns: Latitude, Longitude.
Row1:    23.44444  24.55555
Row2:    32.44444  28.22222
Row3:    35.11111  32.12345
Run Code Online (Sandbox Code Playgroud)

在SQL语句中,如何获取Row3半径中的坐标行?

jbo*_*chi 31

这篇文章展示了如何在SQL Server中执行此操作.

以下是在MySQL中如何做到这一点:

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + 
         COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * 
         PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance 
FROM members 
HAVING distance<='10' ORDER BY distance ASC
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是旧的,但1.1515告诉我们这是在几英里. (4认同)
  • 我知道这里有一个老话题,但想要为后代添加,如果使用SQL Server 2008,有一个内置的`GEOGRAPHY`空间数据类型,可以很容易地计算两个坐标之间的距离(例如`STDistance`方法) .我发现这更好,因为它也考虑了地球的曲率/椭圆形状.(在这个答案的顶部链接的文章似乎假设一个平面投影.)如果距离足够短,但可能跨越更远的距离可能不太明显.有关简明示例,请参见http://stackoverflow.com/a/501224/110871. (2认同)