4
通过MySQL获取半径拉链时出现问题
我有一个邮政编码表,其中包括每个邮政编码的中心纬度,经度。我用它来获取从任意点到给定英里半径内的邮政编码列表。 在我看来,仅仅是因为拉链的中心点不在给定的半径内,并不意味着拉链本身不在半径内。 我用自己的超高级艺术技巧来说明这一点: 绿色条纹斑点表示邮政编码A,B和C。 红色污点是每个邮政编码的地理中心 紫红色的点是目标位置,并且.. 块状蓝色圆圈距离目标位置1英里半径 如果我查询距离粉红色污迹1英里半径内的所有邮政编码,则将返回邮政编码B和C,因为邮政编码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 …