gpt4 book ai didi

php - ST_WITHIN() 不返回任何结果

转载 作者:行者123 更新时间:2023-11-29 12:27:50 25 4
gpt4 key购买 nike

我正在解决的问题是查找特定经度/纬度范围内的所有客户,并以数组形式返回这些客户的列表。我现在非常熟悉半正矢公式和 MySQL 中边界的旧方法。然而,更新到 MySQL 5.6 版本后,我现在尝试使用函数 ST_WITHIN() 来产生相同的结果。

我正在遵循此处发布的教程:

http://rutweb.com/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/

到目前为止我的代码如下所示:

$lat = 40.2808380;
$lon = -111.6573890;
$distance = $row['RadialMiles']; // radius of bounding circle in miles

$rlon1 = $lon - $distance/abs(cos(deg2rad($lat))*69);
$rlon2 = $lon + $distance/abs(cos(deg2rad($lat))*69);
$rlat1 = $lat - ($distance/69);
$rlat2 = $lat + ($distance/69);

$query = "SELECT astext(Position), Firstname, Lastname FROM Account
WHERE systemAccountID = '$systemAccountID'
AND st_within(Position, envelope(linestring(point(:rlon1, :rlat1), point(:rlon2, :rlat2))))";

try {
$stmt = $con->prepare($query);
$stmt->execute(array('rlon1' => $rlon1,'rlon2' => $rlon2,'rlat1' => $rlat1,'rlat2' => $rlat2));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
throw $e;
}

print_r($result);

现在,当我知道它应该返回 2 个结果时,数组会生成一个空结果。

仅供引用,您可以假设我的表有 3 列:名字、姓氏和职位。 Position 是 point 类型,包含如下内容: POINT(38.8026085 -116.4193878)

我一整天都在研究这个问题,使用空间函数......对我来说很令人沮丧。任何帮助将不胜感激。

最佳答案

对于所有想要使用本教程了解 mysql 的 ST 空间函数的人,只需知道本教程以 (lon, lat) 格式而不是 (lat, lon) 格式列出点即可。这就是我无法获取返回值的原因。

关于php - ST_WITHIN() 不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com