PHP/Mysql x y坐标之间的半径搜索
PHP/Mysql Radius search between x y coordinates
我得到了一个人的(荷兰语)x y 坐标和来自数据库中不同位置的 x y 坐标,例如:
x = 158322
y = 460782
现在我想找到这个人所在位置周围15公里半径范围内的所有位置。
找到它的最佳方法是什么?您能举个例子吗?
根据您拥有的数据量,您需要计算固定点与数据集中每个点之间的距离。如果数据集很大,可以先获取15km边界框内的所有点,然后计算匹配点的距离。
要计算 php 中的距离,您可以这样做:
$distance = sqrt(($x-$x2)^2+($y-$y2)^2 // = pythagoras a^2+b^2=c^2
当然这是假设地球是平的。如果您需要补偿地球的曲率,请 google 搜索 "calculate distance between two coordinates"。
如果我没记错的话,你提到的 "dutch coordinates" 是以米为单位的,所以得到一个 15km 的边界框应该像 x +/- 15000
和 y +/- 15000
一样简单
顺便说一句,mysql 有一个 sqrt 函数,所以从技术上讲,您可以在 mysql 中完成所有这些操作。
此外,如果您需要将 Rijksdriehoekscoördinaten 转换为 GPS 坐标的代码,请告诉我 ;)
我得到了一个人的(荷兰语)x y 坐标和来自数据库中不同位置的 x y 坐标,例如:
x = 158322
y = 460782
现在我想找到这个人所在位置周围15公里半径范围内的所有位置。 找到它的最佳方法是什么?您能举个例子吗?
根据您拥有的数据量,您需要计算固定点与数据集中每个点之间的距离。如果数据集很大,可以先获取15km边界框内的所有点,然后计算匹配点的距离。
要计算 php 中的距离,您可以这样做:
$distance = sqrt(($x-$x2)^2+($y-$y2)^2 // = pythagoras a^2+b^2=c^2
当然这是假设地球是平的。如果您需要补偿地球的曲率,请 google 搜索 "calculate distance between two coordinates"。
如果我没记错的话,你提到的 "dutch coordinates" 是以米为单位的,所以得到一个 15km 的边界框应该像 x +/- 15000
和 y +/- 15000
顺便说一句,mysql 有一个 sqrt 函数,所以从技术上讲,您可以在 mysql 中完成所有这些操作。
此外,如果您需要将 Rijksdriehoekscoördinaten 转换为 GPS 坐标的代码,请告诉我 ;)