私信  •  关注

Jacco

Jacco 最近创建的主题
Jacco 最近回复了
9 年前
回复了 Jacco 创建的主题 » 查找包含给定坐标的圆的mysql查询

$greatCircleDistance = acos( cos($latitude0) * cos($latitude1) * cos($longitude0 - $longitude1) + sin($latitude0) * sin($latitude1));

以弧度表示经纬度。

所以

SELECT 
  acos( 
      cos(radians( $latitude0 ))
    * cos(radians( $latitude1 ))
    * cos(radians( $longitude0 ) - radians( $longitude1 ))
    + sin(radians( $latitude0 )) 
    * sin(radians( $latitude1 ))
  ) AS greatCircleDistance 
 FROM yourTable;

是您的SQL查询

要得到以公里或英里为单位的结果,请将结果乘以地球的平均半径( 3959 英里, 6371 公里或 3440 海里)

您在示例中计算的是一个边界框。 如果你把你的坐标数据放在 spatial enabled MySQL column ,你可以使用 MySQL's build in functionality 查询数据。

SELECT 
  id
FROM spatialEnabledTable
WHERE 
  MBRWithin(ogc_point, GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'))