小编I w*_*ce.的帖子

通过 MySQL 在半径中获取 zip 的问题

我有一张邮政编码表,其中包括每个邮政编码的中心纬度和 lng。我使用它从任意点获取给定英里半径内的邮政编码列表。

我突然想到,仅仅因为 zip 的中心点不在给定的半径内,并不意味着 zip 本身不在半径内。

我用我超高级的艺术技巧在这里说明了这一点:

在此处输入图片说明

  • 绿色条纹斑点代表邮政编码 A、B 和 C。

  • 红色污点是每个邮政编码的地理中心

  • 紫红色圆点是目标位置,并且..

  • 块状蓝色圆圈距离目标位置 1 英里

如果我对粉红色污迹 1 英里半径内的所有邮政编码运行查询,则仅返回邮政编码 B 和 C,因为 zip A 的中心点不在 1 英里半径内,即使粉红色污迹本身显然在邮政编码 A 中。

SELECT *,
        p.distance_unit
                 * DEGREES(ACOS(COS(RADIANS(p.latpoint))
                 * COS(RADIANS(z.y))
                 * COS(RADIANS(p.longpoint) - RADIANS(z.x))
                 + SIN(RADIANS(p.latpoint))
                 * SIN(RADIANS(z.y)))) AS dist
  FROM standard_zip AS z
  JOIN (   /* these are the query parameters */
        SELECT  $lat  AS latpoint,  $lng AS longpoint,
                $miles AS radius,      69 AS distance_unit
    ) AS p ON 1=1
  WHERE z.y …
Run Code Online (Sandbox Code Playgroud)

mysql spatial geometry

9
推荐指数
2
解决办法
761
查看次数

标签 统计

geometry ×1

mysql ×1

spatial ×1