sql之如何在 SQL Server 数据库表中使用 X 和 Y 网格坐标选择一圈数据
这很有趣,很抱歉缺少信息,但我不知道如何处理这个问题。
我有一个 SQL Server 数据库,它存储与邮政区号相对应的 map 坐标。例如,邮政区号 BD6 沿 X 轴位于 414300m,沿 Y 轴位于 429800m。这些值在一个表中,在三个单独的列中,例如:
PostAreaCode AlongXAxis AlongYAxis
BD6 414300 429800
我需要选择特定邮政区号 161 公里半径范围内的所有邮政区号。比如BD6坐标在圆心,圆边161km。
我可以使用 BETWEEN 关键字在 BD6 周围创建一个正方形并执行类似...
SELECT PostAreaCode
FROM PostAreaCodeTable
WHERE AlongXAxis IS BETWEEN (414300-161000) AND (414300+161000)
AND AlongYAxis IS BETWEEN (429800-161000) AND (429800+161000)
...但是我不知道如何把它变成一个圆圈。我认为自己非常擅长 SQL,但这完全超出了我的能力范围。任何帮助深表感谢!请尽可能多地解释数学答案,因为数学不是我的强项。谢谢!
请您参考如下方法:
您可以使用公式 (x-a)^2 + (y-b)^2 <= r^2
作为你的 where 子句。 a
和 b
是中心的坐标,x
和 y
是您要检查的点的坐标,r
是半径。 所以,在你的情况下,a
是中心的 X 坐标,b
是中心的 Y 坐标,而 x
和 y
是其他点的X和Y轴坐标的列名。
SQL 将是:
SELECT PostAreaCode
FROM PostAreaCodeTable
WHERE ((AlongXAxis - 414300)^2 + (AlongYAxis - 429800)^2) <= (161000)^2
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。