$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))'))