如何在mysql中从数据库中获取最近的坐标?

问题描述 投票:1回答:1

我有一个id,纬度(纬度),经度(lng),海拔高度(alt)的表格。我有一些坐标,我想找到DB中最近的条目。我用过这个但还没有正常工作:

SELECT lat,ABS(lat - TestCordLat), lng, ABS(lng - TestCordLng), alt AS distance
FROM dhm200
ORDER BY distance
LIMIT 6

我有一张桌子,上面有6个最近的点,向我显示纬度,经度和海拔高度。

mysql distance
1个回答
0
投票

您将需要使用Haversine公式来计算考虑纬度和经度的距离:

dlon = lon2 - lon1 
 dlat = lat2 - lat1 
 a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2 
 c = 2 * atan2( sqrt(a), sqrt(1-a) ) 
 distance = R * c (where R is the radius of the Earth)

然而,海拔高度增加了问题的难度。如果在A点和B点之间,不同高度的道路包含很多高海拔差异,那么假设海拔高度线在两点之间的导数不变可能会产生误导,而不考虑这一点可能会产生误导。比较中国的一个点与印度的一个点之间的距离,其中Himalaja介于太平洋表面两点之间的距离。一种可能性是将R变为每次比较的高度平均值,但如果距离较远,这可能会产生误导,如前所述。

© www.soinside.com 2019 - 2024. All rights reserved.